Тип мультимедиа HLS для Android HLS

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

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

Он безуспешно пытался: «video / m3u», «video / m3u8», «video / hls», «application / x-mpegURL», «vnd.apple.mpegURL», «video / MP2T», «application / vnd» .apple.mpegurl.

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

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

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

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

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

Немного смущает, поэтому отсюда и я оглядываюсь.

Проблема

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

<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 то по 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>