AVDVideo Class Reference

Inherits from AVDModule : NSObject
Declared in AVDVideo.h
AVDVideo.mm

Overview

房间中视频模块接口.

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

  publishedCameras

已共享摄像头信息列表

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

Discussion

已共享摄像头信息列表

Note: 摄像头列表包含本地发布的摄像头和房间中其他用户的所有正在发布的摄像头,摄像头视频要在界面上显示,远端摄像头需要首先做subcribe; 而本地摄像头显示时不需要subscribe,应用层开发时需要注意。publishedCameras中保存的是AVDCamera对象。

Declared In

AVDVideo.h

  subscribedCameras

已订阅摄像头信息列表

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

Discussion

已订阅摄像头信息列表

Note: subscribedCameras中保存的是AVDCamera对象。

Declared In

AVDVideo.h

+ getVideo:

获取视频功能模块对象

+ (AVDVideo *)getVideo:(AVDRoom *)room

Return Value

返回视频模块对象。

Discussion

获取视频功能模块对象

@param[in] *room 房间对象指针

Declared In

AVDVideo.h

– previewLocalCamera:

预览本地缺省摄像头视频

- (AVDResult)previewLocalCamera:(id<AVDVideoRenderer>)render

Return Value

返回错误代码。

Discussion

预览本地缺省摄像头视频

@param[in] render 显示对象接口指针

Note: 本地视频在发布到会议前,可以调用此接口进行视频预览;视频发布到会议中后,需要使用attachRender接口来进行视频显示,此时此接口无效。

Declared In

AVDVideo.h

– unpreviewLocalCamera

取消预览缺省摄像头视频

- (AVDResult)unpreviewLocalCamera

Return Value

返回错误代码。

Discussion

取消预览缺省摄像头视频

Declared In

AVDVideo.h

– publishLocalCamera

发布缺省摄像头视频

- (AVDResult)publishLocalCamera

Return Value

返回错误代码。

Discussion

发布缺省摄像头视频

Note: 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。

Declared In

AVDVideo.h

– publishLocalCameraWithCamera:

发布摄像头视频

- (AVDResult)publishLocalCameraWithCamera:(AVDCamera *)camera

Return Value

返回错误代码。

Discussion

发布摄像头视频

@param[in] camera 摄像头信息。

Note: 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。

Declared In

AVDVideo.h

– unpublishLocalCamera

取消发布缺省摄像头视频

- (AVDResult)unpublishLocalCamera

Return Value

返回错误代码。

Discussion

取消发布缺省摄像头视频

Note: 取消发布操作为异步操作,操作结果在 onUnpublishLocalResult 中返回。

Declared In

AVDVideo.h

– unpublishLocalCamera:

取消发布摄像头视频

- (AVDResult)unpublishLocalCamera:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

取消发布摄像头视频

@param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。

Note: 取消发布操作为异步操作,操作结果在 onUnpublishLocalResult 中返回。

Declared In

AVDVideo.h

– ispublishLocalCamera

判断是否已经打开本地摄像头

- (BOOL)ispublishLocalCamera

Discussion

判断是否已经打开本地摄像头

Declared In

AVDVideo.h

– previewLocalCamera:render:

预览本机前置或者后置摄像头视频

- (AVDResult)previewLocalCamera:(enum AVDCameraType)type render:(id<AVDVideoRenderer>)render

Return Value

返回错误代码;若不支持此操作返回 Err_Not_Available。

Discussion

预览本机前置或者后置摄像头视频

@param[in] type 摄像头类型。 @param[in] render 显示对象接口指针

Note: 在前后置摄像头操作模式下有效;摄像头模式设置在AVDEngine的SetOption接口中实现;取消预览接口为unpreviewLocalCamera,无需参数。

Declared In

AVDVideo.h

– previewLocalCamera:capturer:render:

预览模拟摄像头视频

- (AVDResult)previewLocalCamera:(AVDCamera *)fakeDevice capturer:(AVDFakeVideoCapturer *)capturer render:(id<AVDVideoRenderer>)render

Return Value

返回错误代码。 模拟摄像头用于在房间中导入特定已经存在的视频数据流,比如视频文件、录播系统视频流等。

Discussion

预览模拟摄像头视频

@param[in,out] fakeDevice 模拟摄像头信息,接口会生成deviceId,生成规则:"userId“+(用户输入的deviceId), 此处deviceId不能包含'‘和’{‘、’}‘此三个字符。 @param[in] capturer 模拟摄像头视频输入接口。 @param[in] render 显示对象接口指针

