Android HLS视频mime类型

时间:2012-02-07 14:49:09

标签: android android-intent video-streaming mime-types http-live-streaming

我想触发一个Intent来播放HLS(HTTP直播)视频。

我应该在类型字段中添加什么来解雇支持HLS的视频播放器?

我尝试失败以下内容:

video/m3u

video/m3u8

video/hls

application/x-mpegURL

vnd.apple.mpegURL

video/MP2T

application/vnd.apple.mpegurl

想法......

4 个答案:

答案 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

脚注

  1. MEDIA_ERR_SRC_NOT_SUPPORTED的值为4
  2. 解决方案

    似乎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>