VLCを使用して(LAN経由で)デスクトップをストリーミングし、可能な限り低いレイテンシー(<100ms)を達成する方法を見つけようとしています。目標は、別のコンピューターがストリームを受信し、ストリーミング中にゲームをプレイできるようにすることです (つまり、テレビの横にある PC で PC1 からゲームをプレイします)。
どの設定を使用すればよいですか? 私は複数のアプローチを試みましたが、まだ成功していません。
編集:VLC以外のものも使用できます。
VLCでも同じことを試しましたが、3秒未満のレイテンシーを得ることができませんでした。FFmpeg は驚くべきことを行い、最終的に 1 秒以下のレイテンシーを実現しました。
mpeg2video と UPD が最良の結果を提供し、RTP レイテンシーは少し悪く感じましたが、非常に近いものでした。x264 に移行すると、遅延が少し増える代わりに品質が向上しますが、それは動的コンテンツの量と CPU の速度に大きく依存します。x264 は UDP でしか動作しませんでしたが、RTP で動作させる方法が必要です。
再生できるかどうかはわかりません。サーバーのワークロードが高くなり、遅延が顕著になります-少なくともLinuxでは、Windowsについてはわかりません。
Linux では、次のコマンドのいずれかを試してください。
$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec mpeg2video -b:v 8000 -f rtp rtp://192.168.0.10:1234
また
$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec libx264 -preset ultrafast -tune zerolatency -crf 18 -f mpegts udp://192.168.0.10:1234
画面の解像度 ( -s <your resolution>
)、リフレッシュ レート ( -r <fps>
)、帯域幅 ( -b:v <bits/s>
)、品質 (-crf 18
または-qp 18
、低いほど良い)、および対象の ip:port を調整します。
Windows を実行している場合dshow
は、x11grab
.
ffplay udp://192.168.0.10:1234
またはを使用して視聴しffplay sdp://192.168.0.10:1234
ます。
これらのオプションはどれもサウンドをストリーミングしないことに注意してください. オーディオをストリーミングするときも、そのような低レイテンシーを実現できませんでした。それは実行可能かもしれませんが、方法がわかりませんでした。
最も反応の良いクライアントはffplay
でVLC
、ネットワーク キャッシュがゼロに設定されていても遅延が大きすぎました。このようなキャッシュでは、ストリームを頻繁に「再同期」しようとしたため、実際にはさらに悪化しました。
さらに詳細が必要な場合は、調査結果について投稿しました。それが役に立てば幸い。フィードバックをいただければ幸いです。^_^