有没有办法使用带有编解码器 AAC 到 AAC 的 ffmpeg 获得准确的 1 秒剪辑

Posted

技术标签:

【中文标题】有没有办法使用带有编解码器 AAC 到 AAC 的 ffmpeg 获得准确的 1 秒剪辑【英文标题】:Is there a way to get exactly a 1 second clip using ffmpeg with the came codec AAC to AAC 【发布时间】:2013-02-20 13:37:52 【问题描述】:

如果我有一个包含视频流和音频流的 .mp4 文件。如果我执行这个命令:

ffmpeg -i input.mp4 -ss 00:00:14.000 -t 00:00:01.000 -vn -c:a libfaac audio.m4a

结果是持续时间:00:00:01.02,开始时间:0.021179。我想确保开始时间从 0 开始,所以我使用以下方法重新采样:

ffmpeg -i audio.m4a -ss 00:00:00.000 -t 00:00:01.000 -c:a libfaac audio2.m4a

此命令的结果有 Duration: 00:00:01.02, start: 0.000000。有没有办法以 0 值作为开始的最终结果精确到 1 秒?

我在之前的尝试中使用了标志 -map 0:1 -ab 128k -ar 44100 但它提供了相同的结果。

如果需要,我可以提供 ffmpeg 的完整输出。

谢谢。

【问题讨论】:

几个问题:原文件的音频采样率是多少? 44100 还是 48000 赫兹?原音频也是AAC吗?如果是这样,您的意思是进行音频转码(这会导致代际损失),而不是无损重组? 这里是音频流信息: Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s 至于你的第二个问题,音频转码就好了。只需要准确地获得一秒钟的持续时间,开始时间也为 0。 【参考方案1】:

我通过选择框架解决了这个问题

$ ffmpeg -i input.mp4 -ss 14 -frames 46 -vn pass-1.m4a

$ ffmpeg -i pass-1.m4a -c copy audio.m4a

结果

$ ffmpeg -i 音频.m4a 输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自“audio.m4a”: 元数据: 主要品牌:M4A 次要版本:512 兼容品牌:isomiso2 编码器:Lavf55.1.100 持续时间:00:00:01.00,开始:0.000000,比特率:135 kb/s 流 #0:0(und):音频:aac (mp4a / 0x6134706D),48000 Hz,立体声,fltp, 125 KB/秒 元数据: handler_name : SoundHandler

【讨论】:

以上是关于有没有办法使用带有编解码器 AAC 到 AAC 的 ffmpeg 获得准确的 1 秒剪辑的主要内容,如果未能解决你的问题,请参考以下文章

“编码器‘aac’是实验性的,但实验性编解码器未启用”

如何使用麦克风以 AAC 编解码器格式录制音频

fdk-aac编解码

实时AAC音频/本地AAC音视频硬解码详细介绍附带Demo

音频压缩编码技术—AAC编解码器

音频压缩编码技术—AAC编解码器