Note: render 允许被设置为NULL。 fakeDevice.id 会按照3tee设备id规则重新构造成。 注意:此函数必须用 unpreviewLocalCamera(String deviceId)来取消发布,不能用无参数函数;

Declared In

AVDVideo.h

– unpreviewLocalCamera:

取消预览摄像头视频 @param[in] deviceId 摄像头Id。

- (AVDResult)unpreviewLocalCamera:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

取消预览摄像头视频 @param[in] deviceId 摄像头Id。

Declared In

AVDVideo.h

– publishLocalCamera:

发布特定类型摄像头视频

- (AVDResult)publishLocalCamera:(enum AVDCameraType)type

Return Value

返回错误代码;若不支持此操作返回 Err_Not_Available。

Discussion

发布特定类型摄像头视频

@param[in] type 摄像头类型。

Note: 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。在前后置摄像头操作模式下有效;取消预览接口为unpublishLocalCamera,无需参数。

Declared In

AVDVideo.h

– publishLocalCamera:capturer:

发布模拟摄像头视频

- (AVDResult)publishLocalCamera:(AVDCamera *)fakeDevice capturer:(AVDFakeVideoCapturer *)capturer

Return Value

返回错误代码。

Discussion

发布模拟摄像头视频

@param[in,out] fakeDevice 模拟摄像头信息,接口会生成deviceId,生成规则:"userId“+(用户输入的deviceId), 此处deviceId不能包含'‘和’{‘、’}‘此三个字符。 @param[in] capturer 模拟摄像头视频输入接口。

Note: 发布操作为异步操作,操作结果在 onPublishLocalResult 中返回。 模拟摄像头用于在房间中导入特定已经存在的视频数据流,比如视频文件、录播系统视频流等。 注意:此函数必须用 unpreviewLocalCamera(String deviceId)来取消发布,不能用无参数函数;

Declared In

AVDVideo.h

– switchToLocalCamera

切换特定类型摄像头视频源

- (AVDResult)switchToLocalCamera

Return Value

返回错误代码;若不支持此操作返回 Err_Not_Available。

Discussion

切换特定类型摄像头视频源

Note: 在前后置摄像头操作模式下有效。

Declared In

AVDVideo.h

– switchToLocalCameraWithType:

切换到特定类型摄像头视频源,同上 @param[in] toType 摄像头类型。

- (AVDResult)switchToLocalCameraWithType:(enum AVDCameraType)toType

Discussion

切换到特定类型摄像头视频源,同上 @param[in] toType 摄像头类型。

Declared In

AVDVideo.h

– getCurrentCameraType

获取当前使用的摄像头类型

- (enum AVDCameraType)getCurrentCameraType

Return Value

返回摄像头类型。

Discussion

获取当前使用的摄像头类型

Note: 在前后置摄像头操作模式下有效。

Declared In

AVDVideo.h

– updateCameraData:level:description:

摄像头数据更改

- (AVDResult)updateCameraData:(AVDDeviceId)deviceId level:(NSInteger)level description:(NSString *)description

Discussion

摄像头数据更改

@param[in] deviceId 摄像头Id,唯一标示一个摄像头。 @param[in] level 摄像头整形数据。 @param[in] description 摄像头字符串数据。

Declared In

AVDVideo.h

– getCamera:

获取指定类型的本机摄像头信息

- (AVDCamera *)getCamera:(enum AVDCameraType)type

Return Value

返回摄像头设备信息。

Discussion

获取指定类型的本机摄像头信息

@param[in] type 摄像头类型。

Declared In

AVDVideo.h

– getCameraWithId:

获取指定设备Id的摄像头信息

- (AVDCamera *)getCameraWithId:(AVDDeviceId)deviceId

Return Value

返回摄像头信息。

Discussion

获取指定设备Id的摄像头信息

@param[in] deviceId 设备Id。

Note: 可以返回本地用户和远端用户的摄像头信息。

Declared In

AVDVideo.h

– subscribe:

订阅摄像头视频

- (AVDResult)subscribe:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

订阅摄像头视频

@param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。

Note: 订阅操作为异步操作,操作结果在 onSubscribeResult 中返回。

Declared In

AVDVideo.h

– subscribe:stream:

订阅摄像头视频指定视频主辅流

- (AVDResult)subscribe:(AVDDeviceId)deviceId stream:(enum AVDStreamType)stream

Return Value

返回错误代码。

Discussion

订阅摄像头视频指定视频主辅流

@param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 @param[in] stream 指定视频流(主流,辅流1,辅流2)。

Note: 订阅说明如同名接口所描述。

