AVDVideo
Introduction房间中视频模块接口. 房间视频模块定义房间中视频发布、订阅功能接口。 Methods
addMixerOverlayVideo:zorder:x:y:w:h:- (AVDResult) addMixerOverlayVideo:(AVDDeviceId)deviceId zorder:(NSUInteger)zorder x:(CGFloat)x y:(CGFloat)y w:(CGFloat)w h:(CGFloat)h; Return Value返回错误代码。 @sa addMixerOverlayVideo Discussion添加视频到主视频特定位置 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 @param[in] zorder 多个视频覆盖时,前后位置,zorder越小,视频越在前面,后面会被覆盖;取值0-n @param[in] x 此视频在主视频的左上角左边位置,即x坐标,取值0.0~1.0,内部取值为:width (主视频)x X @param[in] y 此视频在主视频的左上角上边位置,即y坐标,取值0.0~1.0,内部取值为:height(主视频)x Y @param[in] w 此视频在主视频的宽度比例,取值0.0~1.0,内部取值为:width (主视频)x W @param[in] h 此视频在主视频的高度比例,取值0.0~1.0,内部取值为:height(主视频)x H addMixerOverlayVideoPixel:zorder:x:y:w:h:- (AVDResult) addMixerOverlayVideoPixel:(AVDDeviceId)deviceId zorder:(NSUInteger)zorder x:(NSUInteger)x y:(NSUInteger)y w:(NSUInteger)w h:(NSUInteger)h; Return Value返回错误代码。 @sa addMixerOverlayVideo Discussion添加视频到主视频特定位置 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 @param[in] zorder 多个视频覆盖时,前后位置,zorder越小,视频越在下层,会被覆盖;取值0-10 @param[in] x 此视频在左上角左边位置,即x坐标, @param[in] y 此视频在左上角上边位置,即y坐标, @param[in] w 此视频宽度 @param[in] h 此视频高度 attachRenderWithDeviceId:render:- (AVDResult) attachRenderWithDeviceId:(AVDDeviceId)deviceId render:(id<AVDVideoRenderer>)render; Return Value返回错误代码。 @sa IVideoRender Discussion关联视频数据和显示对象,在render中显示视频 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 @param[in] render 显示对象接口指针。 视频数据可以在多个显示对象上显示,而一个显示对象某一时刻只能显示一路视频。: 在本地视频发布到房间中,或者远端视频订阅成功后,调用此接口完成视频与显示对象的对接,从而在显示对象中显示视频。 changeSubscribedVideoQuality:quality:- (AVDResult) changeSubscribedVideoQuality:(AVDDeviceId)deviceId quality:(enum AVDQualityType)quality; Return Value返回错误代码。 @sa VideoQuality Discussion更改订阅视频的视频质量 @param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 @param[in] quality 视频质量。 clearMixerVideos- (AVDResult) clearMixerVideos; Return Value返回错误代码。 Discussion清理掉所有的混屏视频,包括主视频;如果需要再次开启合屏,需要重新设置主视频和Overlay视频。 detachRenderWithDeviceId:- (AVDResult) detachRenderWithDeviceId:(AVDDeviceId)deviceId; Return Value返回错误代码。 @sa IVideoRender Discussion解除摄像头视频数据的所有显示对象关联 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 detachRenderWithRender:- (AVDResult) detachRenderWithRender:(id<AVDVideoRenderer>)render; Discussion解除某一显示对象与摄像头视频数据的关联 @param[in] render 显示对象接口指针。 @sa IVideoRender getCamera:- (AVDCamera*) getCamera:(enum AVDCameraType)type; Return Value返回摄像头设备信息。 @sa CameraType Discussion获取指定类型的本机摄像头信息 @param[in] type 摄像头类型。 getCameraByUserId:- (AVDCamera *) getCameraByUserId:(AVDUserId)userId; Discussion获取某一用户的缺省摄像头对象 @param[in] userId 用户号。 getCameraWithId:- (AVDCamera*) getCameraWithId:(AVDDeviceId)deviceId; Return Value返回摄像头信息。 可以返回本地用户和远端用户的摄像头信息。: Discussion获取指定设备Id的摄像头信息 @param[in] deviceId 设备Id。 getCurrentCameraType- (enum AVDCameraType) getCurrentCameraType; Return Value返回摄像头类型。 Discussion获取当前使用的摄像头类型 在前后置摄像头操作模式下有效。: getVideo:+ (AVDVideo* ) getVideo:(AVDRoom*)room; Return Value返回视频模块对象。 Discussion获取视频功能模块对象 @param[in] *room 房间对象指针 isCameraPublished:- (BOOL) isCameraPublished:(AVDDeviceId)fromId; Discussion判断摄像头是否已经发布到房间中 isCameraSubscribed:- (BOOL) isCameraSubscribed:(AVDDeviceId)fromId; Discussion判断摄像头是否已经被本用户订阅 ispublishLocalCamera- (BOOL) ispublishLocalCamera; Discussion判断是否已经打开本地摄像头 previewLocalCamera:- (AVDResult) previewLocalCamera:(id<AVDVideoRenderer>)render; Return Value返回错误代码。 @sa IVideoRender Discussion预览本地缺省摄像头视频 @param[in] render 显示对象接口指针 本地视频在发布到会议前,可以调用此接口进行视频预览;视频发布到会议中后,需要使用attachRender接口来进行视频显示,此时此接口无效。: previewLocalCamera:capturer:render:- (AVDResult) previewLocalCamera:(AVDCamera*)fakeDevice capturer:(AVDFakeVideoCapturer*)capturer render:(id<AVDVideoRenderer>)render; Return Value返回错误代码。 模拟摄像头用于在房间中导入特定已经存在的视频数据流,比如视频文件、录播系统视频流等。 @sa FakeVideoCapturer render 允许被设置为NULL。: fakeDevice.id 会按照3tee设备id规则重新构造成。 注意:此函数必须用 unpreviewLocalCamera(String deviceId)来取消发布,不能用无参数函数; Discussion预览模拟摄像头视频 @param[in,out] fakeDevice 模拟摄像头信息,接口会生成deviceId,生成规则:"userId_"+(用户输入的deviceId), 此处deviceId不能包含'_'和'{'、'}'此三个字符。 @param[in] *capturer 模拟摄像头视频输入接口。 @param[in] *render 显示对象接口指针 previewLocalCamera:render:- (AVDResult) previewLocalCamera:(enum AVDCameraType)type render:(id<AVDVideoRenderer>)render; Return Value返回错误代码;若不支持此操作返回 Err_Not_Available。 @sa IVideoRender @sa CameraType Discussion预览本机前置或者后置摄像头视频 @param[in] type 摄像头类型。 @param[in] render 显示对象接口指针 在前后置摄像头操作模式下有效;摄像头模式设置在AVDEngine的SetOption接口中实现;取消预览接口为unpreviewLocalCamera,无需参数。: publishLocalCamera- (AVDResult) publishLocalCamera; Return Value返回错误代码。 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。: @sa onPublishLocalResult Discussion发布缺省摄像头视频 publishLocalCamera:- (AVDResult) publishLocalCamera:(enum AVDCameraType)type; Return Value返回错误代码;若不支持此操作返回 Err_Not_Available。 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。在前后置摄像头操作模式下有效;取消预览接口为unpublishLocalCamera,无需参数。: @sa onPublishLocalResult Discussion发布特定类型摄像头视频 @param[in] type 摄像头类型。 publishLocalCamera:capturer:- (AVDResult) publishLocalCamera:(AVDCamera*)fakeDevice capturer:(AVDFakeVideoCapturer*)capturer; Return Value返回错误代码。 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。: 模拟摄像头用于在房间中导入特定已经存在的视频数据流,比如视频文件、录播系统视频流等。 注意:此函数必须用 unpreviewLocalCamera(String deviceId)来取消发布,不能用无参数函数; @sa onPublishLocalResult Discussion发布模拟摄像头视频 @param[in,out] fakeDevice 模拟摄像头信息,接口会生成deviceId,生成规则:"userId_"+(用户输入的deviceId), 此处deviceId不能包含'_'和'{'、'}'此三个字符。 @param[in] capturer 模拟摄像头视频输入接口。 publishLocalCameraWithCamera:- (AVDResult) publishLocalCameraWithCamera:(AVDCamera*)camera; Return Value返回错误代码。 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。: @sa onPublishLocalResult Discussion发布摄像头视频 @param[in] camera 摄像头信息。 remotecmdPublishCamera:- (AVDResult) remotecmdPublishCamera:(AVDCamera*)device; Return Value返回错误代码。 Discussion命令远端用户发布某一摄像头视频 @param[in] *device 摄像头信息。 remotecmdUnpublishCamera:- (AVDResult) remotecmdUnpublishCamera:(AVDDeviceId)deviceId; Return Value返回错误代码。 Discussion命令远端用户取消发布摄像头视频 @param[in] deviceId 摄像头Id。 removeMixerOverlayVideo:- (AVDResult) removeMixerOverlayVideo:(AVDDeviceId)deviceId; Return Value返回错误代码。 Discussion移除主视频上的某一视频 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 setMixerDateListener:- (AVDResult) setMixerDateListener:(id<AVDVideoRendererCallBacks>)cb; Discussion同上: @param[in] cb 回调数据接口指针。 setMixerDateRender:- (AVDResult) setMixerDateRender:(id<AVDVideoRenderer>)render; Return Value返回错误代码。 @sa IVideoRender 显示且回调数据时调用setVideoMixerListener,设置render为AVDVideoView,同时对AVDVideoView的callbacks代理设置回调接口;: 只需要回调数据时调用setVideoMixerListener2; 两个函数只能调用一个 Discussion设置获取视频数据回调接口,此数据仅回调一份数据:数据为主视频+各个Overlay的视频,视频大小为主视频大小;如使用ILivecast接口,不需要设置此接口。 @param[in] render 显示对象接口指针。 setMixerMainVideo:- (AVDResult) setMixerMainVideo:(AVDDeviceId)deviceId; Return Value返回错误代码。 设置混屏的主视频等效于,setMixerVideoSize为主视频大小,同时addMixerOverlayVideo将主视频加入到混屏中,且充满全屏。: Discussion设置回调视频数据的视频主视频 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 setMixerVideoSize:height:background:- (AVDResult) setMixerVideoSize:(NSUInteger)width height:(NSUInteger)height background:(NSString*)background; Return Value返回错误代码。 @sa addMixerOverlayVideo Discussion设置混频后视频数据的尺寸 @param[in] width 视频图像宽。 @param[in] height 视频图像高。 @param[in] background 背景图。 setVideoBitrate:min:max:- (AVDResult) setVideoBitrate:(AVDDeviceId)deviceId min:(NSInteger)minBitrateBps max:(NSInteger)maxBitrateBps; Return Value返回错误代码。 例如30k/s = 30*8*1000 bps(bits/s)。当min和max相等时,码率固定,将不会动态调整。: Discussion设置视频动态码率调整的范围,最小和最大比特率, @param[in] deviceId 视频设备对应ID。 @param[in] minBitrateBps 最小比特率,单位bps。 @param[in] maxBitrateBps 最大比特率,单位bps。 subscribe:- (AVDResult) subscribe:(AVDDeviceId)deviceId; Return Value返回错误代码。 订阅操作为异步操作,操作结果在 onSubscribeResult 中返回。: @sa onSubscribeResult Discussion订阅摄像头视频 @param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 subscribe:quality:- (AVDResult) subscribe:(AVDDeviceId)deviceId quality:(enum AVDQualityType)quality; Return Value返回错误代码。 订阅说明如同名接口所描述。: 3.0版本后支持视频清晰度切换:发布视频时设置视频最大分辨率,通过此接口和changeSubscribedVideoQuality接口可以在整个 房间层级来更改订阅的视频的清晰度,但要求房间中所有人清晰度要求一致才生效(通过远端分辨率更改实现)。 如最大分辨率为 quality_high - 1280x720; 则:quality_normal - 640x360(high/2); quality_low - 320x240(normal/2) @sa VideoQuality Discussion订阅摄像头视频指定视频质量视频 @param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 @param[in] quality 订阅视频的清晰度要求。 subscribe:stream:- (AVDResult) subscribe:(AVDDeviceId)deviceId stream:(enum AVDStreamType)stream; Return Value返回错误代码。 订阅说明如同名接口所描述。: @sa StreamType Discussion订阅摄像头视频指定视频主辅流 @param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 @param[in] stream 指定视频流(主流,辅流1,辅流2)。 switchToLocalCamera- (AVDResult) switchToLocalCamera; Return Value返回错误代码;若不支持此操作返回 Err_Not_Available。 Discussion切换特定类型摄像头视频源 在前后置摄像头操作模式下有效。: switchToLocalCameraWithType:- (AVDResult) switchToLocalCameraWithType:(enum AVDCameraType)toType; Discussion切换到特定类型摄像头视频源,同上 @param[in] toType 摄像头类型。 unpreviewLocalCamera- (AVDResult) unpreviewLocalCamera; Return Value返回错误代码。 Discussion取消预览缺省摄像头视频 unpreviewLocalCamera:- (AVDResult) unpreviewLocalCamera:(AVDDeviceId)deviceId; Return Value返回错误代码。 Discussion取消预览摄像头视频 @param[in] deviceId 摄像头Id。 unpublishLocalCamera- (AVDResult) unpublishLocalCamera; Return Value返回错误代码。 取消发布操作为异步操作,操作结果在 onUnpublishLocalResult 中返回。: @sa onUnpublishLocalResult Discussion取消发布缺省摄像头视频 unpublishLocalCamera:- (AVDResult) unpublishLocalCamera:(AVDDeviceId)deviceId; Return Value返回错误代码。 取消发布操作为异步操作,操作结果在 onUnpublishLocalResult 中返回。: @sa onUnpublishLocalResult Discussion取消发布摄像头视频 @param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 unsubscribe:- (AVDResult) unsubscribe:(AVDDeviceId)deviceId; Return Value返回错误代码。 取消订阅操作为异步操作,操作结果在 onUnsubscribeResult 中返回。: @sa onUnsubscribeResult Discussion取消订阅摄像头视频 @param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 updateCameraData:level:description:- (AVDResult) updateCameraData:(AVDDeviceId)deviceId level:(NSInteger)level description:(NSString*)description; Discussion摄像头数据更改 @param[in] deviceId 摄像头Id,唯一标示一个摄像头。 @param[in] level 摄像头整形数据。 @param[in] description 摄像头字符串数据。 @sa onCameraDataNotify updateMixerOverlayVideo:zorder:x:y:w:h:- (AVDResult) updateMixerOverlayVideo:(AVDDeviceId)deviceId zorder:(NSUInteger)zorder x:(CGFloat)x y:(CGFloat)y w:(CGFloat)w h:(CGFloat)h; Return Value返回错误代码。 Discussion更新附加视频在主视频上显示的位置 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 @param[in] zorder 多个视频覆盖时,前后位置,zorder越小,视频越在前面,后面会被覆盖;取值0-n @param[in] x 此视频在主视频的左上角左边位置,即x坐标,取值0.0~1.0,内部取值为:width (主视频)x X @param[in] y 此视频在主视频的左上角上边位置,即y坐标,取值0.0~1.0,内部取值为:height(主视频)x Y @param[in] w 此视频在主视频的宽度比例,取值0.0~1.0,内部取值为:width (主视频)x W @param[in] h 此视频在主视频的高度比例,取值0.0~1.0,内部取值为:height(主视频)x H updateMixerOverlayVideoPixel:zorder:x:y:w:h:- (AVDResult) updateMixerOverlayVideoPixel:(AVDDeviceId)deviceId zorder:(NSUInteger)zorder x:(NSUInteger)x y:(NSUInteger)y w:(NSUInteger)w h:(NSUInteger)h; Return Value返回错误代码。 Discussion更新附加视频在主视频上显示的位置 @param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 @param[in] zorder 多个视频覆盖时,前后位置,zorder越小,视频越在下层,会被覆盖;取值0-10 @param[in] x 此视频在左上角左边位置,即x坐标, @param[in] y 此视频在左上角上边位置,即y坐标, @param[in] w 此视频宽度 @param[in] h 此视频高度 PropertiespublishedCameras@property (nonatomic, retain, readonly) NSMutableArray* publishedCameras; Discussion已共享摄像头信息列表 摄像头列表包含本地发布的摄像头和房间中其他用户的所有正在发布的摄像头,摄像头视频要在界面上显示,远端摄像头需要首先做subcribe;: 而本地摄像头显示时不需要subscribe,应用层开发时需要注意。publishedCameras中保存的是AVDCamera对象。 subscribedCameras@property (nonatomic, retain, readonly) NSMutableArray* subscribedCameras; Discussion已订阅摄像头信息列表 subscribedCameras中保存的是AVDCamera对象。: |