更改MKV容器上的帧率


0

播放一些MKV容器时遇到问题(89项,总计196,3 GB)。

音频+视频以25 fps编码,但是sub完全不同步 - 这些编码为23.976 fps。

我的问题:无论如何,我可以将这些电影的帧速率批量更改/重新编码为23.976吗?


2
更改字幕会不会更容易?如果你将电影从25加速到23.98,你还必须调高音频,它看起来/听起来不自然。此外,您必须重新压缩比特流。
slhck

手动同步89个字幕需要做很多工作:(
mainstream

实际上,你可能只想尝试做类似的事情 ffmpeg -i input.mkv -c:v libx264 -crf 21 -c:a aac -strict experimental -b:a 128k -r 23.98 -sn output.mkv 通过丢弃几帧来转换帧率。当然这将重新编码。文件里面有字幕吗?或者作为一个 .srt 文件?
slhck

好的,谢谢你的评论。我重新插入了文件,但它似乎剥离了字幕。有没有办法保持字幕不受影响?字幕嵌入MKV容器中。
mainstream

是的,有 -sn 你禁用字幕。同 -c:s copy 例如,你可以复制它们。
slhck

Answers:


-1

您可以尝试将视频和音频重新编码为不同的帧速率,同时保持字幕不变:

ffmpeg -i input.mkv -c:v libx264 -crf 21 -c:a aac -strict experimental -b:a 128k -r 23.98 -c:s copy output.mkv

CRF设置视频质量。选择较低的东西以获得更好的质量,例如18. 23是x264的默认值。


如果你使用像这样的工具,你可以做到没有视频质量损失 mkvmerge 可以在重新加载时修改容器时间戳。但是,您仍然需要对音频进行解码/处理/编码。
Peter Cordes

1

正如人们在评论中所说,处理你实际上要解决的问题的正确方法是调整字幕,或告诉你的播放器他们是用于不同的速度视频。 (例如。 mpv --sub-fps 25 将保持25fps节目的潜艇与24 / 1.001 fps副本同步。)( http://mpv.io/

但要回答实际问题:

您无需重新编码即可更改fps。 ffmpeg的 无法使用新的时间戳重新启动 不幸的是,没有重新编码,但这是ffmpeg的设计限制。视频编码有损且非常慢,所以不要这样做。

尝试 mkvmerge --default-duration 0:24000/1001fps --fix-bitstream-timing-information 0 in.mkv -o out.mkv 更改视频FPS。这不会触及音频时序,因此您将获得/ v desync。 0: 选择曲目 0 在您的输入文件中,我认为通常是视频。

在使用保持音高的加速滤波器处理音频后,您需要对音频进行重新编码。我通常只在播放时使用mpv / mplayer进行此操作 scaletempo filter(mpv自动插入)。 ffmpeg有一个 atempo 可能有效的过滤器。

因此,使用24 / 1.001fps视频复用减慢的音频,您应该再次使用工作文件。

我没有真正测试这一切,因为通常你永远不需要这样做。告诉你的玩家潜艇的速度是多少。你甚至可以使用 mpv --speed 25025/24000 -subfps 25 myfile.mkv 如果你有一个24 / 1.001 fps的英国节目最初的25fps副本,并希望以原始速度播放,并以恒定的音频加速播放,以25fps即时播放你的视频。


1

对于Windows来说,至少不需要编码和丢失质量。使用字幕编辑软件,转到同步,将帧速率从原始字幕改为任何你想要的,然后保存到新的同步字幕。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.