FFMPEG字幕总是延迟1帧

时间:2014-02-12 02:42:54

标签: ffmpeg

我遇到了从DVD上翻录的视频编码问题,翻录后视频大小约为300MB且播放效果很好,字幕同步效果很好,那么我想要一个更小的平板电脑尺寸并使用ffmpeg对其进行编码,结果大约为100MB但副标题总是迟到1帧

# ffmpeg -i "Original.mkv" -level 5.1 -preset veryslow -tune animation -keyint_min 12 -sc_threshold 45 -bf 8 -b_strategy 2 -refs 16 -qmin 10 -qmax 51 -qcomp 0.6 -direct-pred auto -me_range 24 -me_method umh -subq 10 -trellis 2 -an -sn -vcodec libx264 -crf 28.0 output1.mkv
# ffmpeg -i "Original.mkv" -f wav -| neroAacEnc -ignorelength -lc -q 0.4 -if - -of output2.aac
# mkvmerge -o outputFF.mkv --language "0:jpn" --track-name "0:SmallAnime Encode @ CRF 28.0" output1.mkv --no-chapters --language "0:jpn" --track-name "0:2.0 AAC-LC @ 0.4" output2.aac -A -D --language "2:eng" --track-name "2:Styled Subtitle (.ass)" "Original.mkv"

在aegis sub中,视频看起来很正常,但是当使用MPC播放时,字幕总是晚1帧

Aegis正确显示截图:http://puu.sh/6N2gy

使用MPC问题进行游戏:http://puu.sh/6N38E.jpg

任何人都知道为什么会这样吗? ffmpeg使用libx264视频编解码器,并使用位深度= 10进行配置。我使用的操作系统是CentOS 6.4

1 个答案:

答案 0 :(得分:0)

这很可能是舍入错误-我也遇到过。 Aegisub会保存带有时间码(而不是帧号)的字幕,而且Aegisub的时间码可能与FFMPEG认为正确的时间码不匹配,从而导致帧数不一。

我已经尝试过-itsoffset标志,它可以让您调整输入文件的时间偏移。使用23.98 fps输入,我发现延迟0.045(使用1 / 23.98 == 0.0417014178,并进行了一些测试)可以纠正我的早期字幕。结果,我在-itsoffset -0.045之前添加了-i input_file,以重新同步字幕。

对于您的情况,假设您具有类似的帧速率,则可以尝试ffmpeg -itsoffset 0.045 -i "Original.mkv" ...来查看是否可以防止字幕延迟。请注意,-itsoffset 0.045必须在-i FILE参数之前,因为itsoffset DELAY参数会修改其后的输入。

有关-itsoffset的更多文档可以在here中找到。

或者,您可以使用Aegisub中的Shift Times工具(“ Timing”>“ Shift Times”),并指定一个0:00:01.05的时间来尝试更正那里的时间...尽管我只是坚持使用{ {1}}标志,因为在IMO上进行试验要容易得多。