ffprobe获取最后一个音频/视频数据包的分数

时间:2018-11-17 01:29:50

标签: video ffmpeg ffprobe pts

我有一个School=input("What is your school's name? \n") Gpa=input("What is GPA? \n") Age=input("How old are you? \n") StudentName=input("Name: ") StudentName=Student(School,Gpa,Age) print("Saved") 文件,我需要获取音频和视频流的结尾Name=input("Name: ") Name=Student(School,Gpa,Age) 。我可以通过以下操作(手动)来做到这一点:

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)。

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

1 个答案:

答案 0 :(得分:3)

运行

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。