FFmpeg关于nb_smples,frame_size以及profile的解释
来源:互联网 发布:蛐蛐五线谱 mac 编辑:程序博客网 时间:2024/05/22 10:27
FFmpeg关于nb_smples,frame_size以及profile的解释
/*
音频帧率计算方法(为防止以后忘了)
采样率 sampling = 44100
格式(编码字节数、采样一位所占的字节数) format = s16(格式)=16(bit)
声道数 channels = 2
一次采样(一秒中所占的位数)TotalBit = sampling * channels * format = 1411200
一次采样(一秒中所占的字节数)TotalByte = TotalBit/8 = 176400
1) AAC:
nb_samples和frame_size = 1024
一帧数据量:1024*2*s16/8 = 4096个字节。
ACC帧率 (一秒播放帧数)= TotalByte/4096 = 43.06640625帧
2) MP3:
nb_samples和frame_size = 1152
一帧数据量:1152*2*s16/8 = 4608个字节。
MP3帧率 (一秒播放帧数)= TotalByte/4608 = 38.28125帧
*/
原来一直记得固定编码格式需要固定的sample,例如下面:
1) AAC:
nb_samples和frame_size = 1024
一帧数据量:1024*2*av_get_bytes_per_sample(s16) = 4096个字节。
会编码:88200/(1024*2*av_get_bytes_per_sample(s16)) = 21.5帧数据
2) MP3:
nb_samples和frame_size = 1152
一帧数据量:1152*2*av_get_bytes_per_sample(s16) = 4608个字节。
MP3:则会编码:88200/(1152*2*av_get_bytes_per_sample(s16)) = 19.1帧数据
但最近发现AAC编码的音频nb_sampes和frame_size,nb_samplse是avframe中的,frame_szie是AVCodecContext中的,有可能出现2048的情况,一直以为是样本是分片planner例如AV_SAMPLE_FMT_FLT,AV_SAMPLE_FMT_FLTP这些导致,但后来发现无关。aac编码中感谢网友摘录了一些注释,如下:
从中会发现 当aac编码级别是LC时frame_size 和nb_samples是1024,如果是HE的时候是2048。其种标记在ffmpeg中是AVCodecContext中的profile:
自此,frame_size,nb_samples,profile之间的关系可以理清楚了,关于mp3的只发现过1152的,如果有其他再记录。
- FFmpeg关于nb_smples,frame_size以及profile的解释 FFmpeg关于nb_smples,frame_size以及profile的解释
- FFmpeg关于nb_smples,frame_size以及profile的解释
- FFmpeg关于nb_smples,frame_size以及profile的解释
- FFmpeg关于nb_smples,frame_size以及profile的解释
- FFmpeg关于nb_smples,frame_size以及profile的解释
- 关于ffmpeg编译以及运行的问题
- 关于字符串池的概念以及解释
- AVCodecContext结构的 frame_size 字段含义
- 关于profile的翻译
- FFmpeg 一些参数的解释
- 关于USBHID协议以及鼠标键盘描述符的解释
- 关于正则表达式的解释和使用方法以及案例分析
- 关于面向对象以及三大特征的解释
- 关于linux里的".profile"
- 关于PB的database profile
- 关于 oracle profile 的知识点
- 关于tshark的configuration profile
- 关于ffmpeg 的总结
- Django原理学习
- 星巴克转角遇到阿里巴巴 网友:马爸爸可不是想喝咖啡这么简单!
- 转载-解决stackoverflow打开慢不能注册登录
- 华为nova 2s首发!全面屏+正面指纹 四摄镜头让你拍照更美!
- darwin之RTP协议分析(转载)
- FFmpeg关于nb_smples,frame_size以及profile的解释
- [LeetCode] 500.Keyboard Row
- MySQL执行计划-Explain初探
- Linux上oracle数据库的关闭和启动
- 【C++的探索路8】运算符重载为友元以及可变长数组程序编写
- 深入理解JVM--JVM垃圾回收机制
- PADS 转 Altium Designer
- 中国剩余定理
- IP地址,子网掩码,网关,DNS之间关系