Public 成员函数 | |
JCMediaDeviceVideoCanvas | startCameraVideo (JCMediaDeviceRenderMode mode) |
JCMediaDeviceVideoCanvas | startVideo (string videoSource, JCMediaDeviceRenderMode mode) |
void | stopVideo (JCMediaDeviceVideoCanvas canvas) |
bool | startAudio () |
bool | stopAudio () |
bool | startCamera () |
bool | stopCamera () |
bool | switchCamera (JCMediaDeviceCamera camera) |
void | setCameraProperty (int width, int height, int framerate) |
void | setScreenCaptureProperty (int width, int height, int framerate) |
bool | startVideoFile () |
void | setVideoFileFrame (byte[] srcFrame, JCMediaDeviceVideoPixelFormat format, int width, int height) |
bool | stopVideoFile () |
void | setAudioFrameCallback (JCAudioFrameCallback callback) |
void | setVideoFrameCallback (JCVideoFrameCallback callback) |
bool | inputCustomAudioData (int sampleRateHz, int channels, byte[] buf, int len, int playDelayMS, int recDelayMS, int clockDrift) |
bool | getAudioOutputData (int sampleRateHz, int channels, byte[] buf, int len) |
静态 Public 成员函数 | |
static JCMediaDevice | create (JCClient.JCClient client, JCMediaDeviceCallback callback) |
static void | destroy () |
属性 | |
string | videoFileId [get] |
bool | cameraOpen [get] |
bool | videoFileOpen [get] |
JCMediaDeviceCamera | camera [get, set] |
JCMediaDeviceCamera | defaultCamera [get, set] |
JCMediaDeviceAudioParam | audioParam [get] |
JCMediaDeviceAudio | audioInput [get, set] |
JCMediaDeviceAudio | audioOutput [get, set] |
List< JCMediaDeviceCamera > | cameras [get] |
List< JCMediaDeviceAudio > | audioInputs [get] |
List< JCMediaDeviceAudio > | audioOutputs [get] |
List< JCMediaDeviceWindow > | windows [get] |
List< JCMediaDeviceWindow > | desktops [get] |
JCMediaDeviceWindow | screenshareWindow [get, set] |
bool | audioStart [get] |
详细描述
设备模块
成员函数说明
◆ create()
|
static |
创建 JCMediaDevice 对象
JCMediaDevice 的所有接口函数,如无特殊说明,都建议在主线程调用
- 注解
- 调用此方法创建 JCMediaDevice 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCMediaDevice 对象
- 调用此方法前确保 JCClient 已完成初始化,即 state 状态值不等于 NotInit
- 参数
-
client JCClient 对象 callback JCMediaDeviceCallback 对象,用于回调相关通知
- 返回
- JCMediaDevice 对象
- 异常
-
client、callback 任意一个参数传空就会调用失败
◆ destroy()
|
static |
销毁 JCMediaDevice 对象
该方法为同步调用,需要等待 JCMediaDevice 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCMediaDevice 的其它方法和回调。
我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCMediaDevice 对象,否则会出现崩溃。
如需在销毁后再次创建 JCMediaDevice 实例,需要等待 destroy 方法执行结束后再创建实例。
◆ getAudioOutputData()
bool JCSDK.JCMediaDevice.JCMediaDevice.getAudioOutputData | ( | int | sampleRateHz, |
int | channels, | ||
byte[] | buf, | ||
int | len | ||
) |
获取音频输出数据
当 autoStartAudioOutputDevice 为 false 时才可以获取到音频输出数据。 建议在一对一通话状态为连接中时或者加入频道成功后,在子线程不断的调用此方法获取音频输出数据
- 参数
-
sampleRateHz 输出源的采集频率,取值范围:8000,16000,32000,44100,48000 channels 输出源的采样通道数,取值范围:1或2 buf 字节缓冲区,从媒体层获取的音频输出数据将被存入此缓冲区,需要传入 byte[] 对象。缓冲区的容量为(采样频率*采样通道数/100) len 音频输出数据的字节长度,即 buf 参数的字节长度
- 返回
- 是否正常调用
- true: 正常执行调用流程
- false: 调用失败
◆ inputCustomAudioData()
bool JCSDK.JCMediaDevice.JCMediaDevice.inputCustomAudioData | ( | int | sampleRateHz, |
int | channels, | ||
byte[] | buf, | ||
int | len, | ||
int | playDelayMS, | ||
int | recDelayMS, | ||
int | clockDrift | ||
) |
将音频输入数据输入到媒体层
当 autoStartAudioInputDevice 为 false 时才可以将音频输入数据输入到媒体层。 建议在一对一通话状态为连接中时或者加入频道成功后,在子线程不断的调用此方法传入音频数据
- 参数
-
sampleRateHz 外部输入源的采样频率,取值范围:8000,16000,32000,44100,48000 channels 外部输入源的采样通道数,取值范围:1或2 buf 外部采集数据源,需要传入 byte[] 对象 len 外部采集数据的字节长度,即 buf 参数的字节长度 playDelayMS 播放延时 一般设为0 recDelayMS 采集延时 一般设为0 clockDrift 时钟漂移 一般设为0
- 返回
- 是否正常调用
- true: 正常执行调用流程
- false: 调用失败
◆ setAudioFrameCallback()
void JCSDK.JCMediaDevice.JCMediaDevice.setAudioFrameCallback | ( | JCAudioFrameCallback | callback | ) |
设置语音观测器对象
该方法用于设置语音观测器对象,即注册回调。当需要 SDK 给出 onAudioInputFrame 或 onAudioOutputFrame 回调时,需要使用该方法注册回调。该方法需要在加入频道前或开始通话前调用
- 参数
-
callback JCAudioFrameCallback 对象。传入 null 表示取消注册。我们建议在收到 onLeave 或 onCallItemRemove 或 onCallItemRemove 后调用,来释放语音观测器对象。
◆ setCameraProperty()
void JCSDK.JCMediaDevice.JCMediaDevice.setCameraProperty | ( | int | width, |
int | height, | ||
int | framerate | ||
) |
设置摄像头采集属性
在调用 startSelfVideo 方法或 startVideo 方法开启自身视频渲染前设置即可生效
- 参数
-
width 采集宽度,默认640 height 采集高度,默认360 frameRate 采集帧速率,默认24
◆ setScreenCaptureProperty()
void JCSDK.JCMediaDevice.JCMediaDevice.setScreenCaptureProperty | ( | int | width, |
int | height, | ||
int | framerate | ||
) |
设置屏幕共享采集属性
在调用 enableScreenOrWindowShare 方法开启屏幕共享前设置即可生效
- 参数
-
width 采集宽度,默认1280 height 采集高度,默认720 frameRate 采集帧速率,默认10
◆ setVideoFileFrame()
void JCSDK.JCMediaDevice.JCMediaDevice.setVideoFileFrame | ( | byte[] | srcFrame, |
JCMediaDeviceVideoPixelFormat | format, | ||
int | width, | ||
int | height | ||
) |
◆ setVideoFrameCallback()
void JCSDK.JCMediaDevice.JCMediaDevice.setVideoFrameCallback | ( | JCVideoFrameCallback | callback | ) |
设置视频观测器对象
该方法用于设置视频观测器对象,即注册回调。当需要 SDK 给出 onVideoCaptureFrame 或 onVideoRenderFrame 回调时,需要使用该方法注册回调。 该方法需要在加入频道前或开始通话前调用
- 参数
-
callback JCVideoFrameCallback 对象。传入 null 表示取消注册。我们建议在收到 onLeave 或 onCallItemRemove 或 onCallItemRemove 后调用,来释放语音观测器对象。
◆ startAudio()
bool JCSDK.JCMediaDevice.JCMediaDevice.startAudio | ( | ) |
启动音频
在通话连接中或者加入频道成功时,SDK内部会自动调用此方法来启动音频,上层无需再调用此方法
- 返回
- 调用是否成功
- true:调用成功
- false:调用失败
◆ startCamera()
bool JCSDK.JCMediaDevice.JCMediaDevice.startCamera | ( | ) |
开启摄像头
- 注解
- 调用此方法时需要保证默认摄像头不为空,即 defaultCamera 不为空,否则将直接返回 false
- 返回
- 调用是否成功
- true:正常执行调用流程
- 若调用此方法前摄像头已打开,不会收到回调通知
- 若调用此方法前摄像头未打开,会收到 onCameraUpdate 通知
- false:调用失败
- true:正常执行调用流程
◆ startCameraVideo()
JCMediaDeviceVideoCanvas JCSDK.JCMediaDevice.JCMediaDevice.startCameraVideo | ( | JCMediaDeviceRenderMode | mode | ) |
开始自身视频渲染
获取本端视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示
一对一通话建议使用 startSelfVideo 方法代替,多方通话建议使用 startVideo 方法代替
- 注解
- 调用此方法时需要保证默认摄像头不为空,即 defaultCamera 不为空,否则将直接返回 null
- 参数
-
mode 渲染模式: - FullScreen : 铺满窗口,会有裁剪
- FullContent : 全图像显示,会有黑边
- FullAuto : 自适应
- 返回
- JCMediaDeviceVideoCanvas 对象:开始自身视频渲染成功
- null:开始自身视频渲染失败
◆ startVideo()
JCMediaDeviceVideoCanvas JCSDK.JCMediaDevice.JCMediaDevice.startVideo | ( | string | videoSource, |
JCMediaDeviceRenderMode | mode | ||
) |
开始其他端的视频渲染
获取其他端的视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示
一对一通话建议使用 startOtherVideo 方法代替,多方通话建议使用 startVideo 方法代替
- 参数
-
videoSource 渲染标识串,通过 JCMediaChannelParticipant 的 renderId 方法和 JCCallItem 的 renderId 方法可以得到 mode 渲染模式: - FullScreen : 铺满窗口,会有裁剪
- FullContent : 全图像显示,会有黑边
- FullAuto : 自适应
- 返回
- JCMediaDeviceVideoCanvas 对象:开始自身视频渲染成功
- null:开始自身视频渲染失败
◆ startVideoFile()
bool JCSDK.JCMediaDevice.JCMediaDevice.startVideoFile | ( | ) |
开启视频文件作为视频输入源
- 注解
- 加入会议前或者一对一通话接听前调用
- 文件和摄像头作为视频输入源只能存在一种,如果当前摄像头已开启的话会关闭摄像头
- 返回
- 调用是否成功
- true:正常执行调用流程
- 若调用此方法时文件视频源已开启,则不会收到回调
- 若调用此方法时文件视频源还未开启,则会收到 onCameraUpdate 回调
- false:调用失败,不会收到回调
- true:正常执行调用流程
◆ stopAudio()
bool JCSDK.JCMediaDevice.JCMediaDevice.stopAudio | ( | ) |
停止音频
在通话挂断时或者离开频道时,SDK内部会自动调用此方法来停止音频,上层无需再调用此方法
- 返回
- 调用是否成功
- true:调用成功
- false:调用失败
◆ stopCamera()
bool JCSDK.JCMediaDevice.JCMediaDevice.stopCamera | ( | ) |
关闭摄像头
- 返回
- 调用是否成功
- true:正常执行调用流程
- 调用此方法前摄像头已打开,不会收到回调通知
- 调用此方法前摄像头未打开,会收到 onCameraUpdate 通知
- false:调用失败
- true:正常执行调用流程
◆ stopVideo()
void JCSDK.JCMediaDevice.JCMediaDevice.stopVideo | ( | JCMediaDeviceVideoCanvas | canvas | ) |
停止视频渲染
一对一通话建议使用 stopSelfVideo 和 stopOtherVideo 方法代替,多方通话渲染建议使用 stopVideo 方法代替
- 参数
-
canvas JCMediaDeviceVideoCanvas 对象,由 startVideo 或 startCameraVideo 返回
◆ stopVideoFile()
bool JCSDK.JCMediaDevice.JCMediaDevice.stopVideoFile | ( | ) |
关闭逐帧采集画面
- 返回
- 调用是否成功
- true:正常执行调用流程
- 若调用此方法时文件视频源已关闭,不会收到回调
- 若调用此方法时文件视频源未关闭,则会收到 onCameraUpdate 回调
- false:调用失败
- true:正常执行调用流程
◆ switchCamera()
bool JCSDK.JCMediaDevice.JCMediaDevice.switchCamera | ( | JCMediaDeviceCamera | camera | ) |
切换摄像头
内部会根据当前摄像头类型来进行切换
- 调用此方法时要保证摄像头已打开,否则将直接返回 false
- 设备拥有两个以上摄像头,否则将直接返回 true
- 返回
- 调用是否成功
- true:调用成功
- false:调用失败
属性说明
◆ audioInput
|
getset |
当前音频输入设备
◆ audioInputs
|
get |
音频输入设备列表
◆ audioOutput
|
getset |
当前音频输出设备
◆ audioOutputs
|
get |
音频输出设备列表
◆ audioParam
|
get |
设备音频参数
此参数不设置,将使用默认值。此参数在调用 startAudio 方法前设置,即连接通话或加入频道前设置此参数
◆ audioStart
|
get |
音频是否启动
一般正式开启通话前需要调用此接口
- true:已启动
- false:未启动
◆ camera
|
getset |
当前使用的摄像头
◆ cameraOpen
|
get |
摄像头是否已打开
- true: 已打开
- false: 未打开
◆ cameras
|
get |
摄像头列表
◆ defaultCamera
|
getset |
默认摄像头
◆ desktops
|
get |
桌面列表
◆ screenshareWindow
|
getset |
屏幕分享的窗口
◆ videoFileId
|
get |
视频文件作为本地视频源的渲染标识
◆ videoFileOpen
|
get |
文件播放是否打开
- true: 已打开文件播放
- false: 未打开文件播放
◆ windows
|
get |
窗口列表
该类的文档由以下文件生成:
- JCSDK/JCSDK/JCMediaDevice/JCMediaDevice.cs