私は Java でビデオ/オーディオ チャット アプリケーションを実装することを計画しています。現在、VLCj ライブラリを試していますが、VLC はビデオ/オーディオのリアルタイム ストリーミングをサポートしていないようです。レイテンシーは非常に高い (約 1 秒)。遅延がどこから来るのかはわかりませんが (ビデオのエンコードに関するものに違いありません)、遅延が大きいとチャットにはあまり便利ではありません。VLC は優れたアプリケーションですが、この問題を解決する解決策が見つかりません。したがって、何を使用するか、またはVLCを構成してレイテンシを低くする方法について何か提案があれば、私は非常に感謝しています. ありがとう。
2 に答える
個人的には、JMF (Java メディア フレームワーク) に反対することをお勧めします。それは古くて、かなり維持されていない/死んでいます-グーグルの周りで、ステアリングを外すようにアドバイスするのは私だけではないことがわかります!
この方法でライブ ビデオ ストリーミングに VLCj を使用したことはありませんが、この方法を続けたい場合は、ビデオのストリーミング方法を確認することをお勧めします。エラー修正で何かを行う場合は、すべてのフレームを遅らせて、破損したフレームなどの繰り返しを要求して、完全な再生を実現することをお勧めします。実際には、ストリーミングの場合は瞬時に再生する必要があり、1 つまたは 2 つのフレームが頻繁にドロップされる場合でも、問題はありません。VLCj でそのオプションをどのように設定するかはよくわかりませんが、調べる必要があります。
それとは別に、Xuggler を試してみることをお勧めします。これは VLCj よりもはるかに低いレベルで動作しますが、これにより、何が起こっているかをより詳細に制御できるようになります (そして、JMF とは異なり、これは優れた、積極的に維持されているプロジェクトです)。
Java Media Frameworkを見たことがありますか? おそらく、VLCj よりも鉱石コードを作成する必要がありますが、それは自分で制御できます。
また、VLCj に関しては、必要な結果を得るためにいじることができる多くのオプションがあります。たとえば、高圧縮の設定を使用している場合、使用する圧縮によっては、デコードを遅らせるいくつかのピクチャ タイプが有効になっている可能性があります。