JCSDK-iOS
构造函数 | 类方法 | 属性 | 所有成员列表
JCMediaDevice类 参考

#import <JCMediaDevice.h>

构造函数

(JCMediaDeviceVideoCanvas *__nullable) - startCameraVideo:
 
(JCMediaDeviceVideoCanvas *__nullable) - startCameraVideo:view:
 
(JCMediaDeviceVideoCanvas *__nullable) - startVideo:renderType:
 
(JCMediaDeviceVideoCanvas *__nullable) - startVideo:renderType:view:
 
(void) - stopVideo:
 
(bool) - startAudio
 
(bool) - stopAudio
 
(bool) - startCamera
 
(bool) - stopCamera
 
(bool) - switchCamera
 
(void) - specifyCamera:
 
(void) - specifyCameraAngle:
 
(void) - setCameraProperty:height:framerate:
 
(void) - setScreenCaptureProperty:height:framerate:
 
(void) - enableSpeaker:
 
(bool) - enableScreenCapture:
 
(NSString *__nullable) - getAudioOutputType
 
(bool) - isAudioInputStart
 
(bool) - isAudioOutputStart
 
(bool) - startAudioInput
 
(bool) - stopAudioInput
 
(bool) - startAudioOutput
 
(bool) - stopAudioOutput
 
(bool) - startVideoFile
 
(void) - setVideoFileFrame:format:width:height:
 
(void) - setVideoFileFrame:angle:mirror:
 
(bool) - stopVideoFile
 
(bool) - snapshotWithRenderId:path:
 
(bool) - startSelfHelpRecord:cameraId:width:height:fps:bitrate:
 
(bool) - attachSelfHelpRecordCaptureSoure:
 
(bool) - detachSelfHelpRecordCaptureSoure:
 
(bool) - startFileRecordVideo:cameraId:width:height:
 
(void) - stopFileRecord:
 
(bool) - stopSelfHelpRecord
 
(bool) - ringPlay:
 
(void) - ringStop
 
(NSDictionary *__nullable) - getVersion
 
(NSString *__nullable) - getScreenCaptureWindowId
 

类方法

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

属性

bool cameraOpen
 
bool videoFileOpen
 
bool speakerOn
 
NSString *__nonnull camera
 
bool autoRotate
 
NSString *__nonnull videoFileId
 
JCMediaDeviceRotateAngle rotateAngleToScreen
 
bool audioInterrupt
 
bool aec
 
NSArray< JCMediaDeviceCameraItem * > *__nonnull cameraDevices
 

详细描述

用于管理设备

函数文档

◆ attachSelfHelpRecordCaptureSoure:

- (bool) attachSelfHelpRecordCaptureSoure: (NSString *__nonnull)  captureId

合并其他窗口视频流到录制文件中 把其他窗口视频流也合并到录制文件中

参数
captureIdcaptureId 窗口屏幕id
返回
添加视频流成功或失败
  • true 添加成功
  • false 添加失败

◆ create:callback:

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

创建 JCMediaDevice 对象

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

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

◆ destroy

+ (void) destroy

销毁 JCMediaDevice 对象

注解
此方法为异步调用,所以在调用此方法后不能马上调用 create 方法去重新创建 JCMediaDevice 对象

◆ detachSelfHelpRecordCaptureSoure:

- (bool) detachSelfHelpRecordCaptureSoure: (NSString *__nonnull)  captureId

移除其他窗口视频流 把其他窗口视频流从录制文件中移除

参数
captureIdcaptureId
返回
添加视频流成功或失败
  • true 添加成功
  • false 添加失败

◆ enableScreenCapture:

- (bool) enableScreenCapture: (bool)  enable

开启/关闭屏幕共享

参数
enable开启或关闭屏幕共享
  • true: 开启
  • false: 关闭
返回
调用是否成功
  • true:调用成功
  • false:调用失败

◆ enableSpeaker:

- (void) enableSpeaker: (bool)  enable

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

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

◆ getAudioOutputType

- (NSString *) getAudioOutputType

获得当前音频模式,目前只支持听筒和扬声器,iOS 使用

返回
音频模式

◆ getScreenCaptureWindowId

- (NSString *) getScreenCaptureWindowId

获取屏幕id

◆ getVersion

- (NSDictionary *) getVersion

获取版本号

◆ isAudioInputStart

- (bool) isAudioInputStart

内置音频输入是否打开

返回
true 表示打开, false 表示未打开

◆ isAudioOutputStart

- (bool) isAudioOutputStart

音频输出是否打开

返回
true 表示打开, false 表示未打开

◆ ringPlay:

- (bool) ringPlay: (NSString *__nonnull)  path

播放铃声

返回
是否成功
  • true 播放铃声成功
  • false 播放铃声失败

◆ ringStop

- (void) ringStop

停止铃声

◆ setCameraProperty:height:framerate:

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

设置摄像头采集属性

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

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

◆ setScreenCaptureProperty:height:framerate:

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

设置屏幕共享采集属性

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

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

◆ setVideoFileFrame:angle:mirror:

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

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

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

