2

私の要件は、Android アプリでライブ ビデオ ストリームを再生できることです。ストリームは RTSP/RTP 経由になります。ソースを制御することはできません。また、RTP ペイロードが、開発者ガイドビデオ エンコーディングの推奨事項 に記載されている要件を満たしていないようです。具体的には、次の要件がビデオ ソースによって違反されているようです。

3GPP および MPEG-4 コンテナーの場合、moov アトムはすべての mdat アトムより前にある必要がありますが、ftyp アトムの後に続く必要があります。

基本的に、生の H264 データ (コンテナーにラップされていない) を取得しているように見えます。

今、

  1. MediaPlayerAndroid 2.2 Samsung Galaxy Tab のクラスを使用して、このストリームを再生できませんでした。
  2. ただし、Android 2.3 Samsung Galaxy S ではプレイできました。
  3. 一部のサードパーティ アプリ (MX Player) は、2.2 Galaxy Tab でも同じストリームを再生できました。

上記のケース 2 と 3 の両方で、DDMS ログは、Stage Fright フレームワークが内部で使用されていたという事実を指摘しましたが、ケース 1 では、PVP (つまり、OpenCore) が使用されていました。これらすべてから、次のように結論付けられます。

  1. 私のストリームは OpenCore フレームワークで再生できません。
  2. Android 2.2 でも、私のストリームは Stagefright を使用して再生できます

それは私の質問に私をもたらします:

stagefright を Android 2.2 に移植するには何が必要ですか?

さらに、AOSP ソースで、新しいNuPlayer方が現在 RTSP ストリームの再生を担当していることに気付きました。質問:

  1. NuPlayer古いバージョンの Android (2.2 または 2.3)に移植することはできますか?
  2. もしそうなら、それを自分のアプリで使用できるようにするには、何をする必要がありますか?

ソースをチェックアウトし、NDK を使用して stagefright と NuPlayer をビルドできることを認識しています (ただし、NDK レベルで作業したことはありません)。私が知らないのは、私のアプリがこの NuPlayer をどのように使用できるかです。

4

1 に答える 1

0

私は同様の問題で立ち往生していますが、1つの解決策を見つけました。システムのbuild.probファイルにパッチを適用する必要があります。私の質問を見てください、そしてまた私は私の答えを投稿しました。

デフォルトでは、stagefrightはbuild.propファイルで無効のままになっています。それを有効にして、デバイスを再起動する必要があります。次に、要件をサポートするstagefrightフレームワークにアクセスできます。

RTSPストリーミングの場合は、リモートマシンにlive555MediaServer.exeファイルをダウンロードし、いくつかのメディアファイルを同じ場所に保持します。live555MediaServer.exeファイルを開きます。

次のコードを使用してください-

private final String RTSP_FILE = "rtsp://<remote machine IP>/<file name>";

mVideoView.setVideoURI(Uri.parse(RTSP_FILE));
于 2012-05-15T08:41:45.837 に答える