实时音频编解码之十一Opus编码
本文谢绝任何形式转载,谢谢。
第四章 Opus编码
Opus是较为成熟的开源商用语音编解码器,其编码质量高且无版权使用费,因WebRTC标准中规定要支持该音频编码器,所以当今各大浏览器都支持Opus编码器。Opus有很多突出的优点,如延迟低、编码范围宽、输出比特率可控等。Opus常用于实时通信和实时流媒体等程序中,通常伴随视频流,由于人耳对声音更为敏感,所以常以音频流RTP时间戳为基准同步视频流,音视频同步并不再本书范畴。
Opus编码比特率范围从窄带的6kbps到高品质立体声的510kbps,Opus使用LP和MDCT两种技术,在语音和音乐场景中都取得较好的压缩率和音频质量,其中LP技术基于Silk编码器,MDCT技术基于CELT编码器,Opus编码器是SILK和CELT编码器的集成,将SILK对语音编码的优势和CELT对音乐编码的优势相结合,通过混合编码的方式以便在语音和音乐场景下获得最佳的编码质量,Opus编码器的核心是SILK和CELT,两者之间相互独立,输出比特率流是SILK和CELT比特流的混合,SILK和CELT两者和Opus的关系如图4-1所示:
图4-1 Opus编码器结构框图
由于本书侧重于编解码原理及其实现,因而Opus编码器的一些逻辑控制流并不专门介绍,这些控制流包括编码器模式选择、编码比特率分配等。Opus编码的规范手册是RFC6716,规范中定义了比特流的组织格式,和比特流解码步骤,编码侧如何获取解码端需要的参数手册并没有做强制要求,当然手册中也给了
实时音频编解码之十一Opus编码相关推荐
- 实时音频编解码之十七 Opus解码 SILK解码
本文谢绝任何形式转载,谢谢. 5.2 Silk解码流程 解码器线性预测层主要使用长短时预测合成滤波器对激励信号滤波实现,线性预测层内部的工作带宽为NB.MB以及WB,对于SWB以及FB的混合编码工作模 ...
- 实时音频编解码之十六 Opus解码
本文谢绝任何形式转载,谢谢. 第五章 Opus解码 理论上而言,编码的逆过程就是解码,如果理解了第四章编码的内容,这里叙述解码过程显得有所多余,但是笔者在理解Opus编码原理的时候,发现编解码交叉多轮 ...
- 实时音频编解码之五 噪声整形
本文谢绝任何形式转载,谢谢. 1.4.5 噪声整形 因压缩比特率而带来的量化误差会导致规律的噪声产生,即使量化带来的噪声能量上远小于语音信号,但是由于人的听觉系统对规律性的噪声非常敏感,因而非常影响听 ...
- 实时音频编解码之八 频带扩展
本文谢绝任何形式转载,谢谢. 1.4.8 频带扩展 在线性预测应用中,由于极点过于靠近单位圆,合成滤波器可能处于临界稳定的状态,在定点实现中这一问题更加严重,定点的量化和计算中的精度损失可能使得临界稳 ...
- 基于 CoreAudio 的音频编解码(二):音频编码
系列文章目录 基于 CoreAudio 的音频编解码(一):音频解码 基于 CoreAudio 的音频编解码(二):音频编码 前言 在 基于 CoreAudio 的音频编解码(一):音频解码 中,我们 ...
- 基于 FFMPEG 的音频编解码(三):音频编码
音频编码 基于 FFMPEG 的音频编解码(一):Hello FFMPEG,安装与编译 基于 FFMPEG 的音频编解码(二):音频解码 基于 FFMPEG 的音频编解码(三):音频编码 在前面文章中 ...
- 移植Opus音频编解码库到FreeScale iMX6q(飞凌嵌入式的OKMX6Q-C开发板)平台
移植Opus音频编解码库到FreeScale iMX6q(飞凌嵌入式的OKMX6Q-C开发板)平台 交叉编译器 使用飞凌提供的最新版交叉编译工具链,fsl-imx-x11-glibc-x86_64-m ...
- 音频编解码·实战篇(1)PCM转至AAC(AAC编码)
音频编解码·实战篇(1)PCM转至AAC(AAC编码) 作者:柳大·Poechant 博客:blog.csdn.net/poechant 邮箱:zhongchao.ustc@gmail.com 日期: ...
- 音频编解码(软/硬编码),音频转码
> 音频编解码(软编码) FFMpeg视频软件编解码的.B站的ijkplayer等. 音频数据的编解码- http://blog.51cto.com/ticktick/1760191 1.And ...
- 详解音频编解码的原理、演进和应用选型等
本文来自网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack根据演讲内容整理而成(本次演讲PPT文稿,请从文末附件下载). 1 ...
最新文章
- SQL Server 游标的使用示例
- 用python制作网页要学哪些东西_python实战计划学习:做一个网页
- Linux C++多线程同步的四种方式
- leetcode1005. K 次取反后最大化的数组和
- STL bitset用法总结
- java商品管理系统_【Java Web】简易商品信息管理系统——首个Web项目
- ubuntu从命令打开终端
- android获取网络视频缩略图,Android 获取缩略图,网络视频,或者本地视频
- Mac下配置ndk/adb
- 中文分词的python实现----HMM、FMM
- qq机器人升级最新教程
- SQL教程——连接查询之SQL99标准
- VBA Excel 实践(三)Excel控件及Excel控件的初始化
- FEKO学习:偶极子天线仿真
- mysql1026_PAT Basic 1026(示例代码)
- 微信3.7版本后,个人数据文件夹的乱码文件夹怎么找文件?
- ES6 极简教程(ES6 Tutorial) 文 / 东海陈光剑
- 7、purge_haplogs 基因组去冗余
- 串口虚拟工具(VSPD)的使用方法
- 用python处理html代码的转义与还原 #x27; amp; lt; gt; quot; #x27;等特殊字符