音视频采集
音视频 Track 为音视频交互的基本单位,本部分介绍音视频 Track 的创建及采集等功能的使用。
- 一路 Track 代表一路音频或者视频的数据
- SDK 支持创建并发布多路视频 Track,但是仅支持同时创建一路音频 Track,重复创建将会失败
摄像头视频 Track
QNCameraVideoTrack 为摄像头采集的本地 Track,其创建方式如下:
et cameraConfig = new QNCameraVideoTrackConfig()
let videoCaptureConfig = new QNVideoCaptureConfig()
let videoEncodeConfig = new QNVideoEncoderConfig()
cameraConfig.captureConfig = videoCaptureConfig
cameraConfig.encoderConfig = videoEncodeConfig
this.cameraTrack = QNRTC.CreateCameraVideoTrack(cameraConfig)
其中,QNVideoEncoderConfig 用来配置视频的编码参数,包括分辨率、帧率和码率(kbps)等。
注意:编码分辨率配置
videoEncodeSize
时,需要同步设置预览分辨率videoFormat
,保证预览分辨率的宽高大于编码分辨率的宽高,否则设置不生效。
在创建好 QNCameraVideoTrack 之后,就可以通过调用 SDK 提供的相关方法进行摄像头的相关操作:
开始/停止摄像头采集
通过调用 QNCameraVideoTrack.StartCapture 接口进行摄像头采集,通过调用 QNCameraVideoTrack.StopCapture 接口停止摄像头采集,通过 XComponent 添加 QNComponentController 设置摄像头采集的预览视图。
let ret: number = this.cameraTrack.StartCapture()
let ret: number = this.cameraTrack.StopCapture()
注意:App 在进退前后台的过程中,进入后台需要通过调用
StopCapture
停止采集,回到前台调用StartCapture
恢复采集。
开启/关闭预览
通过调用 QNCameraVideoTrack.Play 接口进行预览画面的开关控制:
// 开启预览
let ret: number = this.cameraTrack.Play(componentController)
// 关闭预览
let ret: number = this.cameraTrack.Play(null)
开启/关闭手电筒
通过 QNCameraVideoTrack.TurnLightOn 接口开启手电筒
let ret: number = this.cameraTrack.TurnLightOn
通过 QNCameraVideoTrack.TurnLightOff 接口关闭手电筒
let ret: number = this.cameraTrack.TurnLightOff
切换摄像头
通过调用 QNCameraVideoTrack.SwitchCamera 接口进行摄像头的切换。
let ret: number = this.cameraTrack.SwitchCamera(this.switchCameraCallback)
private switchCameraCallback: QNCameraSwitchResultCallback = (facing, errorMessage) => {
console.log("switch camera callback ", QNCameraFacing[facing], errorMessage)
}
设置缩放
通过设置属性 QNCameraVideoTrack.SetZoom 对相机采集的画面进行缩放。
注意:设置的数值需要小于等于
GetSupportZooms()
,如果大于会设置失败
let ret: number = this.cameraTrack.SetZoom = 1.0
麦克风音频 Track
QNMicrophoneAudioTrack 为麦克风采集的音频 ,如需以麦克风采集数据作为音频源,仅需创建一个 QNMicrophoneAudioTrack 为麦克风采集的音频 Track 并发布即可,其创建方式如下:
let micTrackConfig = new QNMicrophoneAudioTrackConfig()
micTrackConfig.audioQuality = new QNAudioQuality()
this.micTrack = QNRTC.CreateMicrophoneAudioTrack(micTrackConfig)
其中,QNAudioQuality 代表音频的质量参数,包括编码码率。
注意:SDK 当前仅支持一路音频 Track,因此,在创建了 QNMicrophoneAudioTrack 之后,将无法再创建。
示例代码
音视频采集场景的示例代码可参考 API-Examples-HarmonyOS