Manager类接口说明

该接口类包含了一系列的函数,应用可以通过这些函数操作core完成视频的拍传、离线拍摄、断点续传等工作。

与云平台建立连接 此接口用于连接直播云,此接口非阻塞模式,调用后立即返回,连接是否成功通过回调通知。 该接口是对initNet 的更新和优化,连接直播云时请使用该api。注意手机设备时间需是网络获取标准时间,否则会连接失败。

  • 原型 public static boolean connectCloud(String http_api_url, int timeout, String service_code, int buff_size)
  • 参数
    • http_api_url 连接直播云固定使用这个url http://c.zhiboyun.com/api/20140928/get_vs, 私有云的连接地址参考平台配置。
    • timeout 参考initNet接口 timeout参数描述
    • service_code 参考initNet接口 service_code参数描述
    • buff_size 参考initNet接口 buff_size参数描述
  • 返回
    • true代表连接成功,false代表连接失败。

直连VS,此接口为非阻塞模式,调用后立即返回,连接是否成功通过回调通知。请注意此接口接受的是VS的地址和端口,该接口是对initNet的补充。

  • 原型 public static boolean connectVS(String vs_host, int vs_port, int timeout, String service_code, int buff_size))
  • 参数
    • vs_host VS服务器地址
    • vs_port VS服务器端口
    • timeout 参考initNet接口 timeout参数描述
    • service_code 参考initNet接口 service_code参数描述
    • buff_size 参考initNet接口 buff_size参数描述
  • 返回
    • true代表连接成功,false代表连接失败。

释放SDK使用的资源, 此方法必须放在通过init传入的Activity类的onDestroy方法中,否则在应用直接退出时可能会有资源泄漏,或未关闭摄像头导致下次启动后预览或录制失败。

  • 原型 public static void deInit()
  • 参数
  • 返回

客户端主动与服务器断开连接。

  • 原型 public static boolean disconnect()
  • 参数
  • 返回
    • true, 断开连接一般总是成功。

设置认证模式 如果不设置 默认为挑战认证模式。

  • 原型 public static boolean forceAuthenMode(int mode)
  • 参数
    • mode Manager.HANDSHAKE_CLEAR_PASSWORD为明文认证模式,Manager.HANDSHAKE_CHALLENGE为挑战认证模式
  • 返回
    • true设置成功,false设置失败。

强制竖屏拍摄模式,该接口配合updateOrientation接口设置竖屏拍摄时使用。

  • 原型 public static boolean forcePortrait(boolean isPortrait)
  • 参数
    • isPortrait true为强制竖屏,false反之。
  • 返回
    • true设置成功,false设置失败。

获取已发送数据字节数。

  • 原型 public static long getBytesSent()
  • 参数
  • 返回
    • 已发送数据字节数,458版本将返回值类型改为long。

获取当前本地缓存的数据字节数。

  • 原型 public static int getCacheRemaining()
  • 参数
  • 返回
    • 当前本地缓存的数据字节数。

获取当前摄像头实例。

  • 原型 public static Camera getCamera()
  • 参数
  • 返回
    • 当前摄像头实例。

获取当前摄像头ID。

  • 原型 public static CameraID getCurrentCameraId()
  • 参数
  • 返回
    • 当前摄像头ID。

获取当前帧率。

  • 原型 public static int getCurrentFPS()
  • 参数
  • 返回
    • 当前帧率。

获取当前视频分辨率。

  • 原型 public static Resolution getCurrentVideoResolution()
  • 参数
  • 返回
    • 当前视频分辨率。

获取core当前使用的回调接口实例。

  • 原型 public static AHandler getHandler()
  • 参数
  • 返回
    • core当前使用的回调接口实例。

获取本地视频文件路径名。

  • 原型 public static String getLocalVideoDir()
  • 参数
  • 返回

获取摄像头所支持的最大zoom级别。

  • 原型 public static int getMaxZoomLevel()
  • 参数
  • 返回
    • 摄像头所支持的最大zoom级别。

获取已录制毫秒数。

  • 原型 public static long getRecordDuration()
  • 参数
  • 返回
    • 已录制毫秒数。

获取录制状态。

  • 原型 public static RecordStatus getRecordStatus()
  • 参数
  • 返回
    • 录制状态。

获取SDK版本号。

  • 原型 public static int getSdkVersion()
  • 参数
  • 返回
    • SDK版本号。

