所以我有看起來像這樣的一個文本文件(截)重複序列的迭代
[FRAME]
pkt_pts_time=0.000000
pict_type=I
[/FRAME]
[FRAME]
pkt_pts_time=0.250250
pict_type=B
[/FRAME]
[FRAME]
pkt_pts_time=0.500500
pict_type=P
[/FRAME]
[FRAME]
pkt_pts_time=0.750750
pict_type=B
[/FRAME]
[FRAME]
pkt_pts_time=0.959292
pict_type=I
[/FRAME]
本文用這個命令創建之前或之後發現有AWK的字符串:
ffprobe -select_streams v -show_frames -show_entries frame=pkt_pts_time,pict_type,frame_number -v quiet input.mp4
正如您所看到的,重複[Frame]到[/ Frame]序列。所以這是我計算幀數並找出哪個幀是I幀的一種方法。在每個序列中,「pict_type =」值都會改變。我想知道是否有一種方法可以讓我使用AWK輸入一個迭代編號並輸出pict_type值等於I的前一個pkt_pts_time值。
例如,如果我的幀編號是3.我將能夠輸入數字3,awk表達式將轉到第三個[Frame]到[/ Frame]序列,然後從那裏回顧,直到找到「pict_type = I」字符串。然後它會看到該序列迭代的pkt_pts_time是「pkt_pts_time = 0.00000」,它會輸出0.0000
您是否生成該文本文件?因爲您只能輸出I幀數據,並避免對其進行後處理。 – LordNeckbeard
如果包含迄今爲此編寫的代碼,這將非常有幫助。如果我們能夠看到您的代碼,可以更輕鬆地幫助您瞭解如何修復代碼。 – ghoti
@ ghoti,這是我的代碼。 ffprobe -select_streams v -show_frames -show_entries frame = pkt_pts_time,pict_type,frame_number -v quiet input.mp4 – dne202