音视频设备管理
更多...
#import <JRTCMediaDevice.h>
◆ create:callback:initParam:
◆ destroy
◆ enableAudioInputFromFile:filePath:loop:
- (bool) enableAudioInputFromFile: |
|
(bool) |
enable |
filePath: |
|
(NSString *__nullable) |
filePath |
loop: |
|
(bool) |
loop |
|
|
| |
开始/结束播放本地音频文件作为音频源输入
- 参数
-
- 注解
- 重复调用会覆盖
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ enableScreenCapture:
- (bool) enableScreenCapture: |
|
(bool) |
enable |
|
开启/关闭屏幕采集
- 注解
- 仅支持应用内采集
- 参数
-
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ enableScreenCapture:appGroupId:preferredExtension:
- (bool) enableScreenCapture: |
|
(bool) |
enable |
appGroupId: |
|
(NSString *__nullable) |
appGroupId |
preferredExtension: |
|
(NSString *__nullable) |
preferredExtension |
|
|
| |
开启/关闭屏幕采集
- 注解
- 支持应用外采集,需要 iOS 12.0 及以上(不包含 iOS 13.0),需要集成屏幕采集插件, 调用此方法后成功,界面上会拉起屏幕采集插件,需手动点击"开始直播"按钮进行屏幕采集,
- 参数
-
enable | 是否开启 |
appGroupId | extension 和 app 所处于的同一个 groupId,如果是关闭可以传空 |
preferredExtension | 希望打开的 extension 的 ID,如果是关闭可以传空 |
- 返回
- 返回 true 表示开启/关闭屏幕共享成功,false 表示失败
◆ enableSpeaker:
- (void) enableSpeaker: |
|
(bool) |
enable |
|
开启/关闭扬声器,iOS 使用
只有在音频已经启动的情况下调用才会生效
- 参数
-
◆ getAnrNoiseLevel
获取当前噪声强度 环境平均噪声强度(1s), 检测需要打开麦克风 startAudio
或者 startAudioInput
- 返回
- 噪声强度
- -1:获取失败
- 0-50dB:噪声非常微弱
- 50-60dB:噪声较弱
- 60-70dB:噪声较强
- 70dB以上:噪声非常强
◆ getAnrNoiseRatio
获取当前信噪比强度 环境平均信噪比强度(1s), 检测需要打开麦克风 startAudio
或者 startAudioInput
- 返回
- 噪声强度
- -1:获取失败
- 0-20dB:噪声明显,语音含糊,较难听清
- 20-40dB:语音基本能听清,但有一定的噪声
- 40dB以上:语音非常清晰
◆ getAudioRouteType
获得当前音频输出通道类型,如扬声器、听筒、耳机、蓝牙等
- 返回
- 当前音频输出通道类型
◆ getMicLevel
获取当前本地音量级别,音量级别范围为0-100,用以测试设备 目前只在开始麦克风检测,或者当房间内有输入音频时,才能获取到有效的音量级别
- 返回
- 麦克风音量级别,返回-1获取失败
◆ getScreenCaptureId
- (NSString *__nullable) getScreenCaptureId |
|
|
|
◆ getScreenFramerate
- (int) getScreenFramerate |
|
|
|
◆ getSpkLevel
获取当前扬声器音量级别,音量级别范围为0-100,用以测试设备 目前只在开始扬声器检测,或者当房间内有输出音频时,才能获取到有效的音量级别
- 返回
- 扬声器音量级别,返回-1获取失败
◆ isSpeakerOn
◆ recoveryRecordFile:
- (bool) recoveryRecordFile: |
|
(NSString *_Nonnull) |
fileDir |
|
恢复录制文件
- 注解
- 使用场景:
- 开启音视频录制;
- 录制过程中程序出现异常(比如崩溃),导致无法正常关闭音视频录制;
- 本地录制目录下生成了录制过程文件,不是一个有效的音视频文件;
- 当程序再次启动时可以调用该接口,将录制目录中已经录制的音视频过程文件恢复成有效的音视频文件。
- 参数
-
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ resetScreenCaptureData
- (void) resetScreenCaptureData |
|
|
|
◆ setAec:
- (void) setAec: |
|
(bool) |
aecOn |
|
◆ setAgc:
- (void) setAgc: |
|
(bool) |
agcOn |
|
◆ setAudioInputFrameCallback:
◆ setAutoScreenOrientation:
- (void) setAutoScreenOrientation: |
|
(bool) |
enable |
|
◆ setCameraProperty:height:framerate:
- (void) setCameraProperty: |
|
(int) |
width |
height: |
|
(int) |
height |
framerate: |
|
(int) |
frameRate |
|
|
| |
设置摄像头采集属性
在调用开始自身视频渲染前设置即可生效
- 参数
-
width | 采集宽度,默认为 640 |
height | 采集高度,默认为 360 |
frameRate | 采集帧速率,默认为 24 |
◆ setScreenCaptureData:
- (void) setScreenCaptureData: |
|
(UIImage *__nonnull) |
image |
|
◆ setScreenCaptureProperty:height:framerate:
- (void) setScreenCaptureProperty: |
|
(int) |
width |
height: |
|
(int) |
height |
framerate: |
|
(int) |
frameRate |
|
|
| |
设置屏幕共享采集属性
在调用开启屏幕共享前设置即可生效
- 参数
-
width | 采集宽度,默认1280 |
height | 采集高度,默认720 |
frameRate | 采集帧速率,默认10 |
◆ setVideoAngle:
◆ setVideoCaptureFrameCallback:
◆ 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秒,否则一开始可能有几秒对端无法显示视频
- 参数
-
srcFrame | CVPixelBufferRef 视频数据 |
angle | 视频角度, 为 90 的倍数 |
mirror | 是否镜像,0 不镜像,1 镜像 |
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ setVideoFileFrame:format:width:height:angle:
- (bool) setVideoFileFrame: |
|
(NSData *__nonnull) |
srcFrame |
format: |
|
(JRTCMediaDeviceVideoPixelFormat) |
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: 接口调用异常
◆ snapshotWithStreamId:path:
- (bool) snapshotWithStreamId: |
|
(NSString *__nonnull) |
streamId |
path: |
|
(NSString *__nonnull) |
path |
|
|
| |
截图
- 参数
-
streamId | 要截图的视频流ID |
path | 要存放截图的文件路径 |
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ specifyCamera:
◆ specifyCameraAngle:
- (void) specifyCameraAngle: |
|
(int) |
angle |
|
◆ startAudio
启动音频
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startAudioInput
打开音频输入设备
- 注解
- 默认开启自适应回声消除和自动增益控制
- 返回
- 调用是否成功
◆ startAudioOutput
- (bool) startAudioOutput |
|
|
|
打开音频输出设备
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startAudioRecord:audioSource:fileType:
开启音频录制(本地录制,不需要建立通信,不能和视频录制 startVideoCaptureRecord
同时开启)
- 参数
-
filePath | 存储路径 |
audioSource | 录制文件音频源 |
fileType | 文件类型,必须包含文件名(xxx.wav或者pcm) |
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startAudioTest:fileName:
检测音频设备是否正常
- 参数
-
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startCamera
开启摄像头
- 注解
- 调用此方法时需要保证默认摄像头不为空,即 defaultCamera 不为空,否则将直接返回 false
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startCameraVideo:
◆ startCameraVideo:view:
◆ startRing:isLoop:
- (bool) startRing: |
|
(NSString *_Nonnull) |
filePath |
isLoop: |
|
(bool) |
isLoop |
|
|
| |
开始播放音频
- 当播放音频文件完成后会收到
onRingPlayFinish
回调通知 - 参数
-
filePath | 音频文件路径,支持pcm,wav的格式(需要单声道,采样率16K音频文件) |
isLoop | 是否循环播放 |
- 返回
- 播放音频结果
- true: 接口调用成功
- false: 接口调用异常
◆ startVideo:renderType:
◆ startVideo:renderType:view:
◆ startVideoCaptureRecord:recordParam:
开启视频录制(本地录制,不需要建立通信,不能和音频录制 startAudioRecord
同时开启)
- 参数
-
streamId | 视频流ID, (包括摄像头ID、文件视频源ID、屏幕ID等) |
recordParam | 录制参数 |
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startVideoCaptureRecord:streamId:audioSource:fileType:width:height:
- (bool) startVideoCaptureRecord: |
|
(NSString *_Nonnull) |
filePath |
streamId: |
|
(NSString *_Nonnull) |
streamId |
audioSource: |
|
(JRTCRecordAudioSource) |
audioSource |
fileType: |
|
(JRTCVideoRecordFileType) |
fileType |
width: |
|
(int) |
width |
height: |
|
(int) |
height |
|
|
| |
开启视频录制(本地录制,不需要建立通信,不能和音频录制 startAudioRecord
同时开启)
- 参数
-
filePath | 存储路径 |
streamId | 视频流ID, (包括摄像头ID、文件视频源ID、屏幕ID等) |
audioSource | 录制文件音频源 |
fileType | 文件类型 |
width | 视频画面像素宽 |
height | 视频画面像素高 |
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ startVideoFile
开启视频文件作为视频输入源
- 注解
- 文件和摄像头作为视频输入源只能存在一种,如果当前摄像头已开启的话会关闭摄像头
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常,不会收到回调
◆ stopAllVideos
◆ stopAudio
停止音频
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopAudioInput
关闭音频输入设备
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopAudioOutput
关闭音频输出设备
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopAudioRecord
停止音频录制(本地录制,不需要建立通信)
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopAudioTest:
停止检测音频设备
- 警告
- 开启某项音频设备检测完成后,需停止对应的测试,避免影响后续的音频设备使用。
- 参数
-
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopCamera
关闭摄像头
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopRing
◆ stopVideo:
◆ stopVideoCaptureRecord:
- (bool) stopVideoCaptureRecord: |
|
(NSString *_Nonnull) |
streamId |
|
关闭视频录制(本地录制,不需要建立通信,不能和音频同时录制)
- 参数
-
streamId | 视频流ID, (包括摄像头ID、文件视频源ID、屏幕ID等) |
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ stopVideoFile
关闭视频文件作为视频输入源
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ suspendAudioInputFromFile:
- (bool) suspendAudioInputFromFile: |
|
(bool) |
suspend |
|
暂停/继续播放语音文件作为音频源输入
- 参数
-
suspend | true 暂停播放 false 继续播放 |
- 返回
- 调用是否正常
- true: 正常执行调用流程
- false:调用异常
◆ switchCamera
切换摄像头
内部会根据当前摄像头类型来进行切换
- 调用此方法时要保证摄像头已打开,否则将直接返回 false
- 设备拥有两个以上摄像头,否则将直接返回 true
- 满足以上两个条件后,内部会调用
switchCamera:
接口并提供返回值
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常
◆ switchCamera:
切换到指定摄像头
调用此方法时需要保证摄像头已打开并且摄像头数大于0,否则将直接返回 false
- 参数
-
- 返回
- 接口调用结果
- true: 接口调用成功
- false: 接口调用异常,不会收到回调
◆ audioInput
◆ audioInputFrameCallback
◆ audioInputs
◆ audioInterrupt
◆ audioOutput
◆ audioOutputs
◆ audioParam
音频参数
需要在调用 startAudio
方法前设置,即连接通话或加入房间前设置此参数。若不设置此参数,将使用默认值。
◆ cameraOpen
◆ cameras
◆ currentCamera
◆ defaultCamera
◆ defaultSpeakerOn
- (bool) defaultSpeakerOn |
|
readwritenonatomicassign |
没有插入耳机或外接蓝牙时是否默认开启扬声器,默认关闭,iOS 使用
◆ desktops
◆ isAudioInputStart
- (bool) isAudioInputStart |
|
readnonatomicassign |
◆ isAudioOutputStart
- (bool) isAudioOutputStart |
|
readnonatomicassign |
◆ isAutoScreenOrientation
- (bool) isAutoScreenOrientation |
|
readnonatomicassign |
◆ screenshareWindow
◆ useInternalAudioDeviceLogic
- (bool) useInternalAudioDeviceLogic |
|
readwritenonatomicassign |
是否使用内部音频设备逻辑
1.打开扬声器 -> 使用扬声器输出声音 2.连上蓝牙耳机 -> 使用蓝牙耳机输出声音,如果扬声器开着则关闭扬声器 3.插入耳机 -> 使用耳机输出声音,如果扬声器开着则关闭扬声器 4.蓝牙耳机和有线耳机以最后连上的作为输出 5.关闭扬声器 -> (蓝牙耳机|有线耳机) > 听筒
◆ videoAngle
◆ videoFileId
- (NSString*) videoFileId |
|
readnonatomicstrong |
◆ videoFileOpen
◆ windows