获取摄像头支持的帧率列表。

  • 原型 public static List<int[]> getSupportedFps()
  • 参数
  • 返回
    • 摄像头支持的帧率列表。

注意该API需在getSupportedVideoResolutionsstartPreview之后调用才能获得正确的值,否则得到的为null。

获取摄像头支持的拍照分辨率列表。

  • 原型 public static List<Camera.Size> getSupportedPictureSizes()
  • 参数
  • 返回
    • 摄像头支持的拍照分辨率列表。

获取当前可用的录制模式,录制模式和摄像头有关,因此在调用了setCameraId切换摄像头之后需要重新调用此方法以获取最新的模式列表。

  • 原型 public static List<RecordMode> getSupportedRecordModes()
  • 参数
  • 返回
    • 摄像头支持的录制模式列表。

获取当前摄像头支持的视频分辨率,在调用了setCameraId切换摄像头之后,需要重新调用此方法以获取最新的分辨率列表。

  • 原型 public static List<Resolution> getSupportedVideoResolutions()
  • 参数
  • 返回
    • 摄像头支持的分辨率列表。

如果该方法返回为null,则可能是发生了不可恢复的硬件错误(例如由于异常操作导致摄像头资源未被释放等),若重启应用程序该函数还是返回null则需重启手机。

获取当前上传数据的实际速率,以byte为单位。

  • 原型 public static int getUploadingSpeed()
  • 参数
  • 返回
    • 当前的上传速率 byte/s。

初始化SDK, 此方法必须在其他所有Api之前被调用。该函数只应被调用一次,多次调用会重新初始化一些参数导致已设置的参数失效。

  • 原型 public static int init(Activity activity, AHandler handler)
  • 参数
    • activity 初始化SDK, 此方法必须在其他所有Api之前被调用, core只是一个库,当其被应用使用时,需要得知应用的上下文环境,需要传入一个acitivty
    • handler handler是一个实现了Ahandler所有事件回调接口的类的实例, core是通过回调机制来通知应用发生的各种事件, AHandler是core提供的一个回调接口的基类,应用需要继承Ahandler并实现其中所有的虚函数。然后通过此方法将实现的接口类的实例告诉Manager。在相应的示例程序中,继承AHandlerXPHandler.java,开发者应该完全理解这个类后才可进行相应的开发设计工作。
  • 返回
    • 0 初始化成功,非0初始化失败。

与视频服务器建立连接 此接口非阻塞模式,调用后立即返回,连接是否成功通过回调通知。连接直播云时,请使用connectCloud

  • 原型 public static boolean initNet(String ps_host, int ps_port, int timeout, String service_code, int buff_size)
  • 参数
    • ps_host PS服务器地址。
    • ps_port PS服务器端口。
    • timeout 连接超时设定,注意这和上面能过setNetTimeout设定的超时不一样,这里的超时是建立连接的超时,而setNetTimeout设定的值在连接期间程序判定网络异常时的超时。
    • service_code 服务码,每个拍摄的视频均有一个服务码与之关联,以标示此视频所属的应用业务,在建立连接时提供这个服务码,则在这个连接中拍传的视频默认都属于此服务码。连接成功,则通过回调AHandler.onConnected回调通知应用,连接失败则通过AHandler.onConnectFail回调通知应用。
    • buff_size 参数buff_size表示网络连接的系统缓存大小,一般情况下可以设置为0,使用默认的系统缓存大小,在网络条件不太好,且视频分辨率较小(480*360以下),又要求直播延迟较短的应用场合下,可以设置的小一点(例如64k),如果拍摄的视频分辨率过大,如720p,可以使用系统默认的大小,也可以得到较小的延迟。
  • 返回
    • true代表连接成功,false代表连接失败。

查询当前可用的摄像头,每次调用时都会进行查询,因此应用在确定没有外接摄像头时,只需要在应用开始前调用一次,然后缓存此列表即可。

  • 原型 public static List<CameraID> inQuireCameras()
  • 参数
  • 返回
    • 可用的摄像头ID列表。

网络连接是否正常。

  • 原型 public static boolean isConnected()
  • 参数
  • 返回
    • true正常,false 网络连接已经断开。

查询是否为强光模式。

  • 原型 public static boolean isGlareScene()
  • 参数
  • 返回
    • true为强光模式,false为非强光模式。

