XpaiInterface接口说明

该interface中的所有函数均为“+”函数,所以调用时均应采用[XpaiInterface ...]的方式调用,应用可以通过这些函数完成视频拍传、离线录制和断点续传等工作。

将ID所标识的视频直播条目取消。

连接到直播云(私有云)。

  • 原型 + (void)connectCloud:(NSString *)httpApiUrl u:(NSString *)u pd:(NSString *)pd svcd:(NSString *)svcd
  • 参数
    • httpApiUrl 连接直播云时获取VS服务器信息固定URL@”http://c.zhiboyun.com/api/20140928/get_vs”,连接私有云时获取VS服务器信息URL类似于@”http://192.168.1.1/api/20140928/get_vs”
    • u 用户名
    • pd 密码
    • svcd 服务码,服务器端通过该参数判断应用需求来源
  • 返回
    • 无。

连接到视频服务器(连接直播云请使用connectCloud)。

  • 原型 + (void)connectToServer:(NSString *)h p:(UInt16)p u:(NSString *)u pd:(NSString *)pd svcd:(NSString *)svcd OnUDP:(BOOL)isOnUDP
  • 参数
    • h 视频服务器地址
    • p 视频服务器端口
    • u 用户名
    • pd 密码
    • svcd 服务码,服务器端通过该参数判断应用需求来源
    • isOnUDP 除视频服务器端口类型为TCP的特殊情况外,一律使用YES
  • 返回
    • 无。

断开与服务器的连接。

  • 原型 + (void)disconnect
  • 参数
  • 返回
    • 无。

获取本地缓存大小。

  • 原型 + (UInt32)getCacheRemaining
  • 参数
  • 返回
    • 本地缓存数据大小。

获取当前正在录制的视频ID。

  • 原型 + (SInt64)getCurrentRecordVideoID
  • 参数
  • 返回
    • startRecord中生成的本地唯一标识ID,该ID不是streamID

获取当前正在上传视频服务器的视频ID。

  • 原型 + (SInt64)getCurrentSendVideoID
  • 参数
  • 返回
    • startRecord中生成的本地唯一标识ID,该ID不是streamID

获取已发送数据长度,在4.1.1版本将返回值类型改为UInt64。

  • 原型 + (UInt64)getSentLength:(SInt64)ID
  • 参数
  • 返回
    • 已发送数据长度。

获取视频采集的session信息。

  • 原型 + (AVCaptureSession *)getVideoCaptureSession
  • 参数
  • 返回
    • 视频采集的session信息,参考iOS API文档。

获取本地录制视频文件的文件名。

  • 原型 + (NSString *)getVideoFileName:(SInt64)ID
  • 参数
  • 返回
    • 本地录制视频文件的文件名。

获取本地录制视频文件的大小。

  • 原型 + (UInt32)getVideoLength:(SInt64)ID
  • 参数
  • 返回
    • 本地录制视频文件的大小。

获取本地录制视频在服务器上的唯一标识ID。

  • 原型 + (NSString *)getVideoStreamID:(SInt64)ID
  • 参数
  • 返回
    • 本地录制视频在服务器上的唯一标识ID。

获取直播视频保存在直播云上面的路径名。

  • 原型 + (NSString *)getVideoStreamPath:(SInt64)ID
  • 参数
  • 返回
    • 直播视频保存在直播云上面的路径名。

获取XpaiLib库版本号。

  • 原型 + (NSString *)getXpaiLibVersion
  • 参数
  • 返回
    • XpaiLib库版本号。

初始化音频录制。

  • 原型 + (void)initAudioRecorder
  • 参数
  • 返回
    • 无。

设置音频Session的相关信息,一般为[XpaiInterface initAudioSession: MOVIE_RECORD]

  • 原型 + (void)initAudioSession:(AudioMode)mode
  • 参数
    • mode 音频模式,一般设置为MOVIE_RECORD
  • 返回
    • 无。

