Public 成员函数

virtual JCMediaDeviceVideoCanvasstartCameraVideo (void *view, JCMediaDeviceRenderMode mode)=0
 
virtual JCMediaDeviceVideoCanvasstartVideo (void *view, const char *videoSource, JCMediaDeviceRenderMode mode)=0
 
virtual void stopVideo (JCMediaDeviceVideoCanvas *canvas)=0
 
virtual bool startAudio ()=0
 
virtual bool stopAudio ()=0
 
virtual bool startCamera ()=0
 
virtual bool stopCamera ()=0
 
virtual bool switchCamera (JCMediaDeviceCamera camera)=0
 
virtual void setCameraProperty (int width, int height, int framerate)=0
 
virtual void setScreenCaptureProperty (int width, int height, int framerate)=0
 
virtual bool startVideoFile ()=0
 
virtual void setVideoFileFrame (BYTE *srcFrame, JCMediaDeviceVideoPixelFormat format, int width, int height)=0
 
virtual bool stopVideoFile ()=0
 
virtual const char * getVideoFileId ()=0
 
virtual bool isCameraOpen ()=0
 
virtual bool isVideoFileOpen ()=0
 
virtual JCMediaDeviceCamera getCamera ()=0
 
virtual std::list< JCMediaDeviceCamera > * getCameras ()=0
 
virtual std::list< JCMediaDeviceAudio > * getAudioInputs ()=0
 
virtual std::list< JCMediaDeviceAudio > * getAudioOutputs ()=0
 
virtual std::list< JCMediaDeviceWindow > * getWindows ()=0
 
virtual std::list< JCMediaDeviceWindow > * getDesktops ()=0
 
virtual bool isAudioStart ()=0
 
virtual JCMediaDeviceAudioParamgetAudioParam ()=0
 
virtual void setAudioParam (JCMediaDeviceAudioParam *param)=0
 
virtual void setAudioFrameCallback (JCAudioFrameCallback *callback)=0
 
virtual void setVideoFrameCallback (JCVideoFrameCallback *callback)=0
 
virtual bool inputCustomAudioData (int sampleRateHz, int channels, unsigned char *byteBuffer, int len, int playDelayMS, int recDelayMS, int clockDrift)=0
 
virtual bool getAudioOutputData (int sampleRateHz, int channels, unsigned char *byteBuffer, int len)=0
 

Public 属性

JCMediaDeviceCamera defaultCamera
 
JCMediaDeviceAudio audioIntput
 
JCMediaDeviceAudio audioOutput
 
JCMediaDeviceWindow screenshareWindow
 

详细描述

用于管理设备

成员函数说明

◆ getAudioInputs()

virtual std::list<JCMediaDeviceAudio>* JCMediaDevice::getAudioInputs ( )
pure virtual

获得当前音频输入设备

返回
当前音频输入设备

◆ getAudioOutputData()

virtual bool JCMediaDevice::getAudioOutputData ( int  sampleRateHz,
int  channels,
unsigned char *  byteBuffer,
int  len 
)
pure virtual

获取音频输出数据

autoStartAudioOutputDevice 为 false 时才可以获取到音频输出数据。 建议在一对一通话状态为连接中时或者加入频道成功后,在子线程不断的调用此方法获取音频输出数据

参数
sampleRateHz输出源的采集频率,取值范围:8000,16000,32000,44100,48000
channels输出源的采样通道数,取值范围:1或2
byteBuffer字节缓冲区,从媒体层获取的音频输出数据将被存入此缓冲区,需要传入 DirectByteBuffer 对象。缓冲区的容量为(采样频率*采样通道数/100)
len缓冲区数据长度
返回
是否正常调用
  • true: 正常执行调用流程
  • false: 调用失败

◆ getAudioOutputs()

virtual std::list<JCMediaDeviceAudio>* JCMediaDevice::getAudioOutputs ( )
pure virtual

获得当前音频输出设备

返回
当前音频输出设备

◆ getAudioParam()

virtual JCMediaDeviceAudioParam* JCMediaDevice::getAudioParam ( )
pure virtual

获得音频参数

返回
JCMediaDeviceAudioParam 音频参数

◆ getCamera()

virtual JCMediaDeviceCamera JCMediaDevice::getCamera ( )
pure virtual

获取当前的摄像头

返回
JCMediaDeviceCamera 对象,当前摄像头

◆ getCameras()

virtual std::list<JCMediaDeviceCamera>* JCMediaDevice::getCameras ( )
pure virtual

获取摄像头列表

返回
摄像头列表

◆ getDesktops()

virtual std::list<JCMediaDeviceWindow>* JCMediaDevice::getDesktops ( )
pure virtual

获得当前桌面列表

返回
当前桌面列表

◆ getVideoFileId()

virtual const char* JCMediaDevice::getVideoFileId ( )
pure virtual

获取文件视频源渲染id

返回
文件视频源渲染id

◆ getWindows()

virtual std::list<JCMediaDeviceWindow>* JCMediaDevice::getWindows ( )
pure virtual

获得当前窗口列表

返回
当前窗口列表

◆ inputCustomAudioData()

virtual bool JCMediaDevice::inputCustomAudioData ( int  sampleRateHz,
int  channels,
unsigned char *  byteBuffer,
int  len,
int  playDelayMS,
int  recDelayMS,
int  clockDrift 
)
pure virtual

将音频输入数据输入到媒体层

autoStartAudioInputDevice 为 false 时才可以将音频输入数据输入到媒体层。 建议在一对一通话状态为连接中时或者加入频道成功后,在子线程不断的调用此方法传入音频数据

