2017-07-18 120 views
0

任何幫助表示讚賞。FFMPEG H.264到JPEG實時視頻

我們正在將H.264流轉碼爲通過網絡套接字發送到瀏覽器的Jpgs。我們希望這樣做的原因是我們可以實時向瀏覽器提供實時視頻。不需要瀏覽器不可知的方式插件。如果有更好的方法來做到這一點,那麼瞭解更多信息將會非常棒。視頻來源是H.264,但我們不能改變這一點。

當我們降低FPS時,我們發現攝像機視頻輸入有較大的滯後。例如在1 FPS時,我們看到瀏覽器中的視頻滯後8秒。在15 FPS時,視頻大約落後1秒。因此,即使在1 FPS時,它也會每秒更新一次,但幀落後8秒。

我們認爲這是因爲具有較低幀速率的FFMPEG必須等待較長的I幀,並且不會發送Jpeg到web套接字,直到它具有完整的一個。我們寧願它發送一個Jpeg,而不必等到IFrame到達,我們寧願看到一個逐漸被瀏覽器填滿的局部圖像。我們無法忍受瀏覽器中的大於0.8秒的延遲。當相機設置爲發送MJPEG時,我們會看到0.250秒的滯後。使用H.264我們會看到1.25秒,我們需要將其降至0.8秒。所以我們真的希望微調H.264來削減一些時間。這就是爲什麼當我們降低FPS的第一種方法使情況變得更糟時,我們很驚訝,所以想知道還有什麼需要與FPS一起進行微調以獲得好的結果。

FFMPEG是否有任何選項可以告訴它在第一批數據到達時立即發送Jpegs?或者,我們應該看看其他調整途徑?

這裏是FFMPEG參數: ffmpeg的 -buffer_size 1024000 -r 15 -i的rtsp://10.140.150.92/02441987-0826-4dc2-b9bd-62efdc0dd951/02441987-0826-4dc2-b9bd-62efdc0dd951_vs1 ?標記= 02441987-0826-4dc2-b9bd-62efdc0dd951^LVEAMOKTD^100^40^26^1500482113^a97effd2a6f85c4a0b5e93953b27c8e1eb40ca77 &用戶名= USER1 -f IMAGE2 -multiple_requests 1 -icy 0 -chunked_post 0 -q:v 31 -vsync 1 -r 15 -vf scale = 640:-1 http://127.0.0.1:58014/video/cameraTag_deviceId_22cameraUid_-1scale_640:-1cameraOrigin_requestedStreams_videostream1/frame-%03d.jpeg

非常感謝, 喬。

回答

1

我們正在將H.264流轉碼爲通過網絡套接字發送到瀏覽器的Jpgs。

爲什麼你會想要這樣做?

當我們降低FPS時,我們發現攝像機視頻輸入有較大的滯後。

你降低FPS,等於是有要在幀之間較大的時間...

我們認爲這是因爲FFMPEG與較低的幀速率必須等待更長的時間對於I Frame,並且不會將Jpeg發送到Web套接字,直到它具有完整的一個。

沒有必要等待I幀從視頻中提取JPEG,但是誰知道您沒有向我們展示您的FFmpeg命令,因此無法說出您爲此使用的999個方法中的哪一個。

我們寧願它發出了一個局部的Jpeg

據推測,你的意思是你寧願有一個完整的JPEG當前幀,即使它不是從視頻信號源的I幀,正確?

因爲我們不能

您使用完全錯誤的技術,這裏的一切,如果這是一個真正的問題在視頻播放器容忍滯後。

我可能應該已經發布了所有這些作爲評論,但是這裏太多了。如果您可以解決您的問題並告訴我們您要做什麼,我會刪除此答案併發布實際答案。

+0

謝謝。我添加了一些額外的信息,希望能夠將您需要的上下文添加到我的問題中。 –