参数
srcFrame视频数据
angle角度, 为 90 的倍数
mirror是否镜像,0 不镜像,1 镜像

◆ setVideoFileFrame:format:width:height:

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

逐帧采集视频画面

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

参数
data画面二进制数据
format视频像素格式
width
height

◆ snapshotWithRenderId:path:

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

截图

参数
renderId要截图的视频id
path要存放截图的文件路径
返回
是否成功
  • true 调用成功
  • false 调用失败

◆ specifyCamera:

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

指定要开启的摄像头

参数
camera摄像头标识

◆ specifyCameraAngle:

- (void) specifyCameraAngle: (int)  angle

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

参数
angle角度

◆ startAudio

- (bool) startAudio

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

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

◆ startAudioInput

- (bool) startAudioInput

打开设备内置音频采集

返回
调用是否成功

◆ startAudioOutput

- (bool) startAudioOutput

打开设备内置音频输出

返回
调用是否成功

◆ startCamera

- (bool) startCamera

开启摄像头

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

◆ startCameraVideo:

- (JCMediaDeviceVideoCanvas *) 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渲染视图
返回

◆ startFileRecordVideo:cameraId:width:height:

- (bool) startFileRecordVideo: (NSString *)  recordPath
cameraId: (NSString *)  cameraId
width: (int)  width
height: (int)  height 

开始离线录制(单人)

参数
recordPath生成的录制文件路径
cameraIdcameraId
width
height

◆ startSelfHelpRecord:cameraId:width:height:fps:bitrate:

- (bool) startSelfHelpRecord: (NSString *__nonnull)  recordPath
cameraId: (NSString *__nonnull)  cameraId
width: (int)  width
height: (int)  height
fps: (int)  fps
bitrate: (int)  bitrate 

开始自助双录

参数
recordPath生成的录制文件路径
cameraIdcameraId
width
height
fpsfps
bitrate码率
返回
自助双录打开是否成功
  • true 自助双录打开成功
  • false 自助双录打开失败

◆ startVideo:renderType:

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

开始其他端的视频渲染

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

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

◆ startVideo:renderType:view:

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

开始其他端的视频渲染

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

参数
videoSource渲染标识串,通过 JCMediaChannelParticipantrenderId 方法和 JCCallItem 的 renderId 方法可以得到
type渲染模式:
view渲染视图
返回
JCMediaDeviceVideoCanvas 对象

◆ startVideoFile

- (bool) startVideoFile

开启视频文件作为视频输入源,文件和摄像头作为视频输入源只能存在一种,当前摄像头开启的话会关闭摄像头

返回
是否成功

◆ stopAudio

- (bool) stopAudio

停止音频 一般在通话结束时调用

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

◆ stopAudioInput

- (bool) stopAudioInput

关闭设备内置音频采集

返回
调用是否成功

◆ stopAudioOutput

- (bool) stopAudioOutput

关闭设备内置音频输出

返回
调用是否成功

◆ stopCamera

- (bool) stopCamera

关闭摄像头

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

◆ stopFileRecord:

- (void) stopFileRecord: (NSString *)  cameraId

停止离线录制(单人)

参数
cameraIdcameraId

◆ stopSelfHelpRecord

- (bool) stopSelfHelpRecord

停止自助双录

返回
自助双录关闭是否成功
  • true 自助双录关闭成功
  • false 自助双录关闭失败

◆ stopVideo:

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

停止视频渲染

参数
canvasJCMediaDeviceVideoCanvas 对象,由 startVideostartCameraVideo 返回

◆ stopVideoFile

- (bool) stopVideoFile

关闭逐帧采集画面

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

◆ switchCamera

- (bool) switchCamera

切换摄像头

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

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

属性说明

◆ aec

- (bool) aec
readwritenonatomicassign

回声消除,默认开启

◆ audioInterrupt

- (bool) audioInterrupt
readwritenonatomicassign

是否声音被中断

◆ autoRotate

- (bool) autoRotate
readwritenonatomicassign

窗口是否跟着手机自动旋转,默认为false

◆ camera

- (NSString* __nonnull) camera
readnonatomiccopy

当前摄像头类型 参见

参见
JCMediaDeviceConstants 中摄像头类型值定义

◆ cameraDevices

- (NSArray<JCMediaDeviceCameraItem *>* __nonnull) cameraDevices
readnonatomicstrong

摄像头列表

◆ cameraOpen

- (bool) cameraOpen
readnonatomicassign

摄像头是否打开

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

◆ rotateAngleToScreen

- (JCMediaDeviceRotateAngle) rotateAngleToScreen
readwritenonatomicassign

当 autoRotate 为 false 时,窗口与手机屏幕的角度,默认为JCMediaDeviceRotateAngle0

参见
JCMediaDeviceRotateAngle

◆ speakerOn

- (bool) speakerOn
readnonatomicassign

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

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

◆ videoFileId

- (NSString* __nonnull) videoFileId
readnonatomiccopy

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

◆ videoFileOpen

- (bool) videoFileOpen
readnonatomicassign

文件播放是否打开

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