我想激发一个Intent来播放HLS(HTTP直播流)视频。我应该在类型字段中输入什么才能只启动支持HLS的视频播放器?我尝试了失败以下操作:
video/m3u video/m3u8 video/hls application/x-mpegURL vnd.apple.mpegURL video/MP2T application/vnd.apple.mpegurl
有什么想法...
1l5u6lss1#
您应该将RFC中指定的内容类型类型:应用程序/vnd.apple.mpegurl.请参见https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-08的第3.1节Android对HLS的支持非常差。你将需要一些第三方软件在许多设备上,特别是版本低于3。谷歌似乎并不关心,或至少没有回归测试。
hrysbysz2#
Android代码(ICS,JB)查看URL来确定玩家选择!如果URL包含关键字m3u8,那么并且只有在那时,它才会播放HLS。这显然是Android中的一个bug。
edqdpe6u3#
有同样的问题,但“音频/x-mpegURL”似乎是什么样的苹果网站上的样本HLS流使用http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8-测试Galaxy Nexus BTW。有点困惑,所以我才四处看看。
7xllpg7q4#
当我用
<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请求了src URL三次,如tcpdump中所示。以下是服务器的响应:
videoElement.error == error.MEDIA_ERR_SRC_NOT_SUPPORTED
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中的一个bug。当我更改视频src的网址,以包括m3u8关键字,它开始在Chrome上工作得非常好。
m3u8
<video id="player" src="http://hlsserver.example/auth/and/get/hls?authkey=42&m3u8=yes" controls> </video>
8iwquhpp5#
HLS格式视频的Mimetype是“应用程序/x-mpegURL”
<video> <source src="example.m3u8" type="application/x-mpegURL"> </video>
5条答案
按热度按时间1l5u6lss1#
您应该将RFC中指定的内容类型类型:应用程序/vnd.apple.mpegurl.请参见https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-08的第3.1节
Android对HLS的支持非常差。你将需要一些第三方软件在许多设备上,特别是版本低于3。谷歌似乎并不关心,或至少没有回归测试。
hrysbysz2#
Android代码(ICS,JB)查看URL来确定玩家选择!如果URL包含关键字m3u8,那么并且只有在那时,它才会播放HLS。这显然是Android中的一个bug。
edqdpe6u3#
有同样的问题,但“音频/x-mpegURL”似乎是什么样的苹果网站上的样本HLS流使用http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8-测试Galaxy Nexus BTW。
有点困惑,所以我才四处看看。
7xllpg7q4#
问题是
当我用
在Chrome 40上失败,返回
videoElement.error == error.MEDIA_ERR_SRC_NOT_SUPPORTED
[1],尽管Chrome请求了src
URL三次,如tcpdump中所示。以下是服务器的响应:脚注
MEDIA_ERR_SRC_NOT_SUPPORTED
具有4
的值。解决方案
看起来thoma.ing's answer至少对Android 4.4.4上的Chrome 40是正确的:
Android代码(ICS,JB)查看URL来确定玩家选择!如果URL包含关键字m3u8,那么并且只有在那时,它才会播放HLS。这显然是Android中的一个bug。
当我更改视频
src
的网址,以包括m3u8
关键字,它开始在Chrome上工作得非常好。8iwquhpp5#
HLS格式视频的Mimetype是“应用程序/x-mpegURL”