human: 如何处理七牛云的实时音视频音视频采集

gpt: [实时音视频](https://developer.qiniu.com/rtc) > 使用指南 > Uniapp >音视频采集

#  音视频采集

最近更新时间: 2023-12-18 15:12:05

本部分介绍音视频 [Track](https://developer.qiniu.com/rtc/11390/UniappQNTrack)
的创建及采集等功能的使用。

>   * 一路 Track 代表一路音频或者视频的数据
>   * SDK 支持创建并发布多路视频 Track，但是仅支持同时创建一路音频 Track，重复创建将会失败
>

# 摄像头视频 Track

[QNCameraVideoTrack](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack)
为摄像头采集的本地 track，其创建方式如下：

    
    
    QNRTC.createCameraVideoTrack({
        bitrate: 800,
        height: 480,
        width: 640
    })
    

其中可以传入
[QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/11394/UniappQNCameraVideoTrackConfig)
对象修改默认配置。

在创建好
[QNCameraVideoTrack](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack)
之后，就可以通过调用 SDK 提供的相关方法进行摄像头的相关操作：

### 开始/停止摄像头采集

通过调用
[QNCameraVideoTrack.startCapture](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#startCapture)
接口进行摄像头采集，通过调用
[QNCameraVideoTrack.stopCapture](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#stopCapture)
接口停止摄像头采集。

    
    
    const cameraVideoTrack = QNRTC.createCameraVideoTrack()
    cameraVideoTrack.startCapture()
    cameraVideoTrack.stopCapture()
    

> 创建 **Track** 后， sdk 会自动采集，由于 **Android** 和 **iOS**
> 中的相机资源是单例的，若应用占用了相机资源则会导致其他应用无法获取到相机资源，SDK 支持在通话过程中可以通过
> [QNCameraVideoTrack.startCapture](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#startCapture)
> 获取相机资源，通过
> [QNCameraVideoTrack.stopCapture](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#stopCapture)
> 释放相机资源。

### 预览窗口

通过在 nvue 中添加原生组件，即可在试图中预览摄像头采集的窗口

    
    
    <QNRTC-UniPlugin-SurfaceView :local="0" :identifyID="cameraVideoTrack.identifyID" :trackID="cameraVideoTrack.trackID"></QNRTC-UniPlugin-SurfaceView>
    

  * local: 0 本地 track 视图，1 远端 track 视图
  * identifyID: uniapp 中每个 track 的唯一标识符
  * trackID: 服务器对于每个 track 的唯一标识符（track 未发布时该值为""）

### 开启/关闭闪光灯

通过调用
[QNCameraVideoTrack.turnLightOn](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#turnLightOn)
接口开启闪光灯，通过调用
[QNCameraVideoTrack.turnLightOff](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#turnLightOff)
接口关闭闪光灯：

    
    
    cameraVideoTrack.turnLightOn()
    cameraVideoTrack.turnLightOff()
    

### 切换摄像头

通过调用
[QNCameraVideoTrack.switchCamera](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#switchCamera)
接口进行摄像头的切换。

    
    
    cameraVideoTrack.switchCamera()
    

### 设置缩放

通过调用
[QNCameraVideoTrack.setZoom](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#setZoom)
接口对相机采集的画面进行缩放。需要注意的是 setZoom 里的参数必须是通过调用
[QNCameraVideoTrack.getZoom](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#getZooms)
接口获取到的列表范围内的数值，如果
[QNCameraVideoTrack.getZooms](https://developer.qiniu.com/rtc/11433/UniappQNCameraVideoTrack#getZooms)
接口获取到的列表为空，即代表不支持缩放设置：

    
    
    cameraVideoTrack.setZoom()
    

# 屏幕共享视频 Track

[QNScreenVideoTrack](https://developer.qiniu.com/rtc/11421/UniappQNScreenVideoTrack)
为屏幕共享的本地 track，录屏连麦的主要步骤如下：

### 判断设备是否支持屏幕共享

屏幕共享依赖系统版本，可通过 SDK 提供的如下接口判断是否支持：

    
    
    const track = QNRTC.createScreenVideoTrack()
    const isSupported track.isScreenCaptureSupported()
    

### 发起屏幕共享请求

由于 iOS 与 Android 系统的差异，在 Android 中需要发起屏幕共享请求，iOS 可跳过此步骤：

    
    
    const track = QNRTC.createScreenVideoTrack()
    track.requestPermission((res) => {
        if(res) {
            // 请求成功
        }else {
            // 请求失败
        }
    })
    

# 麦克风音频 Track

[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/11388/UniappQNMicrophoneAudioTrack)
为麦克风采集的音频 track，如需以麦克风采集数据作为音频源，仅需创建一个
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/11388/UniappQNMicrophoneAudioTrack)
并发布即可，其创建方式如下：

    
    
    QNRTC.createMicrophoneAudioTrack({
        bitrate: 24
    })
    

可以传入
[QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/11431/UniappQNMicrophoneAudioTrackConfig)
对象进行参数配置。

以上内容是否对您有帮助？