ffmpeg 解码MP4文件的声音采样频率和 audio track 中的 timescale 不同

xujin_ 2016-07-27 10:30:29
加精
如题:



有一mp4文件,用mediaInfo查看其音频采样频率为 48KHZ/24KHZ,用mp4Viewer查看其 audiao track 发现 其中timescal为 24000. 而用ffmpeg 解析,发现其声音 samplerate 为 48000.

哪位大牛知道 这是什么原因造成的???
...全文
3305 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿小步 2016-11-23
  • 打赏
  • 举报
回复
这是我看csdn这么多年看到的最牛逼的一篇文章,都忍不住想回复一下了
qq_35906095 2016-08-18
  • 打赏
  • 举报
回复
我是来拿 积分的
ydycyl 2016-08-12
  • 打赏
  • 举报
回复
Happy.
qq_35205963 2016-08-09
  • 打赏
  • 举报
回复
学习下,666666
汉汗 2016-08-09
  • 打赏
  • 举报
回复
看不懂哦,坛子牛人真多
cattpon 2016-08-08
  • 打赏
  • 举报
回复
学习一下~~
cattpon 2016-08-07
  • 打赏
  • 举报
回复
学习一下~~~
mmmppiqX 2016-08-07
  • 打赏
  • 举报
回复
学习学习……
buyongke 2016-08-06
  • 打赏
  • 举报
回复
跟双声道没有关系
hugh_z 2016-08-04
  • 打赏
  • 举报
回复
66666666666
nettman 2016-08-04
  • 打赏
  • 举报
回复
关注,学习
rightorwrong 2016-08-04
  • 打赏
  • 举报
回复
同贴讨论http://bbs.csdn.net/topics/391989022
xujin_ 2016-08-03
  • 打赏
  • 举报
回复
最后自己回答下自己,然后结帖。 之所以会有48/24khz 主要是因为此MP4文件的 aac 中包括SBR信息,也就是说他是 HE-AAC. 有sbr 其采样频率会加倍。文件的头部信息中,在esds中会有个extensionsamplerate 字段,那才是真正的采样频率。 问题是,这个mp4比较刁钻,他的sbr信息在头部找不到,按照官方文档,需要去解码数据流。这样就可以得到其真实sbr信息了。 此外,苹果官网也说了,AAC-LC一般用于比特率比较高的情况,推荐是超过 80kbps。 像我使用的这个,比特率才 30+kpbs 所以,简单判断也是可以知道,其应该是包含SBR信息的。 当然了,推荐而已,并不一定完全准确。 最后,也感谢下版主了。@rightorwrong
rightorwrong 2016-07-29
  • 打赏
  • 举报
回复
你看下ffmpeg解码aac时的代码看
rightorwrong 2016-07-28
  • 打赏
  • 举报
回复
引用 1 楼 sharkka 的回复:
这应该对应着单声道双声道的采样率,双声道就是48K
可能是这样的
xujin_ 2016-07-28
  • 打赏
  • 举报
回复
感觉自己再写给自己看。。。。。。。。。。。唉!!!!!!!!!
xujin_ 2016-07-28
  • 打赏
  • 举报
回复
我的问题在于 ffmpeg 是怎么解码的。 sample description 里面的声音采样频率也是 24KHZ。 ffmpeg 解码时在有 SBR信息的时候会让采样频率扩倍。也就是 24变成 48. SBR信息 在sample description存在时是很好解码的,问题是在 sample description 里面可能也没有这个SBR 信息。 这里有句话 There's no requirement for MP4 with AAC to have SBR indicated in the headers. It's still correct not to have it marked and have SBR or PS data in the stream anyway. Likewise, decoding a frame and not seeing any SBR or PS info doesn't mean you can't find it further up in the stream anyway. Most players decode a few frames and base their decision upon that, which is reliable enough in most cases. You could decode entire files, too. Then you'll be sure. Until someone adds another extension to AAC The safe and solid solution, particularly for a streaming application, is to assume SBR and PS can happen upon you at any time. This is also why the players will still work if you give them incorrect info.
xujin_ 2016-07-28
  • 打赏
  • 举报
回复
不是这样的。48Khz/24khz是 因为的采样频率是 24KHZ,因为音频格式为 HE-AAC/LC。 由于SBR的作用,在播放音频的时候需要使用 48KHZ去播放。跟双声道没有关系
百灵工作室 2016-07-27
  • 打赏
  • 举报
回复
这应该对应着单声道双声道的采样率,双声道就是48K

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