2016-05-14 53 views
0

我正在使用ffmpeg掃描視頻文件以進行場景更改並將結果保存到文本文件中。我在下面使用的代碼工作,但我想簡化結果,只輸出場景變化發生的幀數,而不是所有的代碼產生的數據。有什麼建議麼?如何用ffmpeg保存幀號?

ffprobe -show_frames -of compact=p=0 -f lavfi "movie=input.mov,select=gt(scene\,.02)" > results.txt 

輸出這一切:

media_type=video stream_index=0 key_frame=1 pkt_pts=31031 pkt_pts_time=1.292958 pkt_dts=31031 pkt_dts_time=1.292958 best_effort_timestamp=31031 best_effort_timestamp_time=1.292958 pkt_duration=N/A pkt_duration_time=N/A pkt_pos=82320 pkt_size=629760 width=640 height=328 pix_fmt=rgb24 sample_aspect_ratio=1:1 pict_type=I coded_picture_number=0 display_picture_number=0 interlaced_frame=0 top_field_first=0 repeat_pict=0 tag:lavfi.scene_score=0.025551 

回答

1

得到公正滿足現場變化的標準幀索引號,使用

ffprobe -select_streams v -show_entries frame=pkt_pts -of compact=p=0:nk=1 \ 
     -f lavfi "movie=abc.mov,setpts=N+1,select=gt(scene\,.02)" > log.txt 

日誌文件將只包含幀索引號,每行一個例如

135 
136 
137 
141 
143 
145 

的setpts開始從1

+0

感謝這個編號。任何想法爲什麼它會帶來更多我期待的場景?我上面的原始代碼檢測到6個場景。你給我一個297幀的列表。 ? – JulianJ

+0

檢查場景更改值 - '.02'或'0.2' – Mulvya

+0

它按照您的原始代碼工作。萬分感謝。 – JulianJ