c - 使用 ffmpeg 进行 aac 编码会产生超短文件

标签 c ffmpeg aac

所以我在 AAC 编码方面遇到问题。我正在尝试对一些合成声波进行编码,但它无法按预期工作。我得到的文件在 VLC 中播放时只发出超短的声音。当我在 ffplay 中播放时,它会像我预期的那样播放,但它显示“持续时间: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。

关于c - 使用 ffmpeg 进行 aac 编码会产生超短文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273273/

相关文章:

c - 确定命令是否成功/存在 c

c - 我无法刷新标准输入。如何在 C 中刷新标准输入?

c - C中的SHA256实现

php - 排队直播视频

audio - AAC 编解码器库(libFAAC 替代品)

windows-phone-7 - AAC Windows Mobile

mysql - HELP C 中的 TCP 服务器无法保存在 MYSQL 中!

ffmpeg - 使用 ffmpeg 从网络摄像头录制声音

macos - 用ffmpeg展平两个音轨

android - 使用 ffmpeg 创建一个 android 可播放的音乐幻灯片