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< JCMediaDeviceCameracameras [get]
 
List< JCMediaDeviceAudioaudioInputs [get]
 
List< JCMediaDeviceAudioaudioOutputs [get]
 
List< JCMediaDeviceWindowwindows [get]
 
List< JCMediaDeviceWindowdesktops [get]
 
JCMediaDeviceWindow screenshareWindow [get, set]
 
bool audioStart [get]
 

详细描述

设备模块

成员函数说明

◆ create()

static JCMediaDevice JCSDK.JCMediaDevice.JCMediaDevice.create ( JCClient.JCClient  client,
JCMediaDeviceCallback  callback 
)
static

创建 JCMediaDevice 对象

JCMediaDevice 的所有接口函数,如无特殊说明,都建议在主线程调用

注解
  • 调用此方法创建 JCMediaDevice 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCMediaDevice 对象
  • 调用此方法前确保 JCClient 已完成初始化,即 state 状态值不等于 NotInit
参数
clientJCClient 对象
callbackJCMediaDeviceCallback 对象,用于回调相关通知
返回
JCMediaDevice 对象
异常
client、callback 任意一个参数传空就会调用失败

◆ destroy()

static void JCSDK.JCMediaDevice.JCMediaDevice.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 给出 onAudioInputFrameonAudioOutputFrame 回调时,需要使用该方法注册回调。该方法需要在加入频道前或开始通话前调用

参数
callbackJCAudioFrameCallback 对象。传入 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 
)

逐帧采集视频画面

调用此方法时要保证文件视频源已开启

注解
当 format 为 H264 格式并且是关键帧时:
  • 第一帧一定要包含关键帧,并且需要将 0x67 0x68 0x65 的数据作为完整一帧传入,其中0x67,0x68为pps,0x65为关键帧标识
  • 后续P帧以 0x41 数据形式传入
  • 关键帧要以固定间隔传入,例如5秒,否则一开始可能有几秒对端无法显示视频
参数
data画面二进制数据
format视频像素格式
width
height

◆ setVideoFrameCallback()

void JCSDK.JCMediaDevice.JCMediaDevice.setVideoFrameCallback ( JCVideoFrameCallback  callback)

设置视频观测器对象

该方法用于设置视频观测器对象,即注册回调。当需要 SDK 给出 onVideoCaptureFrameonVideoRenderFrame 回调时,需要使用该方法注册回调。 该方法需要在加入频道前或开始通话前调用

参数
callbackJCVideoFrameCallback 对象。传入 null 表示取消注册。我们建议在收到 onLeave 或 onCallItemRemove 或 onCallItemRemove 后调用,来释放语音观测器对象。

◆ startAudio()

bool JCSDK.JCMediaDevice.JCMediaDevice.startAudio ( )

启动音频

在通话连接中或者加入频道成功时,SDK内部会自动调用此方法来启动音频,上层无需再调用此方法

返回
调用是否成功
  • true:调用成功
  • false:调用失败

◆ startCamera()

bool JCSDK.JCMediaDevice.JCMediaDevice.startCamera ( )

开启摄像头

注解
调用此方法时需要保证默认摄像头不为空,即 defaultCamera 不为空,否则将直接返回 false
返回
调用是否成功
  • true:正常执行调用流程
    • 若调用此方法前摄像头已打开,不会收到回调通知
    • 若调用此方法前摄像头未打开,会收到 onCameraUpdate 通知
  • false:调用失败

◆ startCameraVideo()

JCMediaDeviceVideoCanvas JCSDK.JCMediaDevice.JCMediaDevice.startCameraVideo ( JCMediaDeviceRenderMode  mode)

开始自身视频渲染

获取本端视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示

一对一通话建议使用 startSelfVideo 方法代替,多方通话建议使用 startVideo 方法代替

注解
调用此方法时需要保证默认摄像头不为空,即 defaultCamera 不为空,否则将直接返回 null
参数
mode渲染模式:
返回

◆ startVideo()

JCMediaDeviceVideoCanvas JCSDK.JCMediaDevice.JCMediaDevice.startVideo ( string  videoSource,
JCMediaDeviceRenderMode  mode 
)

开始其他端的视频渲染

获取其他端的视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示

一对一通话建议使用 startOtherVideo 方法代替,多方通话建议使用 startVideo 方法代替

参数
videoSource渲染标识串,通过 JCMediaChannelParticipantrenderId 方法和 JCCallItemrenderId 方法可以得到
mode渲染模式:
返回

◆ startVideoFile()

bool JCSDK.JCMediaDevice.JCMediaDevice.startVideoFile ( )

开启视频文件作为视频输入源

注解
文件和摄像头作为视频输入源只能存在一种,如果当前摄像头已开启的话会关闭摄像头
返回
调用是否成功
  • true:正常执行调用流程
    • 若调用此方法时文件视频源已开启,则不会收到回调
    • 若调用此方法时文件视频源还未开启,则会收到 onCameraUpdate 回调
  • false:调用失败,不会收到回调

