随着视频直播应用被越来越广泛地接受,视频直播应用的相关技术和玩法也在不断翻新,以便持续地吸引和留住用户。这半年来,一些典型的创新玩法,包括K歌直播和合唱直播等都是非常受用户欢迎的。这些创新玩法都用到了实时音频混音技术。

混音,顾名思义,就是把两路或者多路音频流混合在一起,形成一路音频流。笔者曾经写过两篇关于混流的文章,混流也被称为合流,指的是把视频画面和音频对齐,然后混合成一路音视频流。我们今天要聊的实时音频混音,指的只是音频流的混合。

混音的逻辑可以在终端设备上实现,也可以在服务器上实现,因此可以分为终端混音和云端混音。终端混音一般应用于背景配音,音乐伴奏等场景。云端混音可以是云端混流的一部分,主要目的是利用云端的计算能力去做多路音视频流的音画对齐,还有降低下行带宽成本;也可以做纯粹的云端混音,来实现合唱直播等场景的需求。即时通讯聊天软件app开发可以加蔚可云咨询

混音技术在视频直播应用场景中并不新鲜。视频直播间里比较机械化的掌声、笑声、口哨声甚至背景音乐,都是混音技术的应用。在主播端,采集主播的声音形成音频流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)可做可不做。对于终端混音,是要把采集到的主播声音和从音频文件中读到的伴奏声音混合。如果主播停顿一段时间不发出声音,通过VAD检测到了,那么这段时间不混音,直接采用伴奏音乐的数据就好了。然而,为了简单起见,也可以不做VAD。主播不发声音的期间,继续做混音也可以(主播的声音为零振幅)。

我们的周遭环境就是个天然的混音场,各种声波在空气中传播,相互叠加,传入到我们的耳朵里。不同声波在空气中的振幅叠加是线性的,因此,在混音算法中,音频采样数据表征声音的振幅,音频数据的叠加也是线性的。

然而,我们需要考虑两方面的因素。

混合权重:

两个音频流的振幅表示声音的能量水平,然而两个声音可能一个很大,一个很小,对比悬殊。在混音的时候,从用户听音的主观感受来说,是希望两个声音混合后听起来比较均衡。因此,混音算法要考虑两个声音振幅的权重,或者说调节音量。

实践经验表明,采集到的主播声音相对比较小,而文件读取的音频声音比较大,推荐保持主播的声音音量不变,而调节伴奏音乐的音量到一个比较合适的水平,然后再混合。

溢出处理:

两个音频流的两个对应的采样点的数据线性相加可能会造成溢出。每一个音频采样点的数据由16bit,也就是2个字节来表示,能够表示的有符号整型数的范围是-32768~32767。

两个音频流的两个对应的采样点由两个16bit的整数表示,这两个整数相加可能会溢出,向上溢出或者向下溢出。因此,混音算法要能够处理溢出的情况。

溢出处理的方法有很多,这里只提一种:直接加和并且钳位,加和后往上溢出的话,就采用最大正值(32767),如果往下溢出,就采用最大负值(-32768)。

混音处理以后,要做溢出检测,针对溢出的采样点做溢出处理。也可以做一些平滑处理的操作,不过这不是必要的。混音的效果好不好,最终还是要以用户的主观听感来做判断标准。

混音技术一般不会单独使用。在视频直播场景中,往往是和其它一些技术混合使用。比如说,K歌直播场景中,用到的技术包括混音技术,歌词与媒体同步传输技术。合唱直播场景中,用到的技术包括混音技术,连麦直播技术等。多种技术的灵活组合使用,就能创造出让主播和用户喜爱的玩法,拉升直播平台的用户活跃度。

