我的问题在于 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.