计算音频帧的播放时间(音频码流 音频帧)

摘要:
背景知识:根据aac文档分析:1AAC音频帧播放时间=对应于aac帧的采样数/采样频率每帧1024个采样。采样率为44100KHz,每秒44100个采样,因此根据公式,音频帧的播放时间=与AAC帧相对应的采样数/采样频率,例如,当前AAC帧的回放时间=1024*10000/44100=22.32ms,或者相反,当前AAC帧的回放时间=1024/44100=0.02232s=22.32ms,如果您想通过音频缓冲的毫秒数来计算要缓冲的音频帧的实际数量,可以按如下方式计算:例如,48K缓冲300毫秒需要多少个缓冲区,一秒钟内可以生成多少个音频帧乘以时间刻度=/=14.0625。

音频码流(冗余数据占的比例):
先简单讲一下对于ADTS header的结构的理解:
1)ADTS header位于每一个aac帧的开头,长度一般是7字节(也可以是9字节的,没见过)。
2)每个aac帧的长度固定为1024个sample(可以是1024*n,没见过n>1的情况)。
3)ADTS header中大部分信息无用,有用的只有采样率(4bit)、声道数(3bit)和帧的大小(13bit),这三项总共只有20bit。
mp4格式会集中存放每一个frame的index,每个index占4个字节。但因为mp4本身还有其他tag,所以对于较短的小文件冗余依然比ADTS大。
如一个20kpbs的48kHz he-aac语音,如果用ADTS存放,冗余数据占的比例可以这么计算
1、每秒的音频数据量是20/8=2560 Byte;
2、每秒的音频帧数是24000/1024=23.4375帧;(由于编码的aac算法是he-aac,它自带sbr技术,因此SBR只有一半的采样率)待实际验证
3)每秒ADTS header的大小是7*23.4375=164.0625 Byte
4) 冗余数据占的比例是164.0625 / 2560 = 6.4%
可见还是相当大的
mp4格式会集中存放每一个frame的index,每个index占4个字节。但因为mp4本身还有其他tag,所以对于较短的小文件冗余依然比ADTS大。

===============================================================================================
采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。
。正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质
对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。
背景知识:
(一个AAC原始帧包含一段时间内1024个采样及相关数据)根据aac文档
分析:
1 AAC
音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)
一帧 1024个 sample。采样率 Samplerate 44100KHz,每秒44100个sample,
所以 根据公式
音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率
(NOTE:该时间可作解码时间的参考,解码时间应偏差确保在该时间的一定范围,异常的话,做一定的异常处理)
如,当前AAC一帧的播放时间是= 1024*1000000/44100= 22.32ms(单位为ms)

当前AAC一帧的播放时间是= 1024/44100 = 0.02232 s(单位为秒)=22.32ms(单位为ms)
反过来,如当想通过音频缓冲多少ms来计算实际应缓冲多少个音频帧时,可下计算:
比如对48K缓冲300ms需要多少个buffer,
buffer = 一秒内能产生多少个音频帧(48000/1024) 乘以 时间比例(300/1000) = (48000*300)/(1024*1000) = 14.0625个。

2 MP3
mp3 每帧均为1152个字节, 则:
frame_duration = 1152 * 1000000 / sample_rate
例如:sample_rate = 44100HZ时, 计算出的时长为26.122ms,这就是经常听到的mp3每帧播放时间固定为26ms的由来。

===============================================================================================
音视频流的发送
1 请教大伙
我只做过 MPEG4视频流的RTP打包传输 接收
现在加入了音频采集 所以要发送 音视频流
我想请问大伙 在发送时 一般的做法是 音视频流分开发送
还是 发送音视频的合成流?
答案:
直播考虑实时性的话,就可能要考虑丢视频包、保音频包;分开传输比较好
点播不考虑实时性、要求同步的话,可以进行缓冲;合并传输比较好

现在的话 对合成流打包 就不需要有什么讲究了吧
在接收端 解RTP包 在接 分解 filter 再 分别解压音视频流

免责声明:文章转载自《计算音频帧的播放时间(音频码流 音频帧)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇001.mysql安装(lnmp)DataTable表连接下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

AAC帧格式及编码介绍

参考资料: AAC以adts格式封装的分析:http://wenku.baidu.com/view/45c755fd910ef12d2af9e74c.html aac编码介绍:http://wenku.baidu.com/view/0de48034f111f18583d05a65.html AAC音频压缩编码标准的ADTS与LATM的格式分析:http:/...

ffmpeg文档16-音频编码器

16 音频编码器 介绍当前可用的音频编码器 aac AAC(Advanced Audio Coding )编码器 当前原生(内置)编码器还处于实验阶段,而且只能支持AAC-LC(低复杂度AAC)。要使用这个编码器,必须选择 ‘experimental’或者'lower' 因为当前还处于实验期,所以很多意外可能发生。如果需要一个更稳定的AAC编码器,参考l...

I2S与pcm的区别

I2S仅仅是PCM的一个分支,接口定义都是一样的, I2S的采样频率一般为44.1KHZ和48KHZ做,PCM采样频率一般为8K,16K。有四组信号: 位时钟信号,同步信号,数据输入,数据输出. I2S总线标准 I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S标准中,既规...

kurento用gstreamer推流 RTP to RTMP

基于Gstreamer的rtp转rtmp代码 flv不支持 音频 48000. 支持44k。flv不支持音频opus格式。   1,用ffmpeg推流到rtp。 srs的示例flv文件: ffmpeg -re -stream_loop -1 -i ./doc/source.200kbps.768x320.flv -an -vcodec h264 -...

移动通信最先进的音频编解码器EVS及用好要做的工作

语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势。如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音是互联网厂商提供的服务,一般免费,如微信语音。目前语音通信技术上就分成了两大阵营:传统通信阵营和互联网阵营,互相竞争,推动着语音通信技术的发展。具体到编解码器...

AAC ADTS格式分析

转自: https://blog.csdn.net/jay100500/article/details/52955232 https://blog.csdn.net/andyhuabing/article/details/40983423 https://blog.csdn.net/liukun321/article/details/25337425 ht...