私は開発中の Samsung Galaxy Tab (Android 2.2 Froyo など) を持っています。アプリケーションが IP 経由でストリームにアクセスする必要があり、ストリームはAxis 241Qから発信されています。Axis は .mp4 エンコーディングを使用するように設定されており、Android がネイティブで .mp4 をサポートしていることがわかります。Axis サーバーは、ローカル ネットワーク経由でメディア プレーヤーからストリームにアクセスするための RTSP URI も提供します。
私はビデオ エンコーディングの標準とコンテナについてほとんど何も知らないと言って、これを先導させてください。
私の質問は、Android VideoView を使用してこのストリームにアクセスするにはどうすればよいですか? アクティビティの onCreate() でビューを起動するために使用する Cliff's Notes バージョンのコード:
VideoView v = (VideoView) findViewById(R.id.feed);
Uri video = Uri.parse("rtsp://local/path/to/feed.amp");
v.setVideoURI(video);
v.start();
インターネットで見つけたいくつかのテスト .3gp ストリーム URI でこれを使用しましたが、正常に動作しているように見えますが、見つけたすべてのテスト ストリームは RTSP ではなく HTTP で行われたため、 RTSP を開始するためのもう少しの魔法。それがなぜなのか想像もつきませんが。Android が MediaPlayers の URI 文字列リソースで RTSP をサポートしていることは知っています。繰り返しになりますが、私はビデオのストリーミングについて何も知らないので、まったく同じように機能すると仮定するのは間違っているかもしれません.
とにかく、ローカルで Axis フィードにアクセスしようとすると、フィードが読み込まれません。これは、Android ドキュメントに記載されている拡張子ではなく .amp 拡張子を使用した結果であると考えていますが、まったくわかりません。この URI を QuickTime などのメディア プレーヤーに渡すと、肯定的な結果が得られるので、.amp ファイル拡張子はそれほど奇妙ではないと思います。HTMLエスケープ文字に「amp」が表示されるため、引用符などを使用しても.ampを他のものとグーグルで検索すると、退屈な結果が得られるため、実際に見つけるのに苦労しました。
最初の質問は、明らかな何かが欠けているのでしょうか? 私はそうではないと思っていますが、そうである可能性は十分にあります。
2 番目の質問: 自分で非常識なソリューションを作成することなく、この RTSP ストリームにアクセスする簡単な方法はありますか? すでに公開されていて、これを簡単にしてくれる既存の無料のライブラリは、大きな助けになります。最初はgstreamer の Java バインディングを試すつもりでしたが、プロジェクト ページを見た後、gstreamer が Swing に依存していることがわかりました。Swing が Android Java jar に含まれているとは思えません。