◆ stopAudio()

bool JCSDK.JCMediaDevice.JCMediaDevice.stopAudio ( )

停止音频

在通话挂断时或者离开频道时,SDK内部会自动调用此方法来停止音频,上层无需再调用此方法

返回
调用是否成功
  • true:调用成功
  • false:调用失败

◆ stopCamera()

bool JCSDK.JCMediaDevice.JCMediaDevice.stopCamera ( )

关闭摄像头

返回
调用是否成功
  • true:正常执行调用流程
    • 调用此方法前摄像头已打开,不会收到回调通知
    • 调用此方法前摄像头未打开,会收到 onCameraUpdate 通知
  • false:调用失败

◆ stopVideo()

void JCSDK.JCMediaDevice.JCMediaDevice.stopVideo ( JCMediaDeviceVideoCanvas  canvas)

停止视频渲染

一对一通话建议使用 stopSelfVideostopOtherVideo 方法代替,多方通话渲染建议使用 stopVideo 方法代替

参数
canvasJCMediaDeviceVideoCanvas 对象,由 startVideostartCameraVideo 返回

◆ stopVideoFile()

bool JCSDK.JCMediaDevice.JCMediaDevice.stopVideoFile ( )

关闭逐帧采集画面

返回
调用是否成功
  • true:正常执行调用流程
    • 若调用此方法时文件视频源已关闭,不会收到回调
    • 若调用此方法时文件视频源未关闭,则会收到 onCameraUpdate 回调
  • false:调用失败

◆ switchCamera()

bool JCSDK.JCMediaDevice.JCMediaDevice.switchCamera ( JCMediaDeviceCamera  camera)

切换摄像头

内部会根据当前摄像头类型来进行切换

  • 调用此方法时要保证摄像头已打开,否则将直接返回 false
  • 设备拥有两个以上摄像头,否则将直接返回 true
返回
调用是否成功
  • true:调用成功
  • false:调用失败

属性说明

◆ audioInput

JCMediaDeviceAudio JCSDK.JCMediaDevice.JCMediaDevice.audioInput
getset

当前音频输入设备

◆ audioInputs

List<JCMediaDeviceAudio> JCSDK.JCMediaDevice.JCMediaDevice.audioInputs
get

音频输入设备列表

◆ audioOutput

JCMediaDeviceAudio JCSDK.JCMediaDevice.JCMediaDevice.audioOutput
getset

当前音频输出设备

◆ audioOutputs

List<JCMediaDeviceAudio> JCSDK.JCMediaDevice.JCMediaDevice.audioOutputs
get

音频输出设备列表

◆ audioParam

JCMediaDeviceAudioParam JCSDK.JCMediaDevice.JCMediaDevice.audioParam
get

设备音频参数

此参数不设置,将使用默认值。此参数在调用 startAudio 方法前设置,即连接通话或加入频道前设置此参数

◆ audioStart

bool JCSDK.JCMediaDevice.JCMediaDevice.audioStart
get

音频是否启动

一般正式开启通话前需要调用此接口

  • true:已启动
  • false:未启动

◆ camera

JCMediaDeviceCamera JCSDK.JCMediaDevice.JCMediaDevice.camera
getset

当前使用的摄像头

◆ cameraOpen

bool JCSDK.JCMediaDevice.JCMediaDevice.cameraOpen
get

摄像头是否已打开

  • true: 已打开
  • false: 未打开

◆ cameras

List<JCMediaDeviceCamera> JCSDK.JCMediaDevice.JCMediaDevice.cameras
get

摄像头列表

◆ defaultCamera

JCMediaDeviceCamera JCSDK.JCMediaDevice.JCMediaDevice.defaultCamera
getset

默认摄像头

◆ desktops

List<JCMediaDeviceWindow> JCSDK.JCMediaDevice.JCMediaDevice.desktops
get

桌面列表

◆ screenshareWindow

JCMediaDeviceWindow JCSDK.JCMediaDevice.JCMediaDevice.screenshareWindow
getset

屏幕分享的窗口

◆ videoFileId

string JCSDK.JCMediaDevice.JCMediaDevice.videoFileId
get

视频文件作为本地视频源的渲染标识

◆ videoFileOpen

bool JCSDK.JCMediaDevice.JCMediaDevice.videoFileOpen
get

文件播放是否打开

  • true: 已打开文件播放
  • false: 未打开文件播放

◆ windows

List<JCMediaDeviceWindow> JCSDK.JCMediaDevice.JCMediaDevice.windows
get

窗口列表


该类的文档由以下文件生成:
  • JCSDK/JCSDK/JCMediaDevice/JCMediaDevice.cs