实时音视频云

  • 媒体配置

    最近更新时间:2018-07-05 16:23:20

    1、视频配置

    1.1、枚举摄像头列表及其采集属性

    视频设备属性结构体 CameraDeviceInfo

    /**
    * 摄像头采集属性
    */
    typedef struct _TCameraCapability
    {
        int                 width;
        int                 height;
        int                 max_fps;
        VideoCaptureType    video_type;
    } CameraCapability;
    
    typedef std::vector<CameraCapability> CameraCapabilityVec;
    
    /**
    * 摄像头基本信息及其支持的采集属性
    */
    typedef struct _TCameraDeviceInfo
    {
        std::string         device_id;
        std::string         device_name;
        CameraCapabilityVec capability_vec;
    }CameraDeviceInfo;
    

    以上可通过 QNRTCVideo::GetCameraInfo(uint32_t device_index_) 获取;

    1.2、视频参数配置

    通过 CameraSetting 设置指定摄像头设备信息和采集(同编码)尺寸、帧率、码率以及预览窗口句柄:

    typedef struct _TCameraSetting
    {
        std::string device_id;   
        std::string device_name;   
        int         width       = 640;      // 宽度
        int         height      = 480;      // 高度
        int         max_fps     = 15;       // 帧率:默认为 15fps
        int         bitrate     = 300000;   // 视频码率,单位:bps;如果为 0,则 SDK 内部自适应
        void*       render_hwnd = nullptr;  // 视频渲染窗口句柄
    }CameraSetting;
    

    注:需在视频预览或发布前,调用 QNRTCVideo::SetCameraParams(CameraSetting& camera_setting_) 进行配置,连麦过程中调用无效。

    2、音频配置

    2.1、音频设备枚举

    音频设备信息结构体:

    /**
    * Audio device information
    */
    typedef struct _TAudioDeviceInfo
    {
        enum AudioDeviceType
        {
            adt_invalid = -1,
            adt_record,
            adt_playout,
        };
        unsigned int device_index;
        AudioDeviceType device_type               = adt_invalid;
        char device_name[QNRTC_MAX_DEVICE_LENGHT] = { 0 };
        char device_id[QNRTC_MAX_DEVICE_LENGHT]   = { 0 };
    }AudioDeviceInfo;
    

    以上可通过 QNRTCAudio::GetAudioDeviceInfo( AudioDeviceInfo::AudioDeviceType device_type_, unsigned int device_index_, __out AudioDeviceInfo& audio_info_) 进行获取,如:

    // 枚举音频采集设备列表
    for (int i(0); i < _rtc_audio_interface->GetAudioDeviceCount(AudioDeviceInfo::adt_record); ++i) {
        AudioDeviceInfo audio_info;
        if (_rtc_audio_interface->GetAudioDeviceInfo(AudioDeviceInfo::adt_record, i, audio_info) == 0) {
            ...
            );
        }
    }
    
    // 枚举音频播放设备列表
    for (int i(0); i < _rtc_audio_interface->GetAudioDeviceCount(AudioDeviceInfo::adt_record); ++i) {
        AudioDeviceInfo audio_info;
        if (_rtc_audio_interface->GetAudioDeviceInfo(AudioDeviceInfo::adt_playout, i, audio_info) == 0) {
            ...
        }
    }
    

    2.2、音频设备配置

    SDK 目前支持指定特定的音频输入、输出设备进行连麦,相关控制接口为:

    typedef struct _TAudioDeviceSetting
    {
        enum WindowsDeviceType
        {
            wdt_DefaultCommunicationDevice = -1,
            wdt_DefaultDevice = -2
        };
        unsigned int      device_index;   //speaker or playout device index
        WindowsDeviceType device_type = wdt_DefaultDevice;
    }AudioDeviceSetting;
    
    // 指定音频输入设备进行连麦
    virtual int SetRecordingDevice(AudioDeviceSetting recording_device_setting_) = 0;
    // 指定音频输出设备进行连麦
    virtual int SetPlayoutDevice(AudioDeviceSetting playout_device_setting_) = 0;
    

    注:通话过程中指定设备无效,需在通话开始前进行相关操作。

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