网站首页 > 博客文章 正文
前言:
在音视频开发中,音频也是一个重要功能之一。在音频开发中有两个重要的概念,一个是PCM数据格式,另外一个是AAC数据格式。下面我们会重点介绍!
一、PCM重要音频参数:
PCM数据也被称之为脉冲编码调制数据,也指的是音频未经过压缩的原始数据。它是由模拟信号通过采样、编码、量化等步骤转换成标准的数字信号。
1、PCM数据的存储格式:
通常来说,声道的存储一般有两种形式,一种是Paketed另外一种是Planner。Packeted方式指的是交错存储,Planar指的是分开存储。如下:
Packeted: L R L R L R L R
Planar:L L L L L R R R
2、采样率:
采样率指的是声音每秒中采样点的个数,比方说采样率48000就相当于每秒有48000次采样,在日常开发中有几个常见的采样率: 22000HZ(22KHZ)、44100HZ(44.1KHZ)、48000HZ(48KHZ)、96000(96KHZ)、192000(192KHZ)。
3、采样深度:
采样深度指的是每个采样点的大小。通常来说,常用的采样深度是24bit、16Bit、8bit。
4、通道数:
通道数常见有包括单通道、双通道、四声道等。这个很好理解,就是有几路通道,更直白的说,和我们平时走路一样,有几条路可以选择!
5、比特率:
比特率指的是PCM原始音频数据每秒传输的位数(bit)。对于PCM数据来说,比特率的计算公式 = 采样率 * 采样深度 * 通道数。
6、PCM数据的大小计算:
假设我们采集一段10分钟大小的PCM数据,采样率48000、采样深度8bit、采样2通道。那它的大小计算是:
48000*8*2*10*60/8/1024/1024 = 54M
二、AAC数据的重要参数:
说完PCM数据的参数后,我们再来了解一下另外一个重要的音频格式: AAC格式:AAC也称之为高级高级压缩编码格式,它是基于mpeg-2的一种音频压缩格式,目前这种音频格式广泛运用在网络通信、视频语音、在线广播等领域。AAC的优势在于压缩比更大并且音质更佳,AAC的压缩比可以达到20:1,这使得在网络传输中有着广泛的运用。
1、AAC格式的讲解:
AAC格式分为两种:一种是ADIF格式,另外一种是ADTS格式。ADIF格式的特点是:只有一个头部信息,后面都是AAC裸流数据,这种格式通常运用在磁盘播放和文件存储;而另外一种ADTS格式的特点是:每一帧数据 = adts header(AAC头部) + aac es(AAC裸流数据),这种格式适合在流媒体进行播放。下面我们重点来看看ADTS的结构:
我们先来看看adts header,adts header由两部分组成,一个是adts_fix_header,另外一个是adts_variable_header。如下图所示:
adts_fix_header的结构如下:
syncword: 同步字节,说明一个adts的开始
ID MPEG:标识符,设置为1
layer:默认为00
protction_absent:表示是否误码校验
profile:AAC等级(下面这个是AAC等级)
sample_frequence_index: 采样率下标
chennel_configure: 声道数
frame_length:一个adts的长度
adts_variable_header的结构如下:
frame_length:adts的长度
adts_buffer_fullness:默认值是0x7FF,代表的是码率可变
number_of_raw_data_blocks_in_frame:代表的是ADTS帧有。
原文链接:
https://mp.weixin.qq.com/s/B4A2VQybPlZtMkqyg2Rrww
侵删~
猜你喜欢
- 2025-03-19 Qt网络编程深度实践:如何构建支持断点续传的工业级文件传输系统
- 2025-03-19 c++音视频开发FFmpeg介绍与基础知识理解
- 2025-03-19 Qt/C++音视频开发逐帧播放/上一帧下一帧/切换播放进度/实时解码
- 2025-03-19 玩转音视频开发(一)(音视频开发进阶)
- 2025-03-19 嵌入式开发、C++后台开发、C++音视频开发怎么选择?
- 2025-03-19 音视频开发真的在C++中最难吗?看看专家怎么说
- 2025-03-19 离谱!用C++ Qt 写的播放器竟能硬解4K
- 2025-03-19 24h教你做一个Qt版俄罗斯方块!信号槽优化/皮肤系统/多线程音效
- 2025-03-19 音视频SDK直播连麦功能:从0到1的开发实践
- 2025-03-19 音视频互动APP的开发(音视频开发一般在什么平台)
你 发表评论:
欢迎- 374℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 369℃用AI Agent治理微服务的复杂性问题|QCon
- 360℃初次使用IntelliJ IDEA新建Maven项目
- 353℃Maven技术方案最全手册(mavena)
- 351℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 349℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 348℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 344℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)