MediaPlayer Framework на GingerBread и поддержка HTTP Live Streaming от Apple

Согласно примечаниям к выпуску, StageFright заменяет платформу OpenCore в выпуске GingerBread. Похоже, что было много дискуссий, в которых говорится: HTTP-потоковая передача Apple HTTP поддерживается по умолчанию с Android 2.3. Даже в Википедии упоминается об этом.
Однако, когда я пытаюсь запустить тестовый поток, предоставленный Apple, используя MediaPlayerDemo_Video.java комплекте с API Demos, я получаю следующие исключения:

 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 подлинную версию протокола HTTP Live Streaming от Apple?
2. Что пошло не так?

Пожалуйста помоги.

Хорошо, я нашел некоторые данные, и я собираюсь обновить эту тему, отвечая на мой собственный вопрос. Если у кого-то есть предложения или другие соображения, чтобы привести к таблице, добавьте.

  1. Stagefright которая поставляется с сборкой Honeycomb поддерживает HTTP Live Streaming . Документация читает большинство частей проекта спецификации без особого упоминания, какие части.

  2. Видео и аудио должны соответствовать форматам мультимедиа, поддерживаемым Android .

  3. Я смог воспроизводить потоки, защищенные контентом, используя AES-128 . Хотя, производительность эмулятора (к сожалению, у меня не было устройства) было плохо. Аудио и видео были ужасно не синхронизированы. Потоковые приложения должны быть протестированы на реальных устройствах.

  4. Вы не можете передавать данные по https. Кроме того, чтобы обнаружить, что поток соответствует стандарту HTTPLive, вам придется заменить часть "http://" URL-адресом "httplive://"

Gingerbread поддерживает воспроизведение некоторых потоков HLS с использованием префикса схемы httplive: //, но поддерживаемые кодеки очень ограничены, и очень легко построить абсолютно корректный поток, который выдает из строя среду мультимедиа и не воспроизводится.

Мой опыт показал, что этот сбой обычно возникает при загрузке или декодировании первого сегмента, даже для зашифрованного контента, но что ключ не запрашивается, предполагая, что инфраструктура игнорирует линии KEY.

Конечно, для тех, кому только нужно поддерживать самые новейшие устройства на рынке, поддержка HLS в ICS представляется разумной (хотя и несовершенной), однако те из нас, кто нуждается в какой-то обратной совместимости, остаются решительно на холоде, И, кажется, единственный вариант для потоковой передачи (в отличие от прогрессивной загрузки) – это RTSP, который сам по себе плохо имплантирован в Android.