3

こんにちは皆さん、これで私を助けてくれることを願っています。

問題: プライベート ネットワーク (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)だから、ついにこの質問をする時が来たと思いました。

どんな助けでも大歓迎です!

乾杯

4

3 に答える 3

1

あなたの投稿をもう一度読んだ後、私は最初に見逃したものを見つけました。Axis カメラ マルチキャストから MJPEG over HTTP に BitmapFactory.decodeByteArray を使用しました。呼び出しは数ミリ秒で完了します。問題は、通常、呼び出しごとに新しいビットマップを作成したいということです。ビットマップを永続化する方法があり、それによって時間が大幅に短縮されます。私は電話のことを覚えていないだけで、通常の開発用コンピューターは現在破壊されています...エラー、ITによって「アップグレード」されているため、頭の中であなたに言うことはできませんが、少し検索します。Xoom と Galaxy Tab 10.1 で 30fps を取得できましたが、その他のいくつかでは問題ありませんでした。

マーク・ベッチャー mboettcher@ara.com

于 2012-05-22T19:38:35.303 に答える
1

OK、確認したところ、オーバーロードされた BitmapFactory.decodeByteArray を使用して、BitmapFactory.Options で InBitmap フラグが設定された不変のビットマップを使用しました。ビットマップ自体のために私がしなければならなかった何かがあったかもしれません.おそらく少なくとも静的にしました. 他にも設定すべきフラグがいくつかあったかもしれませんが、今すぐ続行するのに十分なはずです。

于 2012-05-22T20:00:51.653 に答える
0

Android で RTSP を介して MJPEG ストリーミングを再生しようとすると問題が発生しました。私たちが持っていたマルチキャスト ビデオ サーバーは、HTTP 経由で MJPEG を送信できませんでした。遅延のために、RTSP 経由で H.264 を使用したくありませんでした。このアプリケーションは、ROV がライブ ビデオを表示するために Droid に送り返すものでした。多くの手間を省くために、私が問題を正しく理解していれば、MediaPlayer などの Android SDK でそれを行うことはできません。 MPlayer、ffmpeg、Live555。お役に立てれば。

于 2012-05-22T19:28:28.120 に答える