Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top