实时音视频

  • 实时音视频 > 使用指南 > Windows >音视频采集

    音视频采集

    最近更新时间: 2022-03-24 14:11:09

    音视频 track 为音视频交互的基本单位,本部分介绍音视频 track 的创建及采集等功能的使用。

    摄像头视频 Track

    QNCameraVideoTrack 为摄像头采集的本地 track,其创建方式如下:

    QNCameraVideoTrackConfig camera_info = {{width, height, 30, 2000},
                                                {width, height, 30},
                                                video_dev_id,
                                                CAMERA_TAG,
                                                enable_simulcast_};
    QNCameraVideoTrack video_track = QNRTC::CreateCameraVideoTrack(camera_info, this);
    

    其中:

    QNCameraVideoTrackConfig 用来配置摄像头采集参数和编码参数。

    在创建好 QNCameraVideoTrack 之后,就可以通过调用 SDK 提供的相关方法进行摄像头的相关操作:

    开启/关闭预览

    // 预览摄像头(如要取消则将 QNView.hwnd 设置为空)
    virtual void Play(QNView& view) = 0;
    

    开启/关闭镜像

    virtual void SetMirror(bool mirror) = 0;
    

    屏幕录制视频 Track

    QNScreenVideoTrack 为屏幕录制的本地 track,录屏连麦的主要步骤如下:

    创建 screen track

    在通过了屏幕录制申请后,可以通过如下方式进行 screen track 的创建:

    QNScreenVideoTrackConfig screen_info{{1920, 1080, 30, 2000},
                                             source_id,
                                             SCREENCASTS_TAG,
                                             enable_simulcast_,
                                             is_window_graphics_capture_enabled};
    QNScreenVideoTrack video_track = QNRTC::CreateScreenVideoTrack(screen_info);
    

    其中,QNScreenVideoTrackConfig 用来配置视频的编码参数,包括分辨率、帧率和码率(kbps)等。

    开启/关闭预览

    // 预览摄像头(如要取消则将 QNView.hwnd 设置为空)
    virtual void Play(QNView& view) = 0;
    

    外部导入视频 track

    SDK 外部导入视频连麦仅支持导入 kI420 数据 格式的数据,使用方式如下:

    创建外部导入视频 track

    QNCustomVideoTrack 为外部数据导入视频 track,创建方式如下:

    QNCustomVideoTrackConfig video_custom_info = {
            {426, 240, 30, 300}, EXTERNAL_VIDEO, enable_simulcast_};
    QNCustomVideoTrack video_track = QNRTC::CreateCustomVideoTrack(video_custom_info);
    

    其中,QNCustomVideoTrackConfig 用来配置视频的编码参数,包括分辨率、帧率和码率(kbps)等。

    数据导入

    导入 I420 数据

    SDK 支持导入 I420 的数据,在创建好 QNCustomVideoTrack 之后,可通过如下方式推送数据:

      /**
       * 推送自定义视频帧
       *
       * @param data 视频数据
       * @param data_size 数据长度
       * @param width 图像宽度
       * @param height 图像高度
       * @param timestamp_us 时间戳,注意单位为:微妙
       * @param video_frame_type 视频原始格式,目前支持:kI420
       * @param rotation 导入后旋转角度,如果不需要旋转则使用默认值 kVideoRotation0
       * 即可
       * @param mirror 导入后是否镜像
       */
      virtual int32_t PushVideoFrame(const uint8_t* data, const uint32_t data_size,
                                     const int32_t width, const int32_t height,
                                     const int64_t timestamp_us,
                                     QNVideoFrameType video_frame_type,
                                     QNVideoRotation rotation,
                                     bool mirror = false) = 0;
    

    麦克风音频 Track

    QNMicrophoneAudioTrack 为麦克风采集的音频 track,如需以麦克风采集数据作为音频源,仅需创建一个 QNMicrophoneAudioTrack 并发布即可,其创建方式如下:

    QNMicrophoneAudioTrackConfig micro_info = {{0, 0, 0, 32}, MICROPHONE_TAG};
    QNMicrophoneAudioTrack audio_track = QNRTC::CreateMicrophoneAudioTrack(micro_info);
    

    其中,QNMicrophoneAudioTrackConfig 包括音频的码率等,这里麦克风的采样率、声道数等由系统录制设备控制

    注意:SDK 当前仅支持一路音频 Track,因此,在创建了 QNMicrophoneAudioTrack 之后,将无法再创建 QNCustomAudioTrack 实例

    外部导入音频 Track

    QNCustomAudioTrack 为外部导入音频 track,如需导入音频数据作为音频源,仅需创建一个 QNCustomAudioTrack 即可,然后通过调用 QNCustomAudioTrack.PushAudioFrame 进行外部音频数据的导入。

    支持的音频数据格式为:PCM 格式。

    使用方式可参考如下示例:

      /**
       * 推送自定义音频帧
       *
       * @param data 音频数据
       * @param data_size 数据长度
       * @param bits_per_sample 位宽,即每个采样点占用位数
       * @param sample_rate 采样率
       * @param channels 声道数
       */
      virtual int32_t PushAudioFrame(const uint8_t* data, uint32_t data_size,
                                     uint32_t bits_per_sample, uint32_t sample_rate,
                                     uint32_t channels) = 0;
    

    注意:SDK 当前仅支持一路音频 Track,因此,在创建了 QNCustomAudioTrack 之后,将无法再创建 QNMicrophoneAudioTrack 实例

    以上内容是否对您有帮助?
  • Qvm free helper
    Close