
在這些隔離的日子裡,我打算將我的桌面分享給朋友們,向他們解釋什麼是 git 實踐。問題是:
- 我使用 FreeBSD。
- 我們落後於 NAT。但我已經為這些目的配置了帶有 VPN (Wireguard) 的 VPS。
- 我想使用免費且簡單(「無趣」)的軟體。
我決定使用的是共享我的桌面ffmpeg -f x11grab
並將輸出流到任何連接埠。由於我們可以在一個虛擬網路中,朋友們可以使用任何 VLC、MPV 或網頁瀏覽器毫無問題地觀看此串流。當我了解到 ffmpeg 無法直接輸出到 http 時,問題就出現了。我嘗試了很多解決方案,例如透過 rtmp 發送到 YouTube Live Streaming(開銷,而不是免費服務)以及使用 HLS 協定和 HTTP 伺服器進行分割和共享,並在 HLS 處停止。
我的 ffmpeg 啟動:
ffmpeg -f x11grab -video_size 1920x1080 -i :0 -c:v h264 -f hls -hls_time 1 -g 15 stream.m3u8
以及我正在測試的 mpv:
mpv --no-cache --no-resume-playback stream.m3u8
我發現大約有 10-15 秒的延遲。即使我將視頻比特率設置為半兆字節,也會有類似的延遲(當然質量也很差),因此這可能意味著問題不在於頻寬[而且我什至沒有開始在比我的本地更遠的地方廣播它個人電腦! ]。
我找到了一個所以答案使用者表示 HLS 是一種錯誤的低延遲協定。我閱讀了很多部落格、維基百科文章和 ffmpeg 維基百科(串流媒體指南)但找不到解決方案。我怎麼能減少延遲,或者我可以使用什麼軟體(最好是 ffmpeg)讓我的朋友看到我的桌面,延遲等於 Discord 和 Skype 的幾秒鐘?值得一提的是:我不需要好的質量,滴也可以,因為我要共用一個終端視窗。