Declared In

AVDVideo.h

– subscribe:quality:

订阅摄像头视频指定视频质量视频

- (AVDResult)subscribe:(AVDDeviceId)deviceId quality:(enum AVDQualityType)quality

Return Value

返回错误代码。

Discussion

订阅摄像头视频指定视频质量视频

@param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 @param[in] quality 订阅视频的清晰度要求。

Note: 订阅说明如同名接口所描述。 3.0版本后支持视频清晰度切换:发布视频时设置视频最大分辨率,通过此接口和changeSubscribedVideoQuality接口可以在整个 房间层级来更改订阅的视频的清晰度,但要求房间中所有人清晰度要求一致才生效(通过远端分辨率更改实现)。 如最大分辨率为 quality_high - 1280x720; 则:quality_normal - 640x360(high/2); quality_low - 320x240(normal/2)

Declared In

AVDVideo.h

– changeSubscribedVideoQuality:quality:

更改订阅视频的视频质量

- (AVDResult)changeSubscribedVideoQuality:(AVDDeviceId)deviceId quality:(enum AVDQualityType)quality

Return Value

返回错误代码。

Discussion

更改订阅视频的视频质量

@param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。 @param[in] quality 视频质量。

Declared In

AVDVideo.h

– unsubscribe:

取消订阅摄像头视频

- (AVDResult)unsubscribe:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

取消订阅摄像头视频

@param[in] deviceId 摄像头Id,唯一标示一路摄像头视频。

Note: 取消订阅操作为异步操作,操作结果在 onUnsubscribeResult 中返回。

Declared In

AVDVideo.h

– isCameraPublished:

判断摄像头是否已经发布到房间中

- (BOOL)isCameraPublished:(AVDDeviceId)fromId

Discussion

判断摄像头是否已经发布到房间中

Declared In

AVDVideo.h

– isCameraSubscribed:

判断摄像头是否已经被本用户订阅

- (BOOL)isCameraSubscribed:(AVDDeviceId)fromId

Discussion

判断摄像头是否已经被本用户订阅

Declared In

AVDVideo.h

– remotecmdPublishCamera:

命令远端用户发布某一摄像头视频 @param[in] *device 摄像头信息。

- (AVDResult)remotecmdPublishCamera:(AVDCamera *)device

Return Value

返回错误代码。

Discussion

命令远端用户发布某一摄像头视频 @param[in] *device 摄像头信息。

Declared In

AVDVideo.h

– remotecmdUnpublishCamera:

命令远端用户取消发布摄像头视频 @param[in] deviceId 摄像头Id。

- (AVDResult)remotecmdUnpublishCamera:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

命令远端用户取消发布摄像头视频 @param[in] deviceId 摄像头Id。

Declared In

AVDVideo.h

– attachRenderWithDeviceId:render:

关联视频数据和显示对象,在render中显示视频

- (AVDResult)attachRenderWithDeviceId:(AVDDeviceId)deviceId render:(id<AVDVideoRenderer>)render

Return Value

返回错误代码。

Discussion

关联视频数据和显示对象,在render中显示视频

@param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。 @param[in] render 显示对象接口指针。

Note: 视频数据可以在多个显示对象上显示,而一个显示对象某一时刻只能显示一路视频。 在本地视频发布到房间中,或者远端视频订阅成功后,调用此接口完成视频与显示对象的对接,从而在显示对象中显示视频。

Declared In

AVDVideo.h

– detachRenderWithDeviceId:

解除摄像头视频数据的所有显示对象关联

- (AVDResult)detachRenderWithDeviceId:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

解除摄像头视频数据的所有显示对象关联

@param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。

Declared In

AVDVideo.h

– detachRenderWithRender:

解除某一显示对象与摄像头视频数据的关联

- (AVDResult)detachRenderWithRender:(id<AVDVideoRenderer>)render

Discussion

解除某一显示对象与摄像头视频数据的关联

@param[in] render 显示对象接口指针。

Declared In

AVDVideo.h

– getCameraByUserId:

获取某一用户的缺省摄像头对象

- (AVDCamera *)getCameraByUserId:(AVDUserId)userId

Discussion

获取某一用户的缺省摄像头对象

@param[in] userId 用户号。

Declared In

AVDVideo.h

– getRemoteCamerasByUserId:

获取某一用户的摄像头列表

- (NSArray *)getRemoteCamerasByUserId:(AVDUserId)userId

Discussion

获取某一用户的摄像头列表

@param[in] userId 用户号。

Declared In

AVDVideo.h

– setMixerDateRender:

设置获取视频数据回调接口,此数据仅回调一份数据:数据为主视频+各个Overlay的视频,视频大小为主视频大小;如使用ILivecast接口,不需要设置此接口。

- (AVDResult)setMixerDateRender:(id<AVDVideoRenderer>)render

Return Value

返回错误代码。

Discussion

设置获取视频数据回调接口,此数据仅回调一份数据:数据为主视频+各个Overlay的视频,视频大小为主视频大小;如使用ILivecast接口,不需要设置此接口。

@param[in] render 显示对象接口指针。

Note: 显示且回调数据时调用setVideoMixerListener,设置render为AVDVideoView,同时对AVDVideoView的callbacks代理设置回调接口; 只需要回调数据时调用setVideoMixerListener2; 两个函数只能调用一个

Declared In

AVDVideo.h

– setMixerDateListener:

同上: @param[in] cb 回调数据接口指针。

- (AVDResult)setMixerDateListener:(id<AVDVideoRendererCallBacks>)cb

Discussion

同上: @param[in] cb 回调数据接口指针。

Declared In

AVDVideo.h

– setMixerMainVideo:

设置回调视频数据的视频主视频

- (AVDResult)setMixerMainVideo:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

设置回调视频数据的视频主视频

@param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。

Note: 设置混屏的主视频等效于,setMixerVideoSize为主视频大小,同时addMixerOverlayVideo将主视频加入到混屏中,且充满全屏。

Declared In

AVDVideo.h

– setMixerVideoSize:height:background:

设置混频后视频数据的尺寸

- (AVDResult)setMixerVideoSize:(NSUInteger)width height:(NSUInteger)height background:(NSString *)background

Return Value

返回错误代码。

Discussion

设置混频后视频数据的尺寸

@param[in] width 视频图像宽。 @param[in] height 视频图像高。 @param[in] background 背景图。

Declared In

AVDVideo.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

返回错误代码。

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

Declared In

AVDVideo.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

返回错误代码。

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

Declared In

AVDVideo.h

– 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

Declared In

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

Declared In

AVDVideo.h

– removeMixerOverlayVideo:

移除主视频上的某一视频

- (AVDResult)removeMixerOverlayVideo:(AVDDeviceId)deviceId

Return Value

返回错误代码。

Discussion

移除主视频上的某一视频

@param[in] deviceId 摄像头Id,唯一标示一路共享的摄像头视频。

Declared In

AVDVideo.h

– clearMixerVideos

清理掉所有的混屏视频,包括主视频;如果需要再次开启合屏,需要重新设置主视频和Overlay视频。

- (AVDResult)clearMixerVideos

Return Value

返回错误代码。

Discussion

清理掉所有的混屏视频,包括主视频;如果需要再次开启合屏,需要重新设置主视频和Overlay视频。

Declared In

AVDVideo.h

– setVideoBitrate:min:max:

设置视频动态码率调整的范围,最小和最大比特率,

- (AVDResult)setVideoBitrate:(AVDDeviceId)deviceId min:(NSInteger)minBitrateBps max:(NSInteger)maxBitrateBps

Return Value

返回错误代码。

Discussion

设置视频动态码率调整的范围,最小和最大比特率,

@param[in] deviceId 视频设备对应ID。 @param[in] minBitrateBps 最小比特率,单位bps。 @param[in] maxBitrateBps 最大比特率,单位bps。

Note: 例如30k/s = 3081000 bps(bits/s)。当min和max相等时,码率固定,将不会动态调整。

Declared In

AVDVideo.h

+ setCapturerSupportOrientation:

设置摄像头支持视频采集方向

+ (BOOL)setCapturerSupportOrientation:(AVDCaptureOrientation)orientation

Parameters

Orientation

Orientation

Discussion

设置摄像头支持视频采集方向

Declared In

AVDVideo.h

+ setAutorotate:

设置是否支持旋转

+ (void)setAutorotate:(BOOL)autorotate

Discussion

设置是否支持旋转

@param autorotate

Declared In

AVDVideo.h

+ setCapturerDefaultOrientation:

设置摄像头默认采集方向

+ (void)setCapturerDefaultOrientation:(AVDCaptureOrientation)Orientation

Discussion

设置摄像头默认采集方向

@param Orientation

Declared In

AVDVideo.h

– setPublishVideoKeepAliveTime:

设置当前视频流推送的保活时长

- (void)setPublishVideoKeepAliveTime:(NSInteger)time

Parameters

time

保活时长(单位为毫秒)

Discussion

设置当前视频流推送的保活时长

Declared In

AVDVideo.h