一、关于m3u8:(https://blog.youkuaiyun.com/baidu_34418350/article/details/64922512)
m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过 编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求。
示例链接:http://cdn.can.cibntv.net/12/201702161000/rexuechangan01/rexuechangan01.m3u8
第一层
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2650800,RESOLUTION=1920x1080
1.m3u8
观察数据吗,没有用http://开头时,不是真正路径,需要拼接字符串再次请求:http://cdn.can.cibntv.net/12/201702161000/rexuechangan01/1.m3u8 得到数据
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:14
#EXTINF:11.480,
20170215T224129-1-0.ts
#EXTINF:11.480,
20170215T224129-1-1.ts
#EXTINF:10.480,
20170215T224129-1-2.ts
#EXTINF:11.400,
20170215T224129-1-3.ts
#EXTINF:11.120,
20170215T224129-1-4.ts
。。。
#EXTINF:1.000000,
3RCP49g82011159.ts
#EXTINF:0.600000,
3RCP49g82011160.ts
#EXT-X-ENDLIST
看到ts结尾的文件,这才是视频真正的存放路径:
http://cdn.can.cibntv.net/12/201702161000/rexuechangan01/20170215T224129-1-0.ts
这时候用浏览器下载就可以播放。不过这个播放不用我们去解析 android 4.0以后的videoView 就支持自动解析,并拼接播放。
安卓代码:
Uri uri = Uri.parse("http://cdn.can.cibntv.net/12/201702161000/rexuechangan01/rexuechangan01.m3u8");
video_view.setMediaController(new MediaController(this));
&n