FFMPEG filter_complex 带加速、字幕和缩放

FFMPEG filter_complex wih speedup and subtitles and scaling

您好,我正在尝试将文件转换为特定的帧率并消除屏幕的任何抖动和跳跃。我还尝试提高音量并添加字幕叠加层。当前行出现错误,不允许将 complex_filter 与 vf 和 af 结合使用。作为额外的,我还想在左角添加文本(我还没有尝试过)并且希望屏幕的大小调整为全高清(将比例更改为 1920:1080 但没有成功)。

ffmpeg -i movie.mp4 -r 25 -filter_complex "[0:v]setpts=0.959*PTS[v];[0:a]atempo=1.0427[a]" -map "[v]" -map "[a]" -vf subtitles=sub.srt,scale=1920:1080 -af volume=2 -strict -2 -preset veryfast movie_new.mp4

知道了!

新:

ffmpeg -i inside.mp4 -r 25 -filter_complex "[0:v]setpts=0.959*PTS[i];[i]scale=1920:1080[j];[j]subtitles=inside.srt[k];[0:a]atempo=1.0427[p];[p]volume=2[q]" -map "[k]" -map "[q]" -strict -2 -preset veryfast inside_new.mp4

但是现在有一个新的问题。潜艇不同步 :P 是否有一个简单的解决方法,或者我是否首先需要在没有潜艇的情况下进行编码,然后重新同步,然后使用潜艇进行编码?

顺便找到这个linkSubtitle Resync Tool

moviespeed 改变了 0.959。我可以通过计算将字幕调整 x 毫秒吗?

编辑:通过字幕工作室修复了字幕。只是要更改的一个小设置,它直接移动了所有文本:)

您可以尝试以下命令,因为 ffmpeg 限制使用 -vf-af 选项与 -filter_complex:

一起使用
    ffmpeg -i movie.mp4 -i sub.srt -r 25 -filter_complex \
           "[0:v]setpts=0.959*PTS[i];[i]scale=1920:1080[j];[j][1:s]overlay[k];\
            [0:a]atempo=1.0427[p];[p]volume=2[q]" -map "[k]" -map "[q]" \
            -strict -2 -preset veryfast movie_new.mp4
  • [0:v] 指的是第一个输入,即 movie.mp4
  • [1:s]指的是第二个输入即字幕输入文件(sub.srt)

过滤器需要以所需的方式连接,不一定像上面那样。实际上 -vf-af-filter_complex 的用途相同,但方式最简单。这就是为什么 ffmpeg 限制使用 -filter_complex-vf and/or -af