5

リリース ノートによると、StageFright は GingerBread リリースで OpenCore フレームワークを置き換えます。Apple の HTTP ライブ ストリーミングは、Android 2.3 以降、デフォルトでサポートされています。ウィキペディアでさえこれについて言及しています。
ただし、バンドルされている API デモを使用して Apple が提供する テスト ストリームMediaPlayerDemo_Video.javaを実行しようとすると、次の例外が発生します。

setDataSource('http://devimages.apple.com/iphone/samples/bipbop/gear1/
prog_index.m3u8')
connect to devimages.apple.com:80/iphone/samples/bipbop/gear1/
prog_index.m3u8 @0
INFO/NuCachedSource2(34): ERROR_END_OF_STREAM
error (1, -2147483648)
ERROR/MediaPlayerDemo(667): error: Prepare failed.: status=0x1
java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer.prepare(Native Method)
at
com.video.stream.MediaPlayerDemo_Video.playVideo(MediaPlayerDemo_Video.java:
125)
at
com.video.stream.MediaPlayerDemo_Video.surfaceCreated(MediaPlayerDemo_Video.java:
181)
  ...
    surfaceChanged called
    Displayed com.video.stream/.MediaPlayerDemo_Video: +1s652ms (total
    +7s427ms)
    GC_EXPLICIT freed 2K, 55% free 2514K/5511K, external 716K/1038K,
    paused 183ms
    GC_EXPLICIT freed 17K, 52% free 2782K/5767K, external 716K/1038K,
    paused 87ms
    GC_EXPLICIT freed 68K, 50% free 2972K/5895K, external 2544K/3109K,
    paused 104ms
    request time failed: java.net.SocketException: Address family not
    supported by protocol 

---関連コード(MediaPlayerDemo_Video.java):

path = "http://devimages.apple.com/iphone/samples/bipbop/gear1/
prog_index.m3u8";
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

質問:
1. GingerBread ビルドは本当に Apple の HTTP ライブ ストリーミング プロトコルをサポートしていますか?
2. 上記の問題は何ですか?

助けてください。

4

2 に答える 2

8

わかりました、いくつかのデータを見つけました。私自身の質問に答えて、このスレッドを更新します。誰かがテーブルに持ち込む提案やその他の考慮事項がある場合は、追加してください.

  1. StagefrightHoneycombビルドサポートに付属のフレームワークHTTP Live Streaming。ドキュメントは、どの部分を明示的に言及することなく 、ドラフト仕様のほとんどの部分を読んでいます。

  2. ビデオとオーディオは、Android でサポートされているメディア形式に準拠する必要があります。

  3. AES-128暗号化を使用してコンテンツ保護されたストリームを再生できました。ただ、エミュレータ(残念ながら持っていなかった)の性能はイマイチでした。オーディオとビデオはひどく同期していませんでした。ストリーミング アプリケーションは、実際のデバイスでテストする必要があります。

  4. https 経由でデータをストリーミングすることはできません。また、ストリームが HTTPLive 標準に準拠していることを検出する"http://"には、URL の一部を次のように置き換える必要があります。"httplive://"

于 2011-02-28T06:27:26.647 に答える
0

Gingerbread は httplive:// スキーム プレフィックスを使用した一部の HLS ストリームの再生をサポートしていますが、サポートされているコーデックは非常に限られているため、メディア フレームワークをクラッシュさせて再生に失敗する完全に有効なストリームを簡単に構築できます。

私の経験では、このクラッシュは通常、暗号化されたコンテンツであっても、最初のセグメントのロードまたはデコード中に発生しますが、キーは要求されず、フレームワークが KEY 行を無視していることを示しています。

もちろん、市場に出回っている最新のデバイスのみをサポートする必要がある人にとっては、ICS での HLS のサポートは (まだ完全ではありませんが) 妥当なように見えますが、ある種の後方互換性が必要な人は明らかに取り残されています。ストリーミングの唯一のオプションは (プログレッシブ ダウンロードとは対照的に) RTSP のようですが、これ自体は Android ではあまり実装されていません。

于 2012-09-11T13:12:19.257 に答える