该interface中的所有函数均为“+”函数,所以调用时均应采用[XpaiInterface ...]
的方式调用,应用可以通过这些函数完成视频拍传、离线录制和断点续传等工作。
将ID所标识的视频直播条目取消。
+ (void)cancelLive:(SInt64)ID
ID
startRecord或uploadVideoFile所生成的本地视频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
streamID
。获取当前正在上传视频服务器的视频ID。
+ (SInt64)getCurrentSendVideoID
streamID
。获取已发送数据长度,在4.1.1版本将返回值类型改为UInt64。
+ (UInt64)getSentLength:(SInt64)ID
ID
本地视频ID,为startRecord或uploadVideoFile生成的唯一标识获取视频采集的session信息。
+ (AVCaptureSession *)getVideoCaptureSession
获取本地录制视频文件的文件名。
+ (NSString *)getVideoFileName:(SInt64)ID
ID
本地视频ID,为startRecord或uploadVideoFile生成的唯一标识获取本地录制视频文件的大小。
+ (UInt32)getVideoLength:(SInt64)ID
ID
本地视频ID,为startRecord或uploadVideoFile生成的唯一标识获取本地录制视频在服务器上的唯一标识ID。
+ (NSString *)getVideoStreamID:(SInt64)ID
ID
本地视频ID,为startRecord或uploadVideoFile生成的唯一标识获取直播视频保存在直播云上面的路径名。
+ (NSString *)getVideoStreamPath:(SInt64)ID
ID
本地视频ID,为startRecord或uploadVideoFile生成的唯一标识获取XpaiLib库版本号。
+ (NSString *)getXpaiLibVersion
初始化音频录制。
+ (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
分辨率,参考ResolutionValueaudioSampleRate
音频采样率(8000,22050,44100)focusMode
聚焦方式,参考iOS API AVCaptureFocusMode
torchMode
火炬模式,视频录制时闪光灯常亮,参考iOS API AVCaptureTorchMode
glView
暂时不再使用,应该永远为nilprevRect
预览视频窗口的RECTcaptureVideoOrientation
摄像头取景方向,与拿设备的方向相关未设置分辨率会导致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
查询录制是否处于静音状态。
+ (BOOL)isMute
查询是否正在录制视频。
+ (BOOL)isRecording
当用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
分辨率,参考ResolutionValuefocusMode
聚焦方式,参考iOS API AVCaptureFocusMode
torchMode
火炬模式,视频录制时闪光灯常亮,参考iOS API AVCaptureTorchMode
captureVideoOrientation
摄像头取景方向,与拿设备的方向相关未设置分辨率会导致resetRecorder失败。
恢复暂停的视频录制。
+ (void)resumeRecord
设置音频编码参数 当设置编码类型为
AMR_NB
时,则channel
,sample_rate
,bit_rate
参数都被忽略,AMR_NB
的channels
固定为1,sample_rate
为8000,bit_rate
为12200; 当设置编码类型为AAC
时,几个参数都有效,sample_rate
与bit_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),默认为16000bitRate
比特率,支持的比特率可以从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
最小帧率,默认为20max_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
参见ResolutionValuewidth
视频宽度,只有resolutionValue
设置为RESOLUTION_CUSTOM时才需设置该值,一般可设为0height
视频高度,只有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
参考RecordModetransferMode
参考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:需要传递的字符串(透传给应用层)开始视频采集。
+ (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
参考UploadModesID
如果mode
为UPLOAD_FROM_RESUME_POINT
,请将streamID
的值传入该参数sPath
如果mode
为UPLOAD_FROM_FILE_BEGIN
,请将streamPath
的值传入该参数isRecordDone
TRUE为待上传的视频文件已经录制完成,FALSE为待上传的视频文件正在录制中task_opaque
透传字段(透传给业务服务器),不需要时传nil即可。例如,在上传离线视频文件时可通过该字段添加相关视频信息透传给业务服务器。调焦。
+ (void)zoom:(CGFloat)factor
factor
变焦的倍数,范围 1~4;