FFMPEG字幕始终延迟1帧

FFMPEG字幕始终延迟1帧,ffmpeg,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 -q

我对从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帧

宙斯盾正确显示屏幕截图:

使用MPC播放问题:


有人知道为什么会这样吗?ffmpeg使用libx264视频编解码器,并使用位深度=10进行配置。我使用的操作系统是CentOS 6.4,这可能是舍入错误-我也遇到过这种情况。Aegisub使用时间码而不是帧号保存字幕,并且Aegisub的时间码可能与FFMPEG认为正确的时间码不匹配,导致关闭一帧

我尝试了-itscoffset标志,它允许您调整输入文件的时间偏移。使用23.98 fps的输入,我能够发现使用1/23.98==0.0417014178时的延迟为0.045,并且一些测试可以纠正我早期的字幕。因此,我在我的-I input_文件之前添加了-itscoffset-0.045以重新同步字幕

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

更多关于-itsoffset的文档可以找到


或者,您可以使用Aegisub Timing>Shift Times中的工具,并指定0:00:01.05的时间来尝试在此处更正计时。。。虽然我只是坚持使用-itscoffset标志,因为在IMO上进行实验要容易得多。

1帧?也许是有字幕的。但这真的是个问题吗?每帧25帧需要40毫秒,你真的能看到40毫秒之前/之后出现的字幕吗?嗨,乔治,既然是字幕,我可以在看到字幕出现之前先听到声音,这有时很烦人。这是有点难以检测,但仍然可能是因为它远远不止一帧;40毫秒的分辨率相当低。是1秒左右吗?您可以在转换期间调整字幕计时。