初始化视频录制相关参数, 4.1.5版本修改返回值类型为BOOL,去除resolution参数

  • 原型 + (BOOL)initRecorder:(AVCaptureDevicePosition)cameraPosition workMode:(WorkMode)workMode audioSampleRate:(UInt32)audioSampleRate focusMode:(AVCaptureFocusMode)focusMode torchMode:(AVCaptureTorchMode)torchMode glView:(UIView *)glView prevRect:(CGRect)prevRect captureVideoOrientation:(AVCaptureVideoOrientation)captureVideoOrientation
  • 参数
    • cameraPosition 前置还是后置摄像头
    • workMode 当为VIDEO_MODE时,resolution最大为RESOLUTION_HIGH,当指定为PHOTO_MODE时,resolution 被固定为RESOLTION_PHOTO
    • resolution 分辨率,参考ResolutionValue
    • audioSampleRate 音频采样率(8000,22050,44100)
    • focusMode 聚焦方式,参考iOS API AVCaptureFocusMode
    • torchMode 火炬模式,视频录制时闪光灯常亮,参考iOS API AVCaptureTorchMode
    • glView 暂时不再使用,应该永远为nil
    • prevRect 预览视频窗口的RECT
    • captureVideoOrientation 摄像头取景方向,与拿设备的方向相关
  • 返回
    • 无。

未设置分辨率会导致initRecorder失败。

直播打断,当有电话或者是按Home键时,在- (void)applicationWillResignActive:(UIApplication *)application调用该API即可暂停直播,当返回应用程序时在- (void)applicationDidBecomeActive:(UIApplication *)application调用resumeRecord即可恢复直播,如果不需要退出直播页面的暂停可调用pauseRecord暂停直播,调用resumeRecord恢复直播。

  • 原型 + (void)interruptLive
  • 参数
  • 返回
    • 无。

该功能首先需在Info.plist设置background modes 为 voip,然后在直播页面注册两个监听函数 程序挂起监听:- (void)applicationWillResignActive:(UIApplication *)application,重新进入程序监听: - (void)applicationDidBecomeActive:(UIApplication *)application

查询是否与服务器建立连接。

  • 原型 + (BOOL)isConnected
  • 参数
  • 返回
    • TRUE连接正常,FALSE未连接。

查询录制是否处于静音状态。

  • 原型 + (BOOL)isMute
  • 参数
  • 返回
    • TRUE为静音,FALSE为非静音。

查询是否正在录制视频。

  • 原型 + (BOOL)isRecording
  • 参数
  • 返回
    • TRUE正在录制视频,FALSE反之。

当用uploadVideoFile来上传某个视频时,如果该视频在启动uploadVideoFile时尚未停止录制(即isRecordDone为NO),如果用户结束了录制行为,可通过该API来通知Lib,该视频录制已经完成。

  • 原型 + (void)notifyRecordDone:(SInt64)ID
  • 参数
    • ID uploadVideoFile所生成的本地ID标识
  • 返回
    • 无。

暂停视频录制。

  • 原型 + (void)pauseRecord
  • 参数
  • 返回
    • 无。

释放音频录制资源。

  • 原型 + (void)releaseAudioRecorder
  • 参数
  • 返回
    • 无。

重置视频录制的相关参数,4.1.5版本修改返回值类型为BOOL,去除resolution参数

  • 原型 + (BOOL)resetRecorder:(AVCaptureDevicePosition)cameraPosition workMode:(WorkMode)workMode audioSampleRate:(UInt32)audioSampleRate focusMode:(AVCaptureFocusMode)focusMode torchMode:(AVCaptureTorchMode)torchMode captureVideoOrientation:(AVCaptureVideoOrientation)captureVideoOrientation
  • 参数
    • cameraPosition 前置还是后置摄像头
    • workMode 当为VIDEO_MODE时,resolution最大为RESOLUTION_HIGH,当指定为PHOTO_MODE时,resolution 被固定为RESOLTION_PHOTO
    • resolution 分辨率,参考ResolutionValue
    • focusMode 聚焦方式,参考iOS API AVCaptureFocusMode
    • torchMode 火炬模式,视频录制时闪光灯常亮,参考iOS API AVCaptureTorchMode
    • captureVideoOrientation 摄像头取景方向,与拿设备的方向相关
  • 返回
    • 无。

未设置分辨率会导致resetRecorder失败。

