AVDVideo

Superclass:
AVDModule
Declared In:

Introduction

房间中视频模块接口.

房间视频模块定义房间中视频发布、订阅功能接口。



Methods

-addMixerOverlayVideo:zorder:x:y:w:h:
-addMixerOverlayVideoPixel:zorder:x:y:w:h:
-attachRenderWithDeviceId:render:
-changeSubscribedVideoQuality:quality:
-clearMixerVideos
-detachRenderWithDeviceId:
-detachRenderWithRender:
-getCamera:
-getCameraByUserId:
-getCameraWithId:
-getCurrentCameraType
+getVideo:
-isCameraPublished:
-isCameraSubscribed:
-ispublishLocalCamera
-previewLocalCamera:
-previewLocalCamera:capturer:render:
-previewLocalCamera:render:
-publishLocalCamera
-publishLocalCamera:
-publishLocalCamera:capturer:
-publishLocalCameraWithCamera:
-remotecmdPublishCamera:
-remotecmdUnpublishCamera:
-removeMixerOverlayVideo:
-setMixerDateListener:
-setMixerDateRender:
-setMixerMainVideo:
-setMixerVideoSize:height:background:
-setVideoBitrate:min:max:
-subscribe:
-subscribe:quality:
-subscribe:stream:
-switchToLocalCamera
-switchToLocalCameraWithType:
-unpreviewLocalCamera
-unpreviewLocalCamera:
-unpublishLocalCamera
-unpublishLocalCamera:
-unsubscribe:
-updateCameraData:level:description:
-updateMixerOverlayVideo:zorder:x:y:w:h:
-updateMixerOverlayVideoPixel:zorder:x:y:w:h:

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 此视频高度


Properties

publishedCameras
subscribedCameras

publishedCameras


@property (nonatomic,
    retain,
    readonly) NSMutableArray* publishedCameras; 
Discussion

已共享摄像头信息列表

摄像头列表包含本地发布的摄像头和房间中其他用户的所有正在发布的摄像头,摄像头视频要在界面上显示,远端摄像头需要首先做subcribe;:

而本地摄像头显示时不需要subscribe,应用层开发时需要注意。publishedCameras中保存的是AVDCamera对象。


subscribedCameras


@property (nonatomic,
    retain,
    readonly) NSMutableArray* subscribedCameras; 
Discussion

已订阅摄像头信息列表

subscribedCameras中保存的是AVDCamera对象。: