我正在尝试将 3 个字幕文件软编码到我的电影中。我使用 ByteCopy 从 DVD 中提取了字幕
我正在使用此命令来添加文件:
ffmpeg -i BloodDiamond.mp4 -i BLOODDIAMOND_1_English.srt -i BLOODDIAMOND_6_English.srt -i BLOODDIAMOND_8_English.srt -map 0 -map 1 -map 2 -map 3 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=eng -metadata:s:s:2 language=eng BloodDiamond_Subs.mp4
但我在输出中收到这种错误:
[mp4 @ 000001bdadf19c40] pts 没有值 [mp4 @ 000001bdadf19c40] 应用程序提供的时长:-103001 / 时间戳:3405107000 超出 mov/mp4 格式的范围 [mp4 @ 000001bdadf19c40] pts 没有值
[mp4 @000001bdadf19c40] 应用程序提供的时长:-857000 / 时间戳:3476787000 超出 mov/mp4 格式的范围 [mp4 @000001bdadf19c40] pts 没有值
这里我遗漏了什么吗?
答案1
尝试
fmpeg -i BloodDiamond.mp4 -i BLOODDIAMOND_1_English.srt -i BLOODDIAMOND_6_English.srt -i BLOODDIAMOND_8_English.srt \
-filter_complex "[0:v:0]setpts=PTS-STARTPTS[v];[0:a:0]asetpts=PTS-STARTPTS[a]" \
-map '[v]' -map '[a]' -map 1 -map 2 -map 3 \
-c:s mov_text \
-metadata:s:s:0 language=eng -metadata:s:s:1 language=eng -metadata:s:s:2 language=eng \
BloodDiamond_Subs.mp4
这将重写时间戳。如果是其他原因导致的问题,则此方法可能无效。