2017-07-06 73 views
0

我正在從監控攝像機讀取RTSP流,並希望使用ffmpeg將攝像機的快照創建爲jpeg。原理上它使用-update 1選項創建snapshot.jpg,但如果它在ffmpeg寫入時客戶端應用程序讀取該文件(如果它經常發生),則圖像僅顯示一部分。如何從rtsp流中輸出ffmpeg循環中的圖像序列

因此,我想使用ffmpeg在一種環形緩衝區中捕捉多於一個圖像,因此我可以訪問在當前圖像之前拍攝的圖像,並將最後n張圖像作爲短歷史記錄。

雖然ffmpeg允許創建一系列jpgs,但這似乎是無限的。是否有可能告訴ffmpeg以這樣的文件模式創建圖像:

pic1.jpg,pic2.jpg,pic3.jpg,pic4.jpg,pic5.jpg和pic5.jpg之後使用pic1重新開始.jpg等。這種方式可以連續使用流而不會填滿我的驅動器。不幸的是像-update 5似乎不工作(ffmpeg只是退出)。

原則上我也可以讓它無限運行並清理所有超過n秒的文件,但這會引入額外的開銷,並且與使用這種環形緩衝區方法的ffmpeg相比,恕我直言並不是真正的乾淨編程。

任何幫助,將不勝感激。

回答

2

您必須使用分段複用器。

ffmpeg -i input -f segment -segment_time 0.0001 -segment_format singlejpeg -segment_wrap 5 pic%d.jpg 
+0

謝謝!這對我有效!我想加入-vf fps = fps = 1/5會使它每5秒就成爲一個圖像,不是嗎? –

+0

是的,但是正確的方法是'-vf select ='not(mod(t,5))''並且加上'-vsync 0' – Mulvya