aac 编码与 ffmpeg 导致超短文件

aac encoding with ffmpeg result in super short file

所以我遇到了 AAC 编码问题。我正在尝试对一些合成声波进行编码,但它没有按预期工作。在 VLC 中播放时,我得到的文件只发出超短的声音。当我在 ffplay 中播放时,播放就像我预期的那样,但它说 "duration: 00:00:00.05" 我想是 5 毫秒。但我编码的远不止于此,而且它播放的更多。所以VLC播放超短的声音,ffplay播放更长的文件(预期长度),但显示时间超短,这是怎么回事?

来源:http://pastebin.com/M5MKkEL3

在我看来不对劲的一件事是: 如果你寻找变量 "audio_time",如果你断点它并在每个编码帧读取它,你将得到这个:

..
编码帧 8:0.00010416666666666666
编码帧 9:0.00012500000000000000
(等等)

差异是:~0.00002085,这是我预期每秒约 47 个样本帧的差异的 1/1000,这是编码器想要的 48k 采样率 (48k / 1024 = ~47) .

那么为什么我会得到一千个预期的编码数据?

欢迎指出任何可疑之处!

提前致谢!

所以我找到了,在第 75 行,缺少了这个:

    time_base.num = per_frame_audio_samples;
    time_base.den = aud_codec_context->sample_rate;
    aud_codec_context->time_base = time_base;

per_frame_audio_samples = 1024 在我的例子中。