проблема
Когда я использовал
<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
Сноска
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>