FFmpeg 精确的开始和结束时间

5

我搜索了很多,但没有找到我需要的内容。

我使用这个命令:

ffmpeg -ss <start> -i <SrcFile> -t <duration> -c copy <DstFile>

想要复制视频的一部分,但输出文件的开始时间和持续时间可能与指定的“start”和“duration”不同。 我知道ffmpeg会寻找最近的关键帧,精确到时间戳的寻找是不可能的,除非重新编码视频(我尝试过,但输出视频会失去质量!)。 对我来说,知道ffmpeg用于生成输出的确切开始和结束时间戳很重要,因为我使用此信息来调整字幕时间。 是否有办法让ffmpeg报告开始时间戳和结束时间戳? 或者:是否有办法知道特定时间戳之前和之后的关键帧,以便我可以将视频剪切标记调整到最近的关键帧?
谢谢。

更新: - 是否可以跳转到第二个关键帧和倒数第二个关键帧? - 两个关键帧之间的时间间隔是多少?

1个回答

3
你可以运行。
ffmpeg -start_at_zero -copyts -ss <start> -t <duration> -i <SrcFile> -c copy <DstFile>

那么请检查。
ffprobe Dstfile

开始时间将是源数据的起始时间戳。开始时间 + 持续时间等于结束时间。有了这些信息,运行

ffmpeg -i Dstfile -c copy FinalFile

需要一个起始时间为0的文件。


非常感谢,Mulvya。它成功了。如果我可以问一下: 1- 为什么ffmpeg不直接将此信息输出到标准输出?这会为我们节省麻烦和时间! 2- 此步骤的输出视频: ffmpeg -i Dstfile -c copy FinalFile 在MPC-HC中播放大约需要10秒钟的时间,而临时文件启动快,运行完美。这是为什么?第一个命令的最后一条指令有什么必要吗? - Eng. M.Hamdy
我还有一个问题:有时ffmpeg会寻找到前一个关键帧,因此输出视频可能包含一些原始视频中不需要的秒数!现在我知道了临时输出视频的偏移时间,所以我想通过寻找下一个关键帧(即tmpfile中的第二个关键帧)来修复最终输出视频中的这个问题。这可行吗? 再次感谢。 - Eng. M.Hamdy
可以寻找到第二个关键帧和倒数第二个关键帧吗?
  • 两个关键帧之间的时间间隔是多少?
- Eng. M.Hamdy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接