参数
sampleRateHz外部输入源的采样频率,取值范围:8000,16000,32000,44100,48000
channels外部输入源的采样通道数,取值范围:1或2
byteBuffer外部采集数据
len外部采集数据长度
playDelayMS播放延时 一般设为0
recDelayMS采集延时 一般设为0
clockDrift时钟漂移 一般设为0
返回
是否正常调用
  • true: 正常执行调用流程
  • false: 调用失败

◆ isAudioStart()

virtual bool JCMediaDevice::isAudioStart ( )
pure virtual

音频是否已打开

返回
音频是否已打开
  • true: 已打开
  • false: 未打开

◆ isCameraOpen()

virtual bool JCMediaDevice::isCameraOpen ( )
pure virtual

摄像头是否已打开

返回
摄像头是否打开
  • true: 已打开
  • false: 未打开

◆ isVideoFileOpen()

virtual bool JCMediaDevice::isVideoFileOpen ( )
pure virtual

文件视频源是否已开启

返回
文件视频源是否已开启
  • true: 已开启
  • false: 未开启

◆ setAudioFrameCallback()

virtual void JCMediaDevice::setAudioFrameCallback ( JCAudioFrameCallback callback)
pure virtual

设置语音观测器对象

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

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

◆ setAudioParam()

virtual void JCMediaDevice::setAudioParam ( JCMediaDeviceAudioParam param)
pure virtual

设置音频参数

参数
param音频参数

◆ setCameraProperty()

virtual void JCMediaDevice::setCameraProperty ( int  width,
int  height,
int  framerate 
)
pure virtual

设置摄像头采集属性

在调用 startSelfVideo 方法或 startVideo 方法开启自身视频渲染前设置即可生效

参数
width采集宽度,默认640
height采集高度,默认360
frameRate采集帧速率,默认24

◆ setScreenCaptureProperty()

virtual void JCMediaDevice::setScreenCaptureProperty ( int  width,
int  height,
int  framerate 
)
pure virtual

设置屏幕共享采集属性

在调用 enableScreenOrWindowShare 方法开启屏幕共享前设置即可生效

参数
width采集宽度,默认1280
height采集高度,默认720
frameRate采集帧速率,默认10

◆ setVideoFileFrame()

virtual void JCMediaDevice::setVideoFileFrame ( BYTE *  srcFrame,
JCMediaDeviceVideoPixelFormat  format,
int  width,
int  height 
)
pure virtual

逐帧采集视频画面

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

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

◆ setVideoFrameCallback()

virtual void JCMediaDevice::setVideoFrameCallback ( JCVideoFrameCallback callback)
pure virtual

设置视频观测器对象

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

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

◆ startAudio()

virtual bool JCMediaDevice::startAudio ( )
pure virtual

启动音频

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

返回
调用是否成功
  • true:正常执行调用流程
  • false:调用失败

◆ startCamera()

virtual bool JCMediaDevice::startCamera ( )
pure virtual

开启摄像头

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

◆ startCameraVideo()

virtual JCMediaDeviceVideoCanvas* JCMediaDevice::startCameraVideo ( void *  view,
JCMediaDeviceRenderMode  mode 
)
pure virtual

开始自身视频渲染

获取本端视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示
一对一通话建议使用 startSelfVideo 方法代替,频道建议使用 startVideo 方法代替

参数
renderType渲染模式:
返回

◆ startVideo()

virtual JCMediaDeviceVideoCanvas* JCMediaDevice::startVideo ( void *  view,
const char *  videoSource,
JCMediaDeviceRenderMode  mode 
)
pure virtual

开始其他端的视频渲染

获取其他端的视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示
一对一通话建议使用 startOtherVideo 方法代替,频道建议使用 startVideo 方法代替

参数
videoSource渲染标识串,通过 JCMediaChannelParticipantgetRenderId 方法和 JCCallItemgetRenderId 方法可以得到
renderType渲染模式:
返回
JCMediaDeviceVideoCanvas 对象

◆ startVideoFile()

virtual bool JCMediaDevice::startVideoFile ( )
pure virtual

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

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

◆ stopAudio()

virtual bool JCMediaDevice::stopAudio ( )
pure virtual

停止音频

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

返回
调用是否成功
  • true:正常执行调用流程
  • false:调用失败

◆ stopCamera()

virtual bool JCMediaDevice::stopCamera ( )
pure virtual

关闭摄像头

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

◆ stopVideo()

virtual void JCMediaDevice::stopVideo ( JCMediaDeviceVideoCanvas canvas)
pure virtual

停止视频渲染

一对一通话建议使用 stopSelfVideostopOtherVideo 方法代替,频道建议使用 stopVideo 方法代替

参数
canvasJCMediaDeviceVideoCanvas 对象,由 startVideostartCameraVideo 返回

◆ stopVideoFile()

virtual bool JCMediaDevice::stopVideoFile ( )
pure virtual

关闭逐帧采集画面

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

◆ switchCamera()

virtual bool JCMediaDevice::switchCamera ( JCMediaDeviceCamera  camera)
pure virtual

切换摄像头

调用此方法时需要保证摄像头已打开并且摄像头数大于0,否则将直接返回 false

参数
camera摄像头
返回
调用是否成功
  • true:正常执行调用流程
    • 摄像头个数为1,不会收到回调
    • 摄像头个数大于1,会收到 onCameraUpdate 通知
  • false:调用失败,不会收到回调

类成员变量说明

◆ audioIntput

JCMediaDeviceAudio JCMediaDevice::audioIntput

默认音频输入

◆ audioOutput

JCMediaDeviceAudio JCMediaDevice::audioOutput

默认音频输出

◆ defaultCamera

JCMediaDeviceCamera JCMediaDevice::defaultCamera

默认摄像头

◆ screenshareWindow

JCMediaDeviceWindow JCMediaDevice::screenshareWindow

默认屏幕分享窗口


该类的文档由以下文件生成: