ffmpeg で http 経由で画面をブロードキャストする

ffmpeg で http 経由で画面をブロードキャストする

この隔離期間中、私は自分のデスクトップを友人と共有して、git が実際にどのようなものかを説明しようとしていました。問題は次の通りです。

  • 私はFreeBSDを使用しています。
  • 私たちは NAT の背後にいます。しかし、これらの目的のために VPN (Wireguard) が構成された VPS を持っています。
  • 無料でシンプルな(「無駄のない」)ソフトウェアを使いたいです。

私が使用することを決めたのは、デスクトップを共有しffmpeg -f x11grab、任意のポートにストリーム出力することです。 1 つの仮想ネットワークにアクセスできると、友人は VLC、MPV、または Web ブラウザーを使用して問題なくこのストリームを視聴できます。 問題は、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 秒の遅延があることがわかります。ビデオ ビットレートを 0.5 メガバイトに設定しても、同様の遅延 (もちろん品質も悪い) が発生するため、問題は帯域幅にない可能性があります (ローカル PC より遠くへのブロードキャストを開始していませんでした)。

私は見つけただから答えるあるユーザーがHLSは低遅延には適さないプロトコルだと言っています。私は多くのブログ、Wikipediaの記事、ffmpeg Wikipediaを読みました(ストリーミングガイド) を試しましたが、解決策が見つかりませんでした。Discord や Skype のように、数秒の遅延でデスクトップを友達に見せるには、遅延を減らすにはどうしたらよいですか。または、代わりにどのソフトウェア (ffmpeg が望ましい) を使用すればよいですか。ターミナル ウィンドウを共有するので、高品質は必要なく、ドロップしても問題ありません。

関連情報