JRTCSDK-iOS  v1.1
API文档
构造函数 | 类方法 | 属性 | 所有成员列表
JCMediaDevice类 参考

设备模块 更多...

构造函数

(JCMediaDeviceVideoCanvas *__nullable) - startCameraVideo:
 
(JCMediaDeviceVideoCanvas *__nullable) - startCameraVideo:view:
 
(JCMediaDeviceVideoCanvas *__nullable) - startVideo:renderType:
 
(JCMediaDeviceVideoCanvas *__nullable) - startVideo:renderType:view:
 
(void) - stopVideo:
 
(bool) - startAudio
 
(bool) - stopAudio
 
(bool) - startAudioInput
 
(bool) - stopAudioInput
 
(bool) - startAudioOutput
 
(bool) - stopAudioOutput
 
(bool) - startCamera
 
(bool) - stopCamera
 
(bool) - switchCamera
 
(bool) - switchCamera:
 
(void) - specifyCamera:
 
(void) - specifyCameraAngle:
 
(void) - setCameraProperty:height:framerate:
 
(void) - setScreenCaptureProperty:height:framerate:
 
(int) - getScreenFramerate
 
(void) - setVideoAngle:
 
(bool) - isSpeakerOn
 
(void) - enableSpeaker:
 
(bool) - enableScreenCapture:
 
(NSString *__nullable) - getAudioOutputType
 
(NSString *__nullable) - getScreenCaptureId
 
(bool) - startVideoFile
 
(bool) - stopVideoFile
 
(bool) - setVideoFileFrame:format:width:height:angle:
 
(void) - setVideoFileFrame:angle:mirror:
 
(bool) - startVideoCaptureRecord:captureId:fileType:width:height:
 
(bool) - stopVideoCaptureRecord:
 
(bool) - startAudioRecord:fileType:
 
(bool) - stopAudioRecord
 
(bool) - snapshotWithRenderId:path:
 
(void) - setAudioInputCallback:
 
(void) - setAudioOutputCallback:
 
(bool) - startAudioTest:fileName:
 
(bool) - stopAudioTest:
 
(int) - getMicLevel
 
(int) - getSpkLevel
 
(bool) - ringPlay:
 
("该属性即将废弃,请用stopRing:代替") - DEPRECATED_MSG_ATTRIBUTE
 
(bool) - startRing:isLoop:
 
(bool) - stopRing
 

类方法

(JCMediaDevice *__nullable) + create:callback:
 
(void) + destroy
 

属性

id< AudioInputCallbackaudioInputCallback
 
id< AudioOutputCallbackaudioOutputCallback
 
bool isAudioInputStart
 
bool isAudioOutputStart
 
bool cameraOpen
 
bool videoFileOpen
 
JCMediaDeviceCameracurrentCamera
 
NSArray< JCMediaDeviceCamera * > * cameras
 
JCMediaDeviceCameradefaultCamera
 
JCMediaDeviceAudioParamaudioParam
 
NSString * videoFileId
 
bool audioInterrupt
 
JCMediaDeviceVideoAngle videoAngle
 
bool aec
 
bool useInternalAudioDeviceLogic
 
NSArray< JCMediaDeviceAudio * > * audioInputs
 
JCMediaDeviceAudioaudioInput
 
NSArray< JCMediaDeviceAudio * > * audioOutputs
 
JCMediaDeviceAudioaudioOutput
 
NSArray< JCMediaDeviceWindow * > * desktops
 
NSArray< JCMediaDeviceWindow * > * windows
 
JCMediaDeviceWindowscreenshareWindow
 
bool defaultSpeakerOn
 

详细描述

设备模块

函数文档

◆ create:callback:

+ (JCMediaDevice* __nullable) create: (JCClient *__nonnull)  client
callback: (id< JCMediaDeviceCallback > __nonnull)  callback 

创建 JCMediaDevice 对象

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

注解
参数
clientJCClient 对象
callbackJCMediaDeviceCallback 对象,用于回调相关通知
返回
JCMediaDevice 对象
异常
JCClient、JCMediaDeviceCallback 任意一个参数传空就会调用失败

◆ DEPRECATED_MSG_ATTRIBUTE

- "该属性即将废弃,请用stopRing:

停止播放音频文件

◆ destroy

+ (void) destroy

销毁 JCMediaDevice 对象

注解
该方法为同步调用,需要等待 JCMediaDevice 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCMediaDevice 的其它方法和回调。
我们 不建议 在 JRTCSDK 的回调中调用此方法销毁 JCMediaDevice 对象,否则会出现崩溃。
如需在销毁后再次创建 JCMediaDevice 实例,需要等待 destroy 方法执行结束后再创建实例。

◆ enableScreenCapture:

- (bool) enableScreenCapture: (bool)  enable

