こんにちは皆さん、これで私を助けてくれることを願っています。
問題: プライベート ネットワーク (WiFi) でマルチキャストしている RTP ストリームがあります。ストリームを表示するために多くの Android タブレットを使用したいと思います。タブレットの数を制限することはできず、クライアントの数が増えても品質が低下することはありません。これは、ユニキャストではなくマルチキャストが必要な理由を説明しています。
アプローチ: 理論的には、サーバー側で RTSP または HTTP ストリームを作成することにより、ビデオをクライアントに提供できるはずです。ただし、同時に接続するクライアントが多すぎるとサーバーのパフォーマンスが低下することを理解しているため、これを回避する必要があります。理想的には、すべてのクライアントがまったく同じマルチキャストをリッスンするようにしたいと考えています。そうすれば、クライアントの数がサーバーのパフォーマンスに影響を与えることはありません。[注: IP はローカルで、TTL は 0/1 に設定されているため、自分のネットワーク以外がマルチキャスト パケットで詰まる危険はありません。]
実装 上記のアプローチを実装するために、RTP パケットを受信してストリームをつなぎ合わせるマルチキャスト クライアントを Android で作成することを考えました。これを JPEG ペイロードで試したところ、非常にうまく機能しました。ただし、JPEG の問題は、各フレームをデコードするためのBitmapFactory.decodeByteArray呼び出しが非常にコストがかかり (ほぼ 100 ミリ秒!)、フレーム レートをかなり制限することです。JPEG は適切なビデオ ストリーミング プロトコルではないため、ネットワークの負荷も非常に高くなります。
私がやりたいことは、私がすでに画像に対して行ったことをビデオに対して行うことです。つまり、RTP パケットからペイロード ストリーム (MPEG4 など) をつなぎ合わせて、それを「何か」にフィードします。最初は、VideoView は生の入力ストリームで動作すると思っていましたが、間違っていました。VV は rtsp または http url でのみ動作するようです (正しいですか?)。
解決? さて、私のオプションは何ですか?上記の理由から、生の RTP ストリームから RTSP サーバーをセットアップすることを避け、すべてのタブレットにサービスを提供したいと考えています。私は2日間見回し、SOとネットで提案されたすべての解決策をチェックしましたが、私の問題には何も当てはまらないようでした(ほとんどの場合、RTSP URLまたはユニキャストが解決策でしたが、使用できないと思いますit)だから、ついにこの質問をする時が来たと思いました。
どんな助けでも大歓迎です!
乾杯