前言
随着视频直播应用被越来越广泛地接受,视频直播应用的相关技术和玩法也在不断翻新,以便持续地吸引和留住用户。这半年来,一些典型的创新玩法,包括K歌直播和合唱直播等都是非常受用户欢迎的。这些创新玩法都用到了实时音频混音技术。
今天,我们就来聊一聊混音技术在视频直播应用中的实现原理、方案等,及其在创新玩法中的实践应用。
混音的应用场景
混音,顾名思义,就是把两路或者多路音频流混合在一起,形成一路音频流。笔者曾经写过两篇关于混流的文章,混流也被称为合流,指的是把视频画面和音频对齐,然后混合成一路音视频流。我们今天要聊的实时音频混音,指的只是音频流的混合。
混音的逻辑可以在终端设备上实现,也可以在服务器上实现,因此可以分为终端混音和云端混音。终端混音一般应用于背景配音,音乐伴奏等场景。云端混音可以是云端混流的一部分,主要目的是利用云端的计算能力去做多路音视频流的音画对齐,还有降低下行带宽成本;也可以做纯粹的云端混音,来实现合唱直播等场景的需求。
混音技术在视频直播应用场景中并不新鲜。视频直播间里比较机械化的掌声、笑声、口哨声甚至背景音乐,都是混音技术的应用。在主播端,采集主播的声音形成音频流A1,从音频文件中读取音频流A2,把A1和A2两路音频流混合,形成一路音频流,这就是混音。
然而,视频直播的玩法创新日新月异。2017年12月酷狗直播上线了KTV直播的玩法,主播可以在线跟随伴奏K歌,直播间的观众能听到主播和伴奏的歌声,还能看到歌词字幕。2018年5月全民K歌上线了合唱直播的玩法,主播和嘉宾一起在线同唱同一首歌,直播间的观众能听到主播和嘉宾的合唱以及伴奏。
这些新的玩法都是对混音技术的深度应用。本文后面将对这两种玩法的逻辑展开讨论。
混音之前的处理
并非任何两路音频流都可以直接混合。
两路音视频流,必须符合以下条件才能混合:
-
1)格式相同,要解压成PCM格式;
-
2)采样率相同,要转换成相同的采样率。主流采样率包括:16k Hz、32k Hz、44.1k Hz和48k Hz;
-
3)帧长相同,帧长由编码格式决定,PCM没有帧长的概念,开发者自行决定帧长。为了和主流音频编码格式的帧长保持一致,推荐采用20ms为帧长;
-
4)位深(Bit-Depth)或采样格式(Sample Format)相同,承载每个采样点数据的bit数目要相同;
-
5)声道数相同,必须同样是单声道或者双声道(立体声)。这样,把格式、采样率、帧长、位深和声道数对齐了以后,两个音频流就可以混合了。
在混音之前,还需要做回声消除、噪音抑制和静音检测等处理。回声消除和噪音抑制属于语音前处理范畴的工作。在编码之前,采集、语音前处理、混音之前的处理、混音和混音之后的处理应该按顺序进行。静音抑制(VAD,Voice Activity Detect)可做可不做。对于终端混音,是要把采集到的