即时通讯开发实时音频的混音如何在视频直播中实现相关推荐

  1. 实时音频混音技术在视频直播中的实践应用

    作者:冼牛 转自:前端之巅 最近半年,视频直播领域中产生不少创新玩法,其中包括 K 歌直播和合唱直播.这些创新玩法都用到实时音频混音技术.今天我们来聊一下混音技术的实现,及其在创新玩法中的应用. 混音 ...

  2. 实时音频混音技术在视频直播场景中的实践

    最近半年,视频直播领域中产生不少创新玩法,其中包括K歌直播和合唱直播.这些创新玩法都用到实时音频混音技术.今天我们来聊一下混音技术的实现,及其在创新玩法中的应用. \\ 混音的应用场景 \\ 混音,顾 ...

  3. 浅析即时通讯开发实时通信技术中的视频编解码

    RTC(Real-time Communications),实时通信,是一个正在兴起的风口行业,经过短短一年的时间,已经有很多玩家进入了这个行业,最典型的应用就是直播连麦和实时音视频通信.但是,很多开 ...

  4. im即时通讯开发之后台应用保活、消息推送的噩梦

    Android P的最后一个开发者预览版(即DP5)已如期发布于2018年7月26日,根据上面这张发布路线图,相信Android P的正式版将很快到来.对于Andriod开发者来说,不管Andriod ...

  5. 盘点im即时通讯开发中Android后台保活方案

    对于IM应用和消息推送服务的开发者来说,在Android机型上的后台保活是个相当头疼的问题. 老板一句:"为什么微信.QQ能收到消息,而你写的APP却不行?",直接让人崩溃,话说老 ...

  6. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 相关推荐阅读:. Android即时通讯 ...

  7. 谈谈即时通讯开发平台

    由于即时通讯系统的复杂性和对服务器稳定性的很高要求,一般即时通讯系统开发至少需要1年左右的时间,而这还只是测试版,离"稳定"还有一定距离,而这时匆匆上马的不稳定的系统会让你失去用户 ...

  8. Android 即时通讯开发小结(一)

    本文将基于 IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 客户端架构 作为一个 IM 软件,最重要的一个特性就是保证消息的达到率和实时性. ...

  9. im即时通讯开发:IM群聊消息的已读回执功能

    我们平时在使用即时通讯应用时候,每当发出一条聊天消息,都希望对方尽快看到,并尽快回复,但对方到底有没有真的看到?我却并不知道. 一个残酷的现实是,很多时候对方其实是早就已经看到了这条消息,但出出种种原 ...

最新文章

  1. 开发你的第一个 Android 应用
  2. 洛谷——P2256 一中校运会之百米跑
  3. php中命名空间重要吗,关于php:PHP中命名空间是怎样的存在一
  4. 捞月狗签约神策数据 数据赋能打造全球玩家生态圈
  5. eventproxy
  6. Java黑皮书课后题第7章:7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数。编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值
  7. 【三种解法实现】剑指 Offer 03. 数组中重复的数字
  8. 使用SVN钩子运行PHP更新服务器代码的注意事项
  9. 和在线视频会议服务器,什么是视频会议服务器端和客户端?
  10. Dubbo常见面试题与答案
  11. STM32移植FATFS+USB+FLASH+PDFLIB库总结
  12. URL编码与解码原理
  13. u盘文件无法复制是什么原因?有什么解决方法
  14. CVPR 2018 微表情识别论文
  15. Acdream 1729 Crime
  16. STM32数据手册中的ADC12、ADC123
  17. 嵌入式设备和固件中的自动漏洞检测(二):动态分析与符号执行技术
  18. android studio调试,华为手机连接电脑找不到HDB interface的解决方案
  19. 《感动中国》2005年度人物评选揭晓
  20. Linux下的c++系统检测工具:网络编程小插曲

热门文章

  1. Latex排版:字母上方加上角标 加横线 加波浪线等
  2. 鉴于vnn 不能注册,推荐hamachi
  3. 河南省各地市经纬度及编码数据
  4. 三菱电梯部分原理图,软件工具及资料
  5. 一键安装Docker图形化管理界面-Shipyard
  6. Java:如何让长度一样的中英文对其
  7. r440服务器显示输出,dell r440服务器介绍
  8. 解决SeekBar拖动过程中thumb周围产生的圆形阴影/白色圆圈
  9. 能vivado仿真却不能DC综合的错误
  10. 微软自拍应用一键美颜背后的人工智能技术(附论文下载)