使用 FFMPEG 向 MP4 文件添加多个英文字幕时出现意外输出

使用 FFMPEG 向 MP4 文件添加多个英文字幕时出现意外输出

我正在尝试将 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

这将重写时间戳。如果是其他原因导致的问题,则此方法可能无效。

相关内容