开启/关闭屏幕采集

参数
enable开启或关闭屏幕采集
  • true: 开启
  • false: 关闭
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ enableSpeaker:

- (void) enableSpeaker: (bool)  enable

开启/关闭扬声器,iOS 使用

只有在音频已经启动的情况下调用才会生效

参数
enable开启或关闭扬声器
  • true: 开启
  • false: 关闭

◆ getAudioOutputType

- (NSString* __nullable) getAudioOutputType

获得当前音频模式,获得当前音频输出类型,如扬声器、听筒、耳机、蓝牙等

返回
当前音频输出类型

◆ getMicLevel

- (int) getMicLevel

获取当前本地音量级别,录制音量级别范围为 0 到 100

目前只在开始麦克风检测,或者当会议上有音频时,才能获取到有效的录制音量级别。

返回
麦克风音量级别

◆ getScreenCaptureId

- (NSString* __nullable) getScreenCaptureId

获得屏幕采集视频流ID

返回
屏幕采集视频流ID

◆ getScreenFramerate

- (int) getScreenFramerate

获得当前屏幕采集帧率

返回
屏幕采集帧率

◆ getSpkLevel

- (int) getSpkLevel

获取当前扬声器音量级别,播放音量级别范围为 0 到 100

目前只在开始扬声器检测,或者当会议上有人讲话时,才能获取到有效的录制音量级别。

返回
扬声器音量级别

◆ isSpeakerOn

- (bool) isSpeakerOn

扬声器是否已打开,iOS 使用

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

◆ ringPlay:

- (bool) ringPlay: ("该属性即将废弃,请用startRing:isLoop:代替")  DEPRECATED_MSG_ATTRIBUTE

播放音频文件

参数
path文件路径
返回
播放是否成功

◆ setAudioInputCallback:

- (void) setAudioInputCallback: (id< AudioInputCallback > _Nullable)  callback

设置音频输入帧回调

参数
callback原始音频数据输入回调代理对象

◆ setAudioOutputCallback:

- (void) setAudioOutputCallback: (id< AudioOutputCallback > _Nullable)  callback

设置音频输出帧回调

参数
callback原始音频数据输出回调代理对象

◆ setCameraProperty:height:framerate:

- (void) setCameraProperty: (int)  width
height: (int)  height
framerate: (int)  framerate 

设置摄像头采集属性

在调用开始自身视频渲染前设置即可生效

参数
width采集宽度,默认为 640
height采集高度,默认为 360
framerate采集帧速率,默认为 30

◆ setScreenCaptureProperty:height:framerate:

- (void) setScreenCaptureProperty: (int)  width
height: (int)  height
framerate: (int)  framerate 

设置屏幕共享采集属性

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

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

◆ setVideoAngle:

- (void) setVideoAngle: (JCMediaDeviceVideoAngle angle

设置视频窗体角度

参数
angle视频旋转角度,详见 JCMediaDeviceVideoAngle

◆ setVideoFileFrame:angle:mirror:

- (void) setVideoFileFrame: (CVPixelBufferRef __nonnull)  srcFrame
angle: (int)  angle
mirror: (int)  mirror 

向文件视频源逐帧添加视频数据

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

注解
当 format 为 H264 格式并且是关键帧时:
  • 第一帧一定要包含关键帧,并且需要将 0x67 0x68 0x65 的数据作为完整一帧传入,其中0x67,0x68为pps,0x65为关键帧标识
  • 后续P帧以 0x41 数据形式传入
  • 关键帧要以固定间隔传入,例如5秒,否则一开始可能有几秒对端无法显示视频
参数
srcFrameCVPixelBufferRef 视频数据
angle视频角度, 为 90 的倍数
mirror是否镜像,0 不镜像,1 镜像
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ setVideoFileFrame:format:width:height:angle:

- (bool) setVideoFileFrame: (NSData *__nonnull)  srcFrame
format: (JCMediaDeviceVideoPixelFormat format
width: (int)  width
height: (int)  height
angle: (int)  angle 

逐帧采集视频画面

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

注解
当 format 为 H264 格式并且是关键帧时:
  • 第一帧一定要包含关键帧,并且需要将 0x67 0x68 0x65 的数据作为完整一帧传入,其中0x67,0x68为pps,0x65为关键帧标识
  • 后续P帧以 0x41 数据形式传入
  • 关键帧要以固定间隔传入,例如5秒,否则一开始可能有几秒对端无法显示视频
参数
srcFrame画面二进制数据
format视频像素格式
width视频画面像素宽
height视频画面像素高
angle视频角度,为 90 的倍数
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ snapshotWithRenderId:path:

- (bool) snapshotWithRenderId: (NSString *__nonnull)  renderId
path: (NSString *__nonnull)  path 

截图

参数
renderId要截图的视频流ID
path要存放截图的文件路径
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ specifyCamera:

- (void) specifyCamera: (JCMediaDeviceCamera *__nonnull)  camera

指定要开启的摄像头,在 startCamera 之前调用

参数
camera摄像头对象

◆ specifyCameraAngle:

- (void) specifyCameraAngle: (int)  angle

指定摄像头采集角度,为90的倍数

参数
angle角度

◆ startAudio

- (bool) startAudio

启动音频

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ startAudioInput

- (bool) startAudioInput

打开音频输入设备

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

◆ startAudioOutput

- (bool) startAudioOutput

打开音频输出设备

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ startAudioRecord:fileType:

- (bool) startAudioRecord: (NSString *_Nullable)  filePath
fileType: (JCAudioCaptureRecordFileType fileType 

开启音频录制(本地录制,不需要建立通信,不能和视频同时录制)

参数
filePath存储路径
fileType文件类型,必须包含文件名(xxx.wav或者pcm)
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ startAudioTest:fileName:

- (bool) startAudioTest: (JCMediaDeviceTestType type
fileName: (NSString *__nullable)  fileName 

检测音频设备是否正常

参数
type音频设备类型,JCMediaDeviceTestType
fileName测试扬声器时播放的文件路径,测试麦克风是传 nil 即可
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ startCamera

- (bool) startCamera

开启摄像头

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

◆ startCameraVideo:

- (JCMediaDeviceVideoCanvas* __nullable) startCameraVideo: (JCMediaDeviceRender type

开始自身视频渲染

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

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

◆ startCameraVideo:view:

- (JCMediaDeviceVideoCanvas* __nullable) startCameraVideo: (JCMediaDeviceRender type
view: (UIView *__nonnull)  view 

开始自身视频渲染

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

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

◆ startRing:isLoop:

- (bool) startRing: (NSString *_Nonnull)  filePath
isLoop: (bool)  isLoop 

开始播放音频

参数
filePath音频文件路径
isLoop是否循环播放
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ startVideo:renderType:

- (JCMediaDeviceVideoCanvas* __nullable) startVideo: (NSString *__nonnull)  renderId
renderType: (JCMediaDeviceRender type 

开始其他端的视频渲染

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

参数
renderId视频流ID
type渲染模式:
返回

◆ startVideo:renderType:view:

- (JCMediaDeviceVideoCanvas* __nullable) startVideo: (NSString *__nonnull)  renderId
renderType: (JCMediaDeviceRender type
view: (UIView *__nonnull)  view 

开始其他端的视频渲染

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

参数
renderId视频流ID
type渲染模式:
view渲染视图控件
返回

◆ startVideoCaptureRecord:captureId:fileType:width:height:

- (bool) startVideoCaptureRecord: (NSString *_Nonnull)  filePath
captureId: (NSString *_Nonnull)  captureId
fileType: (JCVideoCaptureRecordFileType fileType
width: (int)  width
height: (int)  height 

开启视频录制(本地录制,不需要建立通信)

参数
filePath存储路径
captureId采集视频流ID,可以传摄像头采集视频流ID或屏幕采集视频流ID
fileType文件类型
width视频画面像素宽
height视频画面像素高
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ startVideoFile

- (bool) startVideoFile

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

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

◆ stopAudio

- (bool) stopAudio

停止音频

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopAudioInput

- (bool) stopAudioInput

关闭音频输入设备

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopAudioOutput

- (bool) stopAudioOutput

关闭音频输出设备

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopAudioRecord

- (bool) stopAudioRecord

停止音频录制(本地录制,不需要建立通信)

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopAudioTest:

- (bool) stopAudioTest: (JCMediaDeviceTestType type

停止检测音频设备

警告
开启某项音频设备检测完成后,需停止对应的测试,避免影响后续的音频设备使用。
参数
type音频设备类型,JCMediaDeviceTestType
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopCamera

- (bool) stopCamera

关闭摄像头

返回
接口调用结果
  • true: 接口调用成功
    • 调用此方法前摄像头未打开,不会收到回调通知
    • 调用此方法前摄像头已打开,会收到 onCameraUpdate 回调
  • false: 接口调用异常

◆ stopRing

- (bool) stopRing

结束播放音频

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopVideo:

- (void) stopVideo: (JCMediaDeviceVideoCanvas *__nonnull)  canvas

停止视频渲染

参数
canvasJCMediaDeviceVideoCanvas 对象,由 startVideostartCameraVideo 接口返回

◆ stopVideoCaptureRecord:

- (bool) stopVideoCaptureRecord: (NSString *_Nonnull)  captureId

关闭视频录制(本地录制,不需要建立通信,不能和音频同时录制)

参数
captureId采集视频流ID (包括摄像头id、文件视频源渲染id、屏幕共享采集id等)
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ stopVideoFile

- (bool) stopVideoFile

关闭视频文件作为视频输入源

返回
接口调用结果
  • true: 接口调用成功
    • 若调用此方法时文件视频源已关闭,不会收到回调
    • 若调用此方法时文件视频源未关闭,则会收到 onCameraUpdate 回调
  • false: 接口调用异常

◆ switchCamera

- (bool) switchCamera

切换摄像头

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

  • 调用此方法时要保证摄像头已打开,否则将直接返回 false
  • 设备拥有两个以上摄像头,否则将直接返回 true
  • 满足以上两个条件后,内部会调用 switchCamera: 接口并提供返回值
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ switchCamera:

- (bool) switchCamera: (JCMediaDeviceCamera *__nonnull)  camera

切换到指定摄像头

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

参数
camera摄像头对象
返回
接口调用结果
  • true: 接口调用成功
    • 摄像头个数 == 1,不会收到回调
    • 摄像头个数 > 1,会收到 onCameraUpdate 回调
  • false: 接口调用异常,不会收到回调

属性说明

◆ aec

- (bool) aec
readwritenonatomicassign

是否开启回声消除,默认开启

◆ audioInput

- (JCMediaDeviceAudio*) audioInput
readwritenonatomicstrong

当前音频输入设备,mac 使用

◆ audioInputCallback

- (id<AudioInputCallback>) audioInputCallback
readwritenonatomicassign

原始音频数据输入回调代理对象

◆ audioInputs

- (NSArray<JCMediaDeviceAudio*>*) audioInputs
readnonatomicassign

音频输入设备列表,mac 使用

◆ audioInterrupt

- (bool) audioInterrupt
readnonatomicassign

是否声音被中断

◆ audioOutput

- (JCMediaDeviceAudio*) audioOutput
readwritenonatomicstrong

当前音频输出设备,mac 使用

◆ audioOutputCallback

- (id<AudioOutputCallback>) audioOutputCallback
readwritenonatomicassign

原始音频数据输出回调代理对象

◆ audioOutputs

- (NSArray<JCMediaDeviceAudio*>*) audioOutputs
readnonatomicassign

音频输出设备列表,mac 使用

◆ audioParam

- (JCMediaDeviceAudioParam*) audioParam
readwritenonatomicstrong

音频参数

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

◆ cameraOpen

- (bool) cameraOpen
readnonatomicassign

摄像头是否打开

◆ cameras

- (NSArray<JCMediaDeviceCamera*>*) cameras
readnonatomicassign

摄像头列表

◆ currentCamera

- (JCMediaDeviceCamera*) currentCamera
readnonatomicassign

当前摄像头

◆ defaultCamera

- (JCMediaDeviceCamera*) defaultCamera
readwritenonatomicassign

默认摄像头

◆ defaultSpeakerOn

- (bool) defaultSpeakerOn
readwritenonatomicassign

没有插入耳机或外接蓝牙时是否默认开启扬声器,默认关闭,iOS 使用

  • true: 默认开启
  • false: 默认不开启

◆ desktops

- (NSArray<JCMediaDeviceWindow*>*) desktops
readnonatomicassign

桌面列表,mac 使用

◆ isAudioInputStart

- (bool) isAudioInputStart
readnonatomicassign

音频输入设备是否打开

◆ isAudioOutputStart

- (bool) isAudioOutputStart
readnonatomicassign

音频输出设备是否打开

◆ screenshareWindow

- (JCMediaDeviceWindow*) screenshareWindow
readwritenonatomicstrong

屏幕共享的窗口,mac 使用

◆ useInternalAudioDeviceLogic

- (bool) useInternalAudioDeviceLogic
readwritenonatomicassign

是否使用内部音频设备逻辑

1.打开扬声器 -> 使用扬声器输出声音 2.连上蓝牙耳机 -> 使用蓝牙耳机输出声音,如果扬声器开着则关闭扬声器 3.插入耳机 -> 使用耳机输出声音,如果扬声器开着则关闭扬声器 4.蓝牙耳机和有线耳机以最后连上的作为输出 5.关闭扬声器 -> (蓝牙耳机|有线耳机) > 听筒

◆ videoAngle

- (JCMediaDeviceVideoAngle) videoAngle
readwritenonatomicassign

视频角度

◆ videoFileId

- (NSString*) videoFileId
readnonatomicstrong

视频文件作为本地视频源的视频流ID

◆ videoFileOpen

- (bool) videoFileOpen
readnonatomicassign

文件播放是否打开

◆ windows

- (NSArray<JCMediaDeviceWindow*>*) windows
readnonatomicassign

窗口列表,mac 使用