如何在ffmpeg中延迟字幕

时间:2019-09-06 11:52:49

标签: ffmpeg subtitle

我使用ffmpeg,使用以下内容将字幕刻录为电影:

ffmpeg -i inputfile.mov -vf "subtitles=subtitles.srt:force_style='Alignment=9,Fontsize=8,Outline=0'" $outputfile.mov

有没有办法延迟/转移字幕的起点? 例如,所有潜艇都在2秒后开始?

2 个答案:

答案 0 :(得分:2)

我不确定是否可以通过单次调用ffmpeg来实现,但是您总是可以像{p>那样生成subtitles.srt的延迟版本

ffmpeg -itsoffset 2 -i subtitles.srt -c copy subtitles_delayed.srt

然后将其刻录到电影中

ffmpeg -i inputfile.mov -vf "subtitles=subtitles_delayed.srt:force_style='Alignment=9,Fontsize=8,Outline=0'" $outputfile.mov

答案 1 :(得分:-1)

剪切外部 .srt 字幕文件的示例,和/或连同生成的 .mkv 视频文件(现在带有内部字幕),和/或提取剪切的内部字幕,和/或然后刻录它(剪切 .srt 文件) 通过代理(或其他东西...)同步到原始文件(.mp4 或 .mkv,如果需要)

首先将 .mp4 和 .srt 合并到一个 .mkv 容器中(如果还没有的话):

ffmpeg -hide_banner -y -i "original.mp4" -i "original.srt" -c copy -c:s srt -metadata:s:s:1 language=eng -map 0 -map 1 -map_metadata 0 “original_subs.mkv”

然后根据您要剪切的电影(或字幕)片段进行剪切: (这种方式的字幕是在完美的时间上剪切的,就像在带有扩展字幕的完整原始视频中一样,其他方式会导致时间错误。)

ffmpeg -hide_banner -y -ss 01:19:16 -t 00:03:01 -i "original_subs.mkv" -c 复制 "original_subs_cut.mkv"

获取剪切的 .srt 文件:

ffmpeg -hide_banner -y -i "original_subs_cut.mkv" "original_subs_cut.srt"

然后剪切并刻录原始电影以及剪切的 .srt 文件。

ffmpeg.exe -hide_banner -y -ss 01:19:16 -t 00:03:01 -i "original_subs.mkv" -filter_complex "subtitles=f='original_subs_cut.srt':force_style='FontName=Arial ,FontSize=32,Shadow=1'" -strict -2 -c:s mov_text -c:v h264_nvenc -profile:v high -pix_fmt yuv420p -bufsize 20M -bf:v 3 -b:v 1.0M -preset slow - rc:v vbr_hq -rc-lookahead 32 -shortest "original.en.mp4"

根据自己的格式调整时间、名称和字幕参数(此处以示例为例),更改编码器/编码器设置等。 我在这里(网站编辑器)稍微编辑了语法,所以某处可能有错字,但如果是这样,你会解决这个问题.... ffmpeg 命令的其他组合/顺序也可以给出相同和/或其他想要的结果。 如果您通过组合选项(例如计时以及转换为 .mkv 容器等)获得了更快的方法(由于复制而非常快),请告诉我...我现在还没有尝试过。

相关问题