video - ffprobe 获取最后一个音频/视频数据包的 pts

标签 video ffmpeg ffprobe pts

我有一个 mov我需要得到结尾的文件pts对于音频和视频流。我可以通过执行以下操作(手动)来做到这一点:
ffprobe -show_packets file.mov
这给了我这样的输出(当然还有更多的数据包):

[PACKET]
codec_type=audio
stream_index=0
pts=221184
pts_time=5.015510
dts=221184
dts_time=5.015510
duration=580
duration_time=0.013152
convergence_duration=N/A
convergence_duration_time=N/A
size=304
pos=4833575
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=1
pts=29800
pts_time=4.966667
dts=29400
dts_time=4.900000
duration=200
duration_time=0.033333
convergence_duration=N/A
convergence_duration_time=N/A
size=20707
pos=4837376
flags=__
[/PACKET]

在上面的场景中,结束点是 221764用于音频和 30000用于视频 (pts + duration)。

我想知道是否有一种简单的方法可以直接通过 ffprobe 标志或智能解析输出来获取最终的音频/视频数据包 pts。

最佳答案


ffprobe -v 0 -show_entries packet=pts,duration -of compact=p=0:nk=1 -read_intervals 999999 -select_streams v video.mp4  | tail -1

这将以 118231200|3600 的形式打印值其中第一个值是 pts,第二个值是视频流最后一个数据包的持续时间。

您只需要确保 -read_intervals 的值,以秒为单位,等于或大于文件的持续时间。 999999是一个安全值。视频流需要尾部,因为 ffprobe 将打印整个最后一个 GOP。

关于video - ffprobe 获取最后一个音频/视频数据包的 pts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347381/

相关文章:

image - 如何在 ffmpeg api-example.c 中提及真实图像而不是虚拟图像

c++ - 如何将 LibVLC 中的 D3DDevice 传递为 "HWND"

ios - 纵向视频转横向

facebook - 如何使用 ffmpeg 为 Facebook 生成循环动画 gif

FFMPEG:创建一个视频,该视频具有 n 输入视频的每个像素的最大值

video - ffprobe show_frames 多个视频

linux - 使用 gstreamer 和 gst-launch 循环播放视频?

ffmpeg - 让 ffmpeg 在视频上添加重复的文本覆盖

python - 在 Python 脚本中使用 FFProbe

swift - 每次使用不同的参数重复过程两次