Android MLS тип видео MIME - PullRequest
       45

Android MLS тип видео MIME

9 голосов
/ 07 февраля 2012

Я хотел бы запустить Intent для воспроизведения видео HLS (HTTP Live Stream).

Что я должен указать в поле типа для запуска только тех видеоплееров, которые поддерживают HLS?

Я попытался безуспешно следующее:

video/m3u

video/m3u8

video/hls

application/x-mpegURL

vnd.apple.mpegURL

video/MP2T

application/vnd.apple.mpegurl

Идеи, пожалуйста ...

Ответы [ 4 ]

8 голосов
/ 06 июня 2012

Вы должны поставить тип Content-Type, указанный в RFC: application / vnd.apple.mpegurl . Смотрите раздел 3.1 из http://tools.ietf.org/html/draft-pantos-http-live-streaming-08

Поддержка Android для HLS крайне скудна. На многих устройствах вам понадобится программное обеспечение сторонних производителей, особенно для версий ниже 3. Похоже, Google не заботится об этом или, по крайней мере, не регрессионный тест.

2 голосов
/ 03 августа 2012

Код Android (ICS, JB) просматривает URL для определения выбора игрока!Если URL содержит ключевое слово m3u8, тогда и только тогда он будет проигрывать HLS.Это явно ошибка в Android.

1 голос
/ 11 марта 2015

проблема

Когда я использовал

<video id="player"
       src="http://hlsserver.example/auth/and/get/hls?authkey=42" 
       controls>
</video>

это не удалось с videoElement.error == error.MEDIA_ERR_SRC_NOT_SUPPORTED [1] в Chrome 40, хотя Chrome трижды запрашивал URL-адрес src, как показано в tcpdump. Это ответ от сервера:

HTTP/1.1 200 OK
Content-Type: application/vnd.apple.mpegurl
[...]

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Swedish",AUTOSELECT=YES,DEFAULT=YES,URI="blah",LANGUAGE="swe"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000,SUBTITLES="subs"
/stream-proxy/blah1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=700000,SUBTITLES="subs"
/stream-proxy/blah2
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,SUBTITLES="subs"
/stream-proxy/blah3

Сноска

  1. MEDIA_ERR_SRC_NOT_SUPPORTED имеет значение 4.

Решение

Похоже, ответ thoma.ing правильно для Chrome 40 на Android 4.4.4, по крайней мере:

Код Android (ICS, JB) просматривает URL для определения выбора игрока! Если URL содержит ключевое слово m3u8, тогда и только тогда он будет проигрывать HLS. Это явно ошибка в Android.

Когда я изменил URL-адрес видео src, добавив ключевое слово m3u8, оно стало отлично работать в Chrome.

<video id="player"
       src="http://hlsserver.example/auth/and/get/hls?authkey=42&m3u8=yes"
       controls>
</video>
1 голос
/ 11 июля 2012

Имеет ту же проблему, но «audio / x-mpegURL», кажется, работает так же, как и в примере потока HLS на сайте Apple, http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 - тестирование на Galaxy Nexus BTW.

Хотя немного сбивает с толку, поэтому я и осматриваюсь.

...