有没有什么办法可以用 ffmpeg 将时间码不正确的 MPEG-PS 转码为 MPEG-4 AVC?

有没有什么办法可以用 ffmpeg 将时间码不正确的 MPEG-PS 转码为 MPEG-4 AVC?

我有几个视频文件MPEG-PS\MPEG-4 Visual\MPEG Audio,这些文件的时间码已损坏,导致大多数播放器无法正确播放。当我尝试使用 VLC 打开它时,它可以正常播放视频,但总文件时长指示器不断变化,来回跳跃。

MPEG-4\AVC\AAC我尝试使用此命令简单地将文件转换为:

ffmpeg.exe -nostdin -y -loglevel info  -i "D:\input.mp4"  -f mp4  "D:\output.mp4"

但它导致文件时长不正确。视频流播放正常,但最终文件的总时长比应有的时长长了几个小时,这意味着最后会有几个小时的黑帧和静音。

有没有什么方法可以进行转换MPEG-PS\MPEG-4 Visual\MPEG AudioMPEG-4\AVC\AAC纠正或创建新的时间线?

答案1

你有两种选择:

  • 使用 -t 参数在所需的终点停止
  • 使用concat输入:一个非常短的正确剪辑(例如 1 帧黑色),然后是缺陷剪辑。使用输入concat,ffmpeg 将使用第一个输入的时间戳,然后调整以下时间戳以无缝附加到它。

-c copy如果没有必要,您可能还想使用该参数来避免重新编码。

相关内容