查询是否为静音状态。

  • 原型 public static boolean isMute()
  • 参数
  • 返回
    • true为静音状态,false为非静音状态。

判断当前预览画面是否已经开启。

  • 原型 public static boolean isPreviewing()
  • 参数
  • 返回
    • true预览画面已经开启,false预览画面没有开启。

查询摄像头是否支持zoom操作。

  • 原型 public static boolean isZoomSupported()
  • 参数
  • 返回
    • true支持zoom操作,false不支持zoom操作。

暂停录制。

  • 原型 public static boolean pauseRecord()
  • 参数
  • 返回
    • true暂停录制操作成功,false暂停录制操作失败。

当在直播过程中需要退出直播页面时的暂停直播,可以在SurfaceView的surfaceDestroyed(SurfaceHolder holder)回调里面调用该函数。

当前录制状态为暂停状态时恢复录制操作。

  • 原型 public static boolean resumeRecord()
  • 参数
  • 返回
    • true恢复录制操作成功,false恢复录制操作失败。

当是恢复对退出直播页面时被暂停的直播,可以在SurfaceView的surfaceCreated(SurfaceHolder holder)回调里面调用该函数,该函数在setPreviewSurface之后调用。

设置音频编码参数 当设置编码类型为AMR_NB时,则channel, sample_rate, bit_rate参数都被忽略,AMR_NBchannels固定为1, sample_rate为8000, bit_rate为12200; 当设置编码类型为AAC时,几个参数都有效,sample_ratebit_rate对音质都有显著影响。

  • 原型 public static boolean setAudioRecorderParams(AudioEncoderType audio_encode_type, int channels, int sample_rate, int bit_rate)
  • 参数
    • audio_encode_type 音频编码类型参见 enum AudioEncoderType
    • channels 声道数,支持的声道数1,2(当编码类型为AMR_NB时,固定取值1)
    • sample_rate 采样率,支持的采样率有 8000, 11025, 12kHz, 16kHz, 22.05kHz, 24kHz, 32kHz, 44.1kHz, 48kHz, 64kHz, 88.2kHz, 96kHz(当编码类型为AMR_NB时,固定取值8000) 
    • bit_rate 比特率,支持的比特率可以从8k到320kbps之间取值(当编码类型为AMR_NB时,固定取值12200)
  • 返回
    • true设置成功,false设置失败。

参数对应关系如下所示:

设置使用前置或后置摄像头, 仅支持android 2.3以上系统,如果是在摄像头打开后使用,则需要stopPreview,statPreview使之生效。

  • 原型 public static boolean setCameraId(CameraID id)
  • 参数
    • id 摄像头Id。
  • 返回
    • true设置摄像头Id成功,false设置摄像头Id失败。

设置设备类型。

  • 原型 public static void setDeviceType(DeviceType device_type)
  • 参数
  • 返回
    • 无。

设置强光模式,一般通过isGlareScene来获取当前强光模式状态。

  • 原型 public static void setGlareScene(boolean stat)
  • 参数
    • stat true为打开强光模式,false为关闭强光模式。
  • 返回
    • 无。

设置本地视频文件保存文件夹名,根目录为/sdcard/(视频文件都保存在sdcard上),如果用户希望保存在/sdcard/videofile/localvideo/,参数传"videofile/localvideo"即可,如不设置则默认保存在"/sdcard/xpai/"这个目录下,在startRecord之前调用生效。

  • 原型 public static boolean setLocalVideoFileDirName(String dirName)
  • 参数
    • dirName 保存视频文件文件夹名,例如传"videofile"则视频文件保存在"/sdcard/videofile/"下面
  • 返回
    • true 设置成功,false 设置失败。

在客户端连接服务器前调用,设定和服务器之间通讯时的网络超时时间,注意这不是建立连接的超时时间,而是在连接成功后判断网络异常的超时时间。

  • 原型 public static void setNetTimeout(int timeout)
  • 参数
    • timeout 网络超时时间,单位是毫秒。
  • 返回
    • 无。

设置网络自适应功能,根据网络条件调整编码输出的数据量。

  • 原型 public static void setNetWorkingAdaptive(boolean enable)
  • 参数
    • enable true开启网络自适应,false关闭网络自适应。
  • 返回
    • 无。

设定预览画面的大小,注意并不是设置的预览窗口的大小,预览窗口总是全屏显示。当使用此方法改变了预览画面时,预览正处于打开状态,则需要调用stopPreviewstartPreview复位一下预览以生效。

  • 原型 public static void setPreviewSize(int width, int height)
  • 参数
    • width 预览画面宽度
    • height 预览画面高度
  • 返回
    • 无。

设置预览画面的SurfaceHolder, 此函数必须在startPreviewstartRecord之前被调用,否则会导致上述方法调用失败或发生未知错误。

  • 原型 public static void setPreviewSurface(SurfaceHolder holder)
  • 参数
    • holder 预览画面的SurfaceHolder
  • 返回
    • 无。

设置网络断线后,恢复直播的超时时间,在tryLogin之前调用生效。

  • 原型 public static void setResumeLiveTimeout(int timeout)
  • 参数
    • timeout 恢复直播的超时时间(单位秒),默认值为30秒
  • 返回

    • 无。

    所谓的直播恢复是指:在直播过程中,当网络发生异常时(此时会收到sdk的onTryResumeLive回调),SDK会尝试自动重连服务器并恢复当前直播,在重连过程中播放客户端只会感觉到当前的直播视频有卡顿,并不会感觉到直播采集端已经断开和恢复重连,当直播客户端网络恢复并且恢复直播成功后(此时会收到sdk的onResumeOk的回调),当前直播仍可继续。

    此API是用来设置当网络断开时,服务器等待客户端重连的超时时间(单位是秒),在这个时间内网络恢复了,则直播能恢复继续,超时此时间,则服务器会释放当前的直播资源,导致直播结束,一旦直播结束,则不可以再恢复, 如果恢复失败则会收到 onResumeFail 回调。

    默认情况下,SDK已经启用了直播恢复的功能,默认的超时时间是30秒, 另外客户端设置的超时时间受限于服务器设置的最大值,目前直播云的直播恢复最大超时时间为120秒,如果客户端调用此API设置的超时时间超过120秒则实际值仍然是120秒。

    如果要禁止直播恢复的功能,则设置超时时间为0即可。

设置视频帧率的范围,当设置为(20,20),SDK会自动匹配,只有在摄像头开启的模式下设置才能生效。

  • 原型 public static void setVideoFpsRange(int min_fps, int max_fps)
  • 参数
    • min_fps 最小帧率,默认为20
    • max_fps 最大帧率,默认为20
  • 返回
    • 无。

设置录制视频的画面大小,此函数必须在startRecord调用,否则会导致startRecord失败,注意:此处设置的是录制视频的画面大小和照片无关,照片的大小是在takePicture时传入的,在462版本支持自定义分辨率进行编码,但如果设置的分辨率与手机所支持的分辨率比例不一致也会导致直播失败,建议设置4:3 16:9等等主流的分辨率

  • 原型 public static boolean setVideoResolution(int width, int height)
  • 参数
    • width 视频宽度
    • height 视频高度
  • 返回
    • true设置成功,false设置失败。

调整摄像头焦距。

  • 原型 public static boolean setZoom(int level, boolean isSmoothZoom)
  • 参数
    • level 最大为60,最小为0,一般为12或者20的倍数
    • isSmoothZoom 是否进行平滑调焦
  • 返回
    • true设置成功,false设置失败。

打开预览,在拍摄照片前必须先打开预览,否则会出错。而拍传视频时应用无需先打开预览,core会自动判断当前状态,如果没有打开,会自动打开预览。

  • 原型 public static boolean startPreview()
  • 参数
  • 返回
    • true打开预览成功,false打开预览失败。

打开预览失败一般意味着摄像头不支持设定的视频参数,或者是不可恢复的硬件错误,如果重启应用后调用此方法仍然返回false,则可能需要重启手机。

