2017-04-06 52 views
0

我用這個代碼從一個MP4文件創建實時流:如何使低延遲且具有良好的品質爲HLS即時串流

ffmpeg -re -i input.mp4 
-c:a aac -c:v libx264 -s uhd2160 -f hls -hls_list_size 0 2160p/out.m3u8 
-c:a aac -c:v libx264 -s 2560x1440 -f hls -hls_list_size 0 1440p/out.m3u8 
-c:a aac -c:v libx264 -s hd1080 -f hls -hls_list_size 0 1080p/out.m3u8 
-c:a aac -c:v libx264 -s hd720 -f hls -hls_list_size 0 720p/out.m3u8 
-c:a aac -c:v libx264 -s hd480 -f hls -hls_list_size 0 480p/out.m3u8 
-c:a aac -c:v libx264 -s nhd -f hls -hls_list_size 0 360p/out.m3u8 
-c:a aac -c:v libx264 -s cga -f hls -hls_list_size 0 200p/out.m3u8 

但流的時候,也有極延遲。
看起來,這個延遲存在於質量非常高的流式視頻中,就像我用於livestream的視頻(4k)一樣。
我該如何減少這個延遲減少內存使用率爲?

+0

用於實時方法的HLS不是一個好的解決方案。在我的測試中,每次至少延遲5秒。 – Hokusai

+0

@ Hokusai,你能告訴我你的建議嗎? – parsa

+1

您可以通過使用[tee muxer](http://ffmpeg.org/ffmpeg-formats.html#tee)爲所有輸出對音頻編碼一次而不是單獨編碼相同的流倍。 – LordNeckbeard

回答

0

如何使低延遲且具有良好的品質爲HLS即時串流

你不能。

HLS的本質是細分的...而且在這個細分市場也是相對較大的細分市場。你試圖減少的越多,你的開銷越大。即使如此,在7或8秒以下也是非常困難的。

您可以切換到面向低延遲的技術,例如WebRTC,但存在質量折衷。在低延遲的情況下,編解碼器的優化方式使得他們更傾向於延遲質量...質量受到影響。我不知道你的「優質」是什麼,但是你必須在你的應用程序中決定對你來說真正重要的東西。

沒有提供低延遲,卓越質量,高兼容性和易擴展性的魔術視頻技術。它根本不會那樣工作。考慮一下,考慮一下對你真正重要的事情,爲你的場景選擇正確的權衡,並且如果你需要考慮正確技術的幫助,請提出一個新問題。