我有一个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标志或智能解析输出来获取最终的音频/视频数据包点。
答案 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。