【发布时间】:2020-01-09 07:14:28
【问题描述】:
使用 ffmpeg,我正在使用以下内容为电影刻录字幕:
ffmpeg -i inputfile.mov -vf "subtitles=subtitles.srt:force_style='Alignment=9,Fontsize=8,Outline=0'" $outputfile.mov
有没有办法延迟/移动字幕起点? 例如,所有的潜艇都在 2 秒后启动吗?
【问题讨论】:
使用 ffmpeg,我正在使用以下内容为电影刻录字幕:
ffmpeg -i inputfile.mov -vf "subtitles=subtitles.srt:force_style='Alignment=9,Fontsize=8,Outline=0'" $outputfile.mov
有没有办法延迟/移动字幕起点? 例如,所有的潜艇都在 2 秒后启动吗?
【问题讨论】:
我不确定这是否可以在一次调用中实现,但您始终可以生成 subtitles.srt 的延迟版本,
ffmpeg -itsoffset 2 -i subtitles.srt -c copy subtitles_delayed.srt
然后将其刻录到电影中。
【讨论】:
-ss A -t B 从偏移量 A 以持续时间 B 硬子化视频剪辑,请使用 -itsoffset -A 生成负偏移子文件,然后将其传入到subtitles 或ass 过滤器。
剪切外部 .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 容器等)获得更快的方法(由于复制,这非常快)请告诉我......我现在还没有尝试过。
【讨论】: