文档中心
Old_Live_Room 互动视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 互动视频
  • 音频进阶
  • 双声道

双声道

更新时间:2024-04-07 11:01

1 使用场景

Windows 支持直接采集双声道,用户可以直接采集到双声道音频数据。

如果用户不想直接采集双声道,可以参考下文中的方案。

2 实现流程

双声道效果实现的主流程为:

下文将分别讲述各个步骤。

2.1 输入双声道数据

主播端输入的数据需要确保为双声道数据,有以下几种方式可以实现:

  • 业务方通过外部采集接口,输入双声道 PCM 数据给 SDK 编码后再发送,流程如下图所示:

  • 业务方通过外部采集接口,输入双声道 AAC 编码后数据给 SDK 发送,流程如下图所示:

音频外部采集和渲染使用详见: 音频进阶-音频外部采集与渲染,本文不再赘述。

  • 业务方通过外部音频前处理接口,将 SDK 采集的数据处理为双声道效果,再将 PCM 数据回传给 SDK 编码 ,流程如下图所示:

  • 业务方通过外部音频前处理接口,将 SDK 采集的数据处理为双声道效果,再将 AAC 编码后数据回传给 SDK 编码 ,流程如下图所示:

音频前处理使用详见: 音频进阶-音频前处理,本文不再赘述

请注意,业务方必须确保编码之前输入的 PCM 数据为双声道效果数据。如果采集为单声道数据,编码为双声道,那么这两个声道数据播放时也是不会有立体声效果的。

2.2 设置推流编码双声道

业务方调用该 API 设置编码双声道。该 API 需要在初始化 SDK 后,推流前调用。

LiveRoom-Publisher.h

/**
 设置推流音频声道数

 @param count 声道数,1 或 2,默认为 1(单声道)
 @attention 必须在初始化 SDK,调用推流前设置。
 @note SetLatencyMode 设置为 ZEGO_LATENCY_MODE_NORMAL, ZEGO_LATENCY_MODE_NORMAL2, ZEGO_LATENCY_MODE_LOW3 才能设置双声道,在移动端双声道通常需要配合音频前处理才能体现效果。
 */
 void SetAudioChannelCount(int count);

2.3 设置混流编码双声道

混流模式下,主播连麦后,连麦的流会经过混流服务器。为了让观众听到双声道效果,需要设置混流服务器编码为双声道。该设置项是混流配置 ZegoCompleteMixStreamConfig 中的 channels:

/** 完整混流配置 */
struct ZegoCompleteMixStreamConfig
{
    char szOutputStream[ZEGO_MAX_COMMON_LEN];   /**< 输出流名或 URL,参见 bOutputIsUrl */
    bool bOutputIsUrl;                          /**< true: szOutputStream 为完整 RTMP URL,false: szOutputStream 为流名 */

    int nOutputFps;                             /**< 混流输出帧率 */
    int nOutputBitrate;                         /**< 混流输出码率 */

    int nOutputWidth;                           /**< 混流输出视频分辨率宽 */
    int nOutputHeight;                          /**< 混流输出视频分辨率高 */

    int nOutputAudioConfig;                     /**< 混流输出音频格式 */

    ZegoMixStreamConfig* pInputStreamList;      /**< 混流输入流列表 */
    int nInputStreamCount;                      /**< 混流输入流列表个数 */

    const unsigned char * pUserData;            /**< 用户自定义数据 */
    int nLenOfUserData;                         /**< 用户自定义数据的长度 */

    int nChannels;                              /**< 混流声道数,默认为单声道 */

    ZegoCompleteMixStreamConfig ()
    : bOutputIsUrl(false)
    , nOutputFps(0)
    , nOutputBitrate(0)
    , nOutputWidth(0)
    , nOutputHeight(0)
    , nOutputAudioConfig(0)
    , pInputStreamList(0)
    , nInputStreamCount(0)
    , pUserData(0)
    , nLenOfUserData(0)
    , nChannels(1)
    {
        szOutputStream[0] = '\0';
    }
};

混流参数的设置详见:常用功能-多路混流

2.4 播放双声道

由于 ZEGO SDK 默认使用双声道播放,用户使用 SDK 播放时,无需做额外的设置。但是,请注意,如果开发者采用音频外部采集和渲染,播放时需要使用双声道才会有立体声效果!

本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