提交工单
咨询集成、功能及报价等问题
Windows 支持直接采集双声道,用户可以直接采集到双声道音频数据。
如果用户不想直接采集双声道,可以参考下文中的方案。
双声道效果实现的主流程为:
)
下文将分别讲述各个步骤。
主播端输入的数据需要确保为双声道数据,有以下几种方式可以实现:
)
)
音频外部采集和渲染使用详见: 音频进阶-音频外部采集与渲染,本文不再赘述。
)
)
音频前处理使用详见: 音频进阶-音频前处理,本文不再赘述
请注意,业务方必须确保编码之前输入的 PCM 数据为双声道效果数据。如果采集为单声道数据,编码为双声道,那么这两个声道数据播放时也是不会有立体声效果的。
业务方调用该 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);
混流模式下,主播连麦后,连麦的流会经过混流服务器。为了让观众听到双声道效果,需要设置混流服务器编码为双声道。该设置项是混流配置 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';
}
};
混流参数的设置详见:常用功能-多路混流
由于 ZEGO SDK 默认使用双声道播放,用户使用 SDK 播放时,无需做额外的设置。但是,请注意,如果开发者采用音频外部采集和渲染,播放时需要使用双声道才会有立体声效果!

联系我们
文档反馈