实时音视频云

  • 数据导入

    最近更新时间:2018-08-10 17:39:10

    音频

    当用户需要使用外部音频数据源进行通话,而非使用 SDK 内置的麦克风采集时,那么请使用接口 EnableAudioFakeInput(true)关闭内置音频采集,并激活外部音频数据导入功能,然后按照固定频率导入音频 PCM 数据格式即可,接口为 InputAudioFrame,目前支持的 PCM 格式如下:

    • 采样率:支持各种采样率
    • 位深:16bits per sample
    • 声道数:单、双声道
    • 数据存储格式:packet 交叉存储

    注意事项:

    • 当前 SDK 内部传输格式为单声道,外部导入双声道数据后,SDK 内部会自动转换为单声道然后进行后续处理;
    • 使用音频数据导入功能时,时间戳将根据实时导入的 PCM 数据进行累加计算,无需外部传入,外部务必保证数据导入频率均匀切稳定,比如:每次导入 20ms 的 PCM 数据,那么一秒钟内需导入 50 帧左右,否则可能会出现声音的卡顿等异常;

    导入外部音频数据涉及 QNRTCAudio 中以下三个接口,分别如下:

    // 开启或关闭外部音频导入的功能,需在 Publish 之前进行调用
    // @param enable_flag_ true:开启;false:关闭
    // @return 是否开启成功,如果失败则返回非 0 值
    virtual int EnableAudioFakeInput(bool enable_flag_) = 0;
    
    // 导入外部音频 PCM 数据,目前仅支持 signed 16bit per sample, mono 和 stereo 声道数;
    // 导入外部音频数据需要均匀控制频率,过高或过低均会导致连麦语音质量的下降
    // @param audio_data_ PCM 数据指针
    // @param data_size_ 数据大小
    // @param bits_per_sample_ 位深,目前仅支持 16bit
    // @param sample_rate_ 输入音频数据的采样率
    // @param number_of_channels_ 输入音频的声道数
    // @param number_of_frames_ audio_data_ 数据中包含的采样点数(每声道)
    virtual int InputAudioFrame(
        const void* audio_data_,
        unsigned int data_size_,
        unsigned int bits_per_sample_,
        unsigned int sample_rate_,
        unsigned int number_of_channels_,
        unsigned int number_of_frames_
    ) = 0;
    
    // 判断是否激活了导入外部音频数据的功能
    virtual bool IsEnableAudioFakeInput() = 0;
    

    视频

    SDK 提供此接口供用户导入自己的视频数据,同时关闭 SDK 内部的视频采集模块;

    注意事项:

    • 目前支持导入的原始视频数据格式包括:kI420、kYUY2 和 kRGB24;
    • 目前 SDK 内部支持的最大分辨率为 4K * 2K;
    • 导入视频数据时时间戳单位为 微妙,如果用户导入数据时间戳不均匀的话,将会导致画面卡顿;
    • 如果用户发现音画不同步的现象,可以通过调整视频导入的时间戳进行校正;

    导入外部视频数据涉及 QNRTCVideo 中以下三个接口,分别如下:

    // 开启或关闭外部视频导入的功能,需在 Publish 之前进行调用
    // @param enable_flag_ true:开启;false:关闭
    // @return 是否开启成功,如果失败则返回非 0 值
    virtual int EnableVideoFakeCamera(bool enable_flag_) = 0;
    
    // 实时导入外部视频原始数据,目前支持 kI420 kYUY2 kRGB24 格式
    // @param data_ 原始视频数据指针
    // @param data_size_ 原始视频数据大小
    // @param width_ 导入视频的宽度
    // @param height_ 导入视频的高度
    // @param timestamp_us_ 视频时间戳,单位:微妙
    // @param raw_type_ 导入视频的数据格式,目前支持的格式为:kI420 kYUY2 kRGB24
    // @param rotation_ 导入后视频旋转角度,默认不旋转
    // @param mirror_flag_ 导入后是否镜像(水平旋转)
    virtual int InputVideoFrame(
        const unsigned char* data_, 
        const unsigned int& data_size_,
        const unsigned int& width_,
        const unsigned int& height_,
        const unsigned long long& timestamp_us_,
        qiniu::VideoCaptureType raw_type_,
        qiniu::VideoRotation rotation_ = kVideoRotation_0,
        bool mirror_flag_ = false
        ) = 0;
    
    // 判断是否激活了导入外部视频数据的功能
    virtual bool IsEnableVideoFakeCamera() = 0;
    

    注意:
    使用外部数据导入功能,需要在调用 QNRTCRoom::Publish 接口前分别调用 EnableAudioFakeInputEnableVideoFakeCamera 激活相应的数据导入模块;

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