我想触发一个Intent来播放HLS(HTTP直播)视频。
我应该在类型字段中添加什么来解雇支持HLS的视频播放器?
我尝试失败以下内容:
video/m3u
video/m3u8
video/hls
application/x-mpegURL
vnd.apple.mpegURL
video/MP2T
application/vnd.apple.mpegurl
想法......
答案 0 :(得分:8)
您应放置RFC中指定的Content-Type类型: application / vnd.apple.mpegurl 。参见http://tools.ietf.org/html/draft-pantos-http-live-streaming-08
的第3.1节Android对HLS的支持非常差。在许多设备上你需要一些第三方软件,特别是对于少于3的版本。谷歌似乎并不关心,或者至少不会进行回归测试。
答案 1 :(得分:2)
Android代码(ICS,JB)查看URL以确定玩家选择!如果URL包含关键字m3u8,那么只有这样,它才会播放HLS。 这显然是Android中的一个错误。
答案 2 :(得分:1)
具有相同的问题,但“audio / x-mpegURL”似乎与苹果网站上的示例HLS流使用http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8一样有效 - 在Galaxy Nexus BTW上进行测试。
有点令人困惑,因此为什么我在四处寻找。
答案 3 :(得分:1)
当我使用
时<video id="player"
src="http://hlsserver.example/auth/and/get/hls?authkey=42"
controls>
</video>
它在Chrome 40上以videoElement.error == error.MEDIA_ERR_SRC_NOT_SUPPORTED
[1]失败,即使Chrome在tcpdump中看到src
网址三次。这是来自服务器的响应:
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's answer对于Android 4.4.4上的Chrome 40至少是正确的:
Android代码(ICS,JB)查看URL以确定玩家选择!如果URL包含关键字m3u8,那么只有这样,它才会播放HLS。这显然是Android中的一个错误。
当我更改视频src
网址以包含m3u8
关键字时,它开始在Chrome上正常运行。
<video id="player"
src="http://hlsserver.example/auth/and/get/hls?authkey=42&m3u8=yes"
controls>
</video>