开始拍传或本地录制视频,当目前已经处于拍摄状态时,调用此方法会返回false。

  • 原型 public static boolean startRecord(RecordMode record_mode,int bitrate, boolean force_really_file, boolean is_offline, String output_tag, String task_opaque)
  • 参数
    • record_mode 录制流媒体类型,详细参见RecordMode定义
    • bitrate 设置视频编码的码流,例如设置为800K,则bitrate为800 * 1024
    • force_really_file 是否强制在本地产生视频文件。true表示在本地生成视频文件,false表示不在本地生成视频文件,如果不在本地生成视频文件则产生的流媒体不支持断点续传模式,此参数均支持当流媒体类型属于软编或硬编时,在本地SD卡上产生视频文件
    • is_offline 是否进行离线拍摄,true表示离线拍摄,不上传,false表示边拍边传,离线模式仅当流媒体类型是硬编时才有效
    • output_tag 客户端动态指定输出格式标签,如无特殊要求该参数传null即可(注意不能传空字符串"")
    • opaque 任务附加字段,服务器会透传给接口,用于应用之间通过视频服务器传递业务数据,没有设置的话传null
  • 返回
    • true启动录制成功,false启动录制失败。

启动录制失败可能有几种情况: 没有调用过setPreviewSurfacepreview设置holder; setVideoResolution设置的画面大小系统不支持; 目前已经处于录制状态,应用可以通过isRecording来查询当前是否处于录制状态; 前面startPreview就已经失败了; 网络连接已经异常,但调用startRecord时提供的is_offline却是false。

关闭预览。

  • 原型 public static boolean stopPreview()
  • 参数
  • 返回
    • true关闭预览成功,false关闭预览失败。

如果当前正处于录制中,调用此方法会返回false。

停止录制。

  • 原型 public static boolean stopRecord()
  • 参数
  • 返回
    • true停止录制成功,false停止录制失败。

如果停止失败可能会造成同一次会话中的下一个开始直播调用失败。

切换摄像头,该API切换摄像头后会自动打开预览,直播过程中也可切换前后摄像头。

  • 原型 public static boolean switchCamera(CameraID id)
  • 参数
  • 返回
    • true切换摄像头成功,false切换摄像头失败。

拍照,照片宽高需通过getSupportedPictureSizes获取设备支持的拍照尺寸。

  • 原型 public static void takePicture(String path, int photo_width, int photo_height)
  • 参数
    • path 生成照片保存的目录名,例如/sdcard/xpai
    • photo_width 照片宽度
    • photo_height 照片高度
  • 返回
    • 无。

开关静音,通过isMute接口查询是否为静音状态。

  • 原型 public static boolean toggleMute(boolean onff)
  • 参数
    • onff true为静音,false为非静音,默认为非静音
  • 返回
    • true开关静音成功,false开关静音失败。

尝试登录服务器。

  • 原型 public static void tryLogin(String user_name, String pass, String service_code)
  • 参数
    • user_name 用户名
    • pass 密码
    • service_code 服务码
  • 返回
    • 无,注意这里并没有返回登录的结果,因为这是一个异步函数,登录的结果将通过AHandler.onAuthResponse回调通知应用。

更新摄像头拍摄角度,该接口配合forcePortrait接口设置竖屏拍摄时使用。

  • 原型 public static void updateOrientation(int degrees)
  • 参数
    • degrees 摄像头旋转角度,设置竖屏拍摄时传90即可
  • 返回
    • 无。

上传照(图)片文件至服务器。

  • 原型 public static boolean uploadFile(String file_name)
  • 参数
    • file_name 文件保存在本地的全路径
  • 返回
    • true代表打开文件成功,false表示找不到此文件。

注意,这里返回true并不代表文件上传成功, 此函数被调用后将马上返回,上传成功后通过回调通知应用,相应的回调接口参考AHandler.onUploadFileStartAHandler.onUploadFileEnd。直播云暂不支持该功能,该功能适用于独立视频服务器。

上传视频文件,服务器支持边传边播,即无需等待视频上传结束,在上传过程中即可以直播的形式来播放。此函数用于上传离线拍摄的视频或者是拍传过程中发生网络断线的视频文件,在461版本新增task_opaque参数

  • 原型 public static boolean uploadVideoFile(String file_name, boolean is_resume, String task_opaque)
  • 参数
    • file_name 文件保存在本地的全路径
    • is_resume 是否是续传文件,core并不知道此文件是否是此前上传一半失败的文件,如果此参数为false,系统总是将此文件当成一个新的文件来对待,如果此值为true,则系统会尝试断点续传
    • task_opaque 透传字段(透传给业务服务器),不需要时传null即可。例如,在上传离线视频文件时可通过该字段添加相关视频信息透传给业务服务器
  • 返回
    • true续传处理成功,false 续传失败,如果is_resume是false,则此函数总是返回true。