ffmpeg转换为mp4将音频移动一帧

时间:2016-05-25 15:08:05

标签: audio ffmpeg mp4

我有一个.mov文件(codec = motion jpeg),它的音频流每秒都包含一些小脉冲。

当我使用ffmpeg将此文件转换为mp4时,我注意到我的所有脉冲现在已经关闭了一帧。

我只是使用" ffmpeg -i source_file.mov target_file.mp4"

这是音频信号之间比较的图像:

enter image description here

A1是原始音频(.mov),A2是ffmpeg的mp4输出音频。 正如您所看到的,脉冲比原始脉冲晚了一帧。

我知道h264编解码器是有损耗的,但是如果你问我,一帧偏移似乎是一个很大的损失。

我可以使用ffmpeg选项来获得更好的音频流吗?

这是输入文件:https://www.dropbox.com/s/6y5g7lo5dvu0ub1/BBB_09_tree_trunk_009_ANIM_001.mov?dl=0

这是输出文件: https://www.dropbox.com/s/10zuzwn0qs8l853/BBB_09_tree_trunk_009_ANIM_001.mp4?dl=0

2 个答案:

答案 0 :(得分:2)

如果您复制音频,则不应该进行转换。

ffmpeg -i source_file.mov -c:a copy target_file.mp4 

答案 1 :(得分:0)

我一直在根据自己的需要处理这个问题,我的文件格式必须是mp4。我正在使用mxf文件。我已经尝试了多种选项,并发现这可以提供最准确的结果(为了简单起见,我已删除了详细信息):

ffmpeg -ss 00:00:00.021 -i" input.mxf" -itsoffset -0.044 -i" input.mxf" -c:v libx264 -c:aac -map 0:a -map 1:v" output.mp4"

在21ms开始第一个文件并将其映射为音频,然后将视频移回44ms给了我最准确的同步(在几个样本中)。我不知道为什么22ms不准确(当引物样本问题看起来等同于什么时),我发现没有什么能让我在样本中更细致地工作。具有PTS偏移的过滤器没有影响。也许它对不同的文件格式有不同的作用。同样值得注意的是,没有-itsoffest的相同命令给出了相同的同步结果,但有一个区别;视频流持续时间为1帧,音频和容器持续时间为1毫秒。使用-itsoffest,持续时间只有1毫秒不同。您可以使用22毫秒来获得准确的持续时间,但检查您的同步,它可能会稍微多一点。

另外值得注意的是,我偶然发现了一些关于-itsoffset标签的开发者评论,这些评论澄清了它对音频不起作用,它适用于视频。似乎上面的答案建议将offest映射到音频,这显然不是函数的工作方式。 https://trac.ffmpeg.org/ticket/1349