恢复暂停的视频录制。

  • 原型 + (void)resumeRecord
  • 参数
  • 返回
    • 无。

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

  • 原型 + (void)setAudioRecorderParams:(AudioEncoderType) aet channels:(int)channels sampleRate:(int)sampleRate audioBitRate:(int)bitRate
  • 参数
    • aet 音频编码类型参见 enum AudioEncoderType,默认为AAC编码,声道数为1,采样率为16000,比特率为16000,
    • channels 声道数,支持的声道数1,2(当编码类型为AMR_NB时,固定取值1),默认为1,
    • sampleRate 采样率,支持的采样率有 8000, 11025, 12kHz, 16kHz, 22.05kHz, 24kHz, 32kHz, 44.1kHz, 48kHz, 64kHz, 88.2kHz, 96kHz(当编码类型为AMR_NB时,固定取值8000),默认为16000
    • bitRate 比特率,支持的比特率可以从8k到320kbps之间取值(当编码类型为AMR_NB时,固定取值12200),默认为16000
  • 返回
    • 无。

参数对应关系如下所示:

此函数需在initRecorder之前调用才生效。

设置认证模式。

  • 原型 + (void)setAuthMode:(AuthMode)authMode
  • 参数
    • authMode CHALLENGE_PASSWORD:挑战认证,CLEAR_PASSWORD:明文认证
  • 返回
    • 无。

设置delegate,一般应用客户端需要实现XpaiInterfaceDelegate中的回调函数,应用客户端需要通过setDelegate将实现这些回调函数的对象传送给XpaiInterface

  • 原型 + (void)setDelegate:(id)dl
  • 参数
    • dl delegate对象
  • 返回
    • 无。

设置视频拍摄的聚焦方式。

  • 原型 + (void)setFocusMode:(AVCaptureFocusMode)focusMode
  • 参数
    • focusMode 参考 iOS API AVCaptureFocusMode
  • 返回
    • 无。

设置网络自适应功能,只有在iOS8及以上版本才支持该功能,默认为关闭状态,需在initRecorder之后调用。

  • 原型 + (void)setNetWorkingAdaptive:(BOOL)isNWAdaptive
  • 参数
    • isNWAdaptive TRUE:打开网络自适应,FALSE:关闭网络自适应
  • 返回
    • 无。

设置网络超时阈值,当与服务器间的心跳超过tm的值,触发网络断开。

  • 原型 + (void)setNetworkTimeout:(int)tm
  • 参数
    • tm 超时时长,以秒为单位
  • 返回
    • 无。

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

  • 原型 + (void)setResumeLiveTimeout:(int)tm
  • 参数
    • tm 恢复直播的超时时间(单位秒),默认值为30秒
  • 返回
    • 无。

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

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

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

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

设置码流,只有在iOS8 硬编码才支持设置码流操作。

  • 原型 + (void)setVideoBitRate:(int)bt
  • 参数
    • bt 码流,单位为Kbit
  • 返回
    • 无。

设置视频最大帧率和最小帧率,需在initRecorder前调用生效。

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

设置视频镜像模式。SDK4.0.5版本新增此API。

  • 原型 + (void)setVideoMirroredMode:(VideoMirroredMode)videoMirroredMode
  • 参数
    • videoMirroredMode 参见VideoMirroredMode,默认为正常模式,只有前置摄像头才支持镜像模式
  • 返回
    • 无。

此函数需在initRecorder之前调用才生效。

设置视频分辨率,建议设置4:3、16:9等比例的分辨率。

  • 原型 + (void)setVideoResolution:(ResolutionValue)resolutionValue width:(int)width height:(int)height
  • 参数
    • resolutionValue 参见ResolutionValue
    • width 视频宽度,只有resolutionValue设置为RESOLUTION_CUSTOM时才需设置该值,一般可设为0
    • height 视频高度,只有resolutionValue设置为RESOLUTION_CUSTOM时才需设置该值,一般可设为0
  • 返回
    • 无。

此函数需在initRecorder之前调用才生效,如果需使用ResolutionValue中列出的分辨率(RESOLUTION_CUSTOM除外),可使用自定义分辨率,例如设置为640x360的分辨率:[XpaiInterface setVideoResolution:RESOLUTION_CUSTOM width:640 height:360]。

