实时音视频

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

    音视频采集

    最近更新时间:2021-11-19 11:18:26

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

    摄像头视频 Track

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

    QNCameraVideoTrackConfig camera_info = { width,height,30,2000000,video_dev_id,CAMERA_TAG,m_hWnd,_enable_simulcast };
    _camera_track_ptr = QNRTC::CreateCameraVideoTrack(camera_info);
    

    其中:

    QNCameraVideoTrackConfig 用来配置摄像头采集参数,包括分辨率和帧率等

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

    开启/关闭预览

    通过调用以下接口进行预览画面的开关控制:

    //预览/取消预览摄像头
    virtual int PreviewCamera(QNCameraPreviewSetting& cameraSetting) = 0;
    virtual int UnPreviewCamera(std::string& cameraId) = 0;
    

    开启/关闭镜像

    SDK 内提供了预览镜像和采集镜像两种镜像接口。通过调用 QNCameraVideoTrack.SetRenderMirror(bool mirror) 接口即可开启或关闭预览镜像,开启了预览镜像仅仅在本地预览才会镜像,远端看还是正常的画面;通过调用 QNCameraVideoTrack.SetCaptureMirror(bool mirror) 接口即可开启或关闭采集镜像,若开启了采集镜像本地预览和远端都将会显示镜像画面:

    virtual void SetRenderMirror(bool mirror) = 0;
    virtual void SetCaptureMirror(bool mirror) = 0;
    

    屏幕录制视频 Track

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

    创建 screen track

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

    QNScreenVideoTrackConfig screen_info{ 30,2000000,std::to_string(source_id),
                SCREENCASTS_TAG,GetDlgItem(IDC_STATIC_VIDEO_PREVIEW2)->m_hWnd };
    _screen_track_ptr = QNRTC::CreateScreenVideoTrack(screen_info);
    

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

    是否支持 Window Graphics 窗口采集

    virtual void EnableWindowGraphicsCapture(bool enable) = 0;

    //预览/取消预览摄像头
    //预览/取消预览指定的屏幕、窗口
    virtual int PreviewScreen(QNScreenPreviewSetting& screenSetting) = 0;
    virtual int UnPreviewScreen(unsigned int screenId) = 0;
    

    开启/关闭预览

    通过调用以下接口进行预览画面的开关控制:

    //预览/取消预览摄像头
    //预览/取消预览指定的屏幕、窗口
    virtual int PreviewScreen(QNScreenPreviewSetting& screenSetting) = 0;
    virtual int UnPreviewScreen(unsigned int screenId) = 0;
    

    外部导入视频 track

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

    创建外部导入视频 track

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

    QNCustomVideoTrackConfig video_custom_info = { 426,240,30,300000,EXTERNAL_VIDEO,m_hWnd };
    _custom_video_track_ptr = QNRTC::CreateCustomVideoTrack(video_custom_info);
    

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

    数据导入

    导入 NV21 数据

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

    _custom_video_track_ptr.PushVideoFrame(
            buf,  // 数据
            426 * 240 * 3 / 2, //数据长度
            426,  //宽
            240,  //高
            timestamp,  //时间戳
            qiniu::QNVideoSourceType::kI420,  // 数据格式
            qiniu::kVideoRotation_0 //旋转角度
            );
    

    麦克风音频 Track

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

    QNMicrophoneAudioTrackConfig micro_info = { 32000,MICROPHONE_TAG };
    _microphone_audio_track_ptr = QNRTC::CreateMicrophoneAudioTrack(micro_info);
    

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

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

    外部导入音频 Track

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

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

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

    _custom_audio_track_ptr->PushAudioFrame(
            buf, //数据
            441 * 8, //数据长度
            16,  //位宽
            44100, //采样率
            2, //声道数
            441 * 2 //每次导入数据所包含的采样点数
            );
    

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

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