[多媒体] m3u8简介
m3u8简介
简介:https://www.jianshu.com/p/426425cad08a
RFC:https://tools.ietf.org/html/rfc8216
原理:将视频或音频流分片,并建立m3u8格式的索引,m3u8可以嵌套(最多支持一层嵌套)。可用于直播或者点播。
格式:m3u8是由独立行组成的文本文件,行分成三类:
- 以#EXT开头的表示是tag
- 仅有#表示是注释
- uri行表示嵌套的m3u8文件,或者真正的分片流。
m3u8参数
一级索引和二级索引中,给出的地址可能是相对地址/绝对地址。相对地址根据一级索引的地址更改。
通常一级索引会给出不同带宽的下载链接,可以根据网速适配不同的下载链接,从而避免卡顿。
流格式可能是.ts .aac或者RFC支持的其他格式。
m3u8参数
- EXTINF:播放时间长度,单位s
- BANDWIDTH:带宽
- EXT-X-ENDLIST:有这个参数,说明是点播,是完整的一段音频或者视频;没有这个参数,说明是直播,需要不断从二级索引中去获取下一片段的链接
- EXT-X-MEDIA-SEQUENCE(可选): 播放列表的第一个音频的序号,如64.m3u8中,有3个音频,序号分别是12591742,12591743,12591744。如果不设置,默认为第一个音频链接序号为0。可以没有这个参数
- EXT-X-KEY:可能是加密的,具体见RFC
- EXT-X-TARGETDURATION:每片最大时长,单位s, #EXTINF应该小于这个值
- 更多参数参考中文链接:http://www.dnsdizhi.com/m/?post=242
例子
一级索引 (可以这一层索引,直接是下面的二级索引)
http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
二级索引(在一级索引中根据当前网速找合适的带宽的链接下载)
http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
可以直接播放的文件,mpeg2格式
http://devimages.apple.com/iphone/samples/bipbop/gear1/fileSequence0.ts
bipbopall.m3u8
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
gear1/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111
gear2/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444
gear3/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777
gear4/prog_index.m3u8
prog_index.m3u8
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, no desc
fileSequence0.ts
#EXTINF:10, no desc
fileSequence1.ts
#EXTINF:10, no desc
...
...
...
fileSequence178.ts
#EXTINF:10, no desc
fileSequence179.ts
#EXTINF:1, no desc
fileSequence180.ts
#EXT-X-ENDLIST
[多媒体] m3u8简介的更多相关文章
- 视频软件——ffmpeg
1.官网下载地址:http://ffmpeg.org/download.html ffplay.exe ffplay是用于播放的应用程序. ffplay name.mp4 ffprobe.exe ff ...
- 实战SQL注入
SQL注入是啥就不解释了.下面演示一个SQL注入的例子 SQL注入点可以自己尝试或用SQL注入漏洞扫描工具去寻找,这里用大名鼎鼎的sqlmap演示一个现成的案例. 1.漏洞试探 root@kali:~ ...
- java微信接口之三—上传多媒体文件
一.微信上传多媒体接口简介 1.请求:该请求是使用post提交from来实现的,我们可以在网页上进行表单提交来实现.地址为: http://file.api.weixin.qq.com/cgi-bin ...
- Qt, 我回来了。。。
说起qt,大学时就有接触,但一直没有深入,这个周六周天利用两于时间重新温习了一下,跟之前用过的vs上的MFC.C++ builder比起来,Qt封装很人性化,库也比较全,写个 一般的小工具很轻松. 参 ...
- HTML5—— 你肯定会用到的新知识
HTML5 简介 语义化标签 新增结构标签 表单 多媒体 HTML5 简介 XML是更加严格的语言 是HTML和XHTML的结合 语义化标签 新增的语义化标签 header nav section a ...
- 【转载】修改Windows下键盘按键对应功能的一些方案
原文见:https://sites.google.com/site/xiangyangsite/home/technical-tips/windows-tips/multi_media_key_cus ...
- 基于Android的在线播放器系统的设计与实现
文章结构: 1 引言 1.1系统的研究背景 现在的时代是互联网的时代,互联网高速发展的同时,无线网络也接入了互联网.社会的各个领域都已经被无线网络渗透.小的比如手机,电脑,电视.大的比如灯光系统,智能 ...
- m3u8文件简介
1. M3U8文件概念 M3U8文件是指UTF-8编码格式的M3U文件.M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播 ...
- Android多媒体开发-- OpenMax IL简介
1.openmax 简介 http://www.khronos.org/openmax/ OpenMax是一个多媒体应用程序的框架标准,由NVIDIA公司和Khronos在2006年推出. OpenM ...
随机推荐
- Django Error: That port is already in use.
原文:http://stackoverflow.com/questions/20239232/error-that-port-is-already-in-use A more simple solut ...
- rownum使用说明
参考:http://www.blogjava.net/conans/articles/219693.html 参考:http://www.blogjava.net/freeman1984/archiv ...
- Atitit.异常的设计原理与 策略处理 java 最佳实践 p93
Atitit.异常的设计原理与 策略处理 java 最佳实践 p93 1 异常方面的使用准则,答案是:: 2 1.1 普通项目优先使用异常取代返回值,如果开发类库方面的项目,最好异常机制与返回值都提供 ...
- [svc]alpha、beta、rc各版本区别
参考:http://www.ttlsa.com/linux/alpha-beta-rc/ 很多软件在正式发布前都会发布一些预览版或者测试版,一般都叫"beta版"或者 " ...
- C#遍历计算机上所有的文件
class Program { static List<string> allFileName=new List<string>(); static void Main(str ...
- linux下的which
which命令用来查找并打印可执行文件的绝对路径. 他会根据PATH环境变量定义的路径来依此查找可执行文件. 需要注意的是,指向可执行文件的链接文件在查找中会被忽略. 比如env命令: ll /usr ...
- JS高程3:面向对象的程序设计——理解对象
JS中对象的定义: (无序)属性的集合 (无序)值的集合 (无序)名值对的集合 JS对象是基于引用数据类型来创建的. JS对象创建的2种方式: 传统方式 对象字面量 var person = new ...
- sql命令大全
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- Failed to resolve: com.android.support:appcompat-v7:26.0.0wenti
在安装Android Studio 3.0的时候出现了这个问题.查阅了许多资料都没有找到原因.到最后才发现,Android Studio默认https是不走代理的,只要勾选上https的代理就顺利的安 ...
- Linux上安装Nginx及常用命令
一.Linux安装软件常用方法 1.rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序. 1)使用的是通用参数编译,配置参数不是最佳 2)可控制性不强,比如对程序特定组件的定制性安 ...