开始音频录制。

  • 原型 + (void)startAudioRecord
  • 参数
  • 返回
    • 无。

开始录制视频。

  • 原型 + (SInt64)startRecord:(RecordMode)mode TransferMode:(TransferMode)transferMode forceReallyFile:(BOOL)forceReallyFile volume:(float)volume parameters:(NSDictionary *)paras
  • 参数
    • mode 参考RecordMode
    • transferMode 参考TransferMode,不管该参数设置为何值,在手机端本地保存的视频文件将保留音视频数据
    • forceReallyFile 选择是否在本地生成视频文件。TRUE为在本地生成视频文件,FALSE则不生成。当mode为HARDWARE_ENCODER_LOCAL_STORAGE_ONLY时始终会在本地生成视频文件。
    • volume 增加拾音度,可以使拍摄到的视频音量放大。参数值从0.0到1.0,0.0表示不增音,1.0表示最大幅度增音
    • paras 直播时传递给视频服务器的参数字典,不需要时传递nil即可。Key:XPAI_OUTPUT_TAG Value:需要传递的字符串(服务器标签)Key:XPAI_TASK_OPAQUE Value:需要传递的字符串(透传给应用层)
  • 返回
    • 在startRecord成功时,会在Lib内部根据当前时间生成一个本地唯一标识,该返回值被用于标识这一次录制和上传过程。

开始视频采集。

  • 原型 + (void)startVideoCapture
  • 参数
  • 返回
    • 无。

结束音频录制。

  • 原型 + (NSString *)stopAudioRecord
  • 参数
  • 返回
    • 录制的音频文件名。

停止录制。

  • 原型 + (void)stopRecord
  • 参数
  • 返回
    • 无。

停止视频采集。

  • 原型 + (void)stopVideoCapture
  • 参数
  • 返回
    • 无。

照片模式下拍摄高清照片,分辨率为RESOLUTION_PHOTO(参见iOS:AVCaptureSessionPresetPhoto),该函数的调用会有卡塔的照片拍摄声音。

  • 原型 + (void)takePhoto
  • 参数
  • 返回
    • 无。

视频模式下拍照(获取截屏),分辨率为initRecorder时传进的分辨率,该函数的作用与takePhoto类似,但没有拍摄照片时的卡塔声。

  • 原型 + (void)takeSnapshot
  • 参数
  • 返回
    • 无。

手指点击触摸聚焦。

  • 原型 + (void)tapToFocus:(CGPoint)point
  • 参数
    • point 输入手指点击的坐标值
  • 返回
    • 无。

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

  • 原型 + (void)toggleMute:(BOOL)muteOn
  • 参数
    • muteOn true为静音,false为非静音,默认为非静音
  • 返回
    • 无。

上传本地的照片文件到服务器。

  • 原型 + (void)uploadPhoto:(NSString *)url
  • 参数
    • url 照片的全路径名
  • 返回
    • 无。

上传本地视频文件,在4.1.4版本新增opaque参数

  • 原型 + (SInt64)uploadVideoFile:(NSString *)url mode:(UploadMode)mode sId:(NSString *)sId sPath:(NSString *)sPath isRecordDone:(BOOL)isRecordDone opaque:(NSString *)task_opaque
  • 参数
    • url 视频文件在本地的地址
    • mode 参考UploadMode
    • sID 如果modeUPLOAD_FROM_RESUME_POINT,请将streamID的值传入该参数
    • sPath 如果modeUPLOAD_FROM_FILE_BEGIN,请将streamPath的值传入该参数
    • isRecordDone TRUE为待上传的视频文件已经录制完成,FALSE为待上传的视频文件正在录制中
    • task_opaque 透传字段(透传给业务服务器),不需要时传nil即可。例如,在上传离线视频文件时可通过该字段添加相关视频信息透传给业务服务器。
  • 返回
    • startRecord成功时,会在Lib内部根据当前时间生成一个本地唯一标识,该返回值被用于标识这一次录制和上传过程。

调焦。

  • 原型 + (void)zoom:(CGFloat)factor
  • 参数
    • factor 变焦的倍数,范围 1~4;
  • 返回
    • 无。