FFmpeg 编码部分视频带字幕

FFmpeg 编码部分视频带字幕

对文件的一部分进行编码,同时为该部分添加字幕。我正在使用:

ffmpeg -ss 00:02:00 -t 00:00:30 -i “路径/到/输入” -c:v libvpx -crf 5 -b:v 3M -c:a libvorbis -vf “ass=路径/ass” “输出.webm”

它显示它已加载字幕,但在输出中它们不存在(字幕:0kB)。据我所知,字幕部分不适用于 -ss ?(或者它忽略了 -ss 并尝试在视频流的 00:02:00 上添加以 .ass 的 00:00:00 开头的整个字幕)。

我唯一能做的就是重新编码整个文件,然后使用:

ffmpeg -ss 00:02:00 -i “output.webm” -t 00:00:30 -c:v 复制 -c:a 复制“new_output.webm”

保留我想要的东西。我是否遗漏了什么,或者根本无法一次性完成我想要的一切?

希望我所写的内容有意义,谢谢。


Output #0, webm, to 'target/test.webm':
  Metadata:
    encoder         : Lavf55.37.101
    Stream #0:0: Video: vp8 (libvpx), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 2500 kb/s, 1k tbn, 23.81 tbc (default) (forced)
    Stream #0:1: Audio: vorbis (libvorbis), 44100 Hz, stereo, fltp (default) (forced)
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libvpx)
  Stream #0:1 -> #0:1 (aac -> libvorbis)
Press [q] to stop, [?] for help
frame=  953 fps= 22 q=0.0 Lsize=    6990kB time=00:00:40.02 bitrate=1430.6kbits/s dup=0 drop=5
video:6499kB audio:464kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 0.376779%

答案1

如果您将其放在-ss后面-i,ffmpeg 将首先对整个文件进行编码,直到您指定的点,然后才会将其写入输出。

这意味着字幕将从正确的位置开始。

此外,您应该考虑放在-t后面,-i因为它在这里用作输出选项,也就是说,只输出 30 秒。

ffmpeg -i "path/to/input" -ss 00:02:00 -t 30 -c:v libvpx -crf 5 -b:v 3M -c:a libvorbis -vf "ass=path/ass" "output.webm"

相关内容