m3u8整理2--HLS、RTMP、HTTP-FLV直播协议


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

HLS、RTMP、HTTP-FLV直播协议


HLS协议

image.png


HLS协议


请求m3u8文件,解析之后得到若干个ts文件 


但是,也有可能m3u8文件下是若干个m3u8文件,需要判断播放器和浏览器是否支持


image.png


m3u8文件同时又细分为: 动态列表、静态列表和全量列表




  •  动态列表:顾名思义,是不断变化的,再直播中比较常用


  • 静态列表:几乎不怎么使用


  • 全量列表:数据不变化的,常用于点播


 image.png


m3u8文件

// m3u8文件就是一个纯文本文件  为了好看使用js格式
// 动态列表  开始
#EXTM3U // 标明m3u8文件的版本 很重要,版本一定要是播放器能够支持的对上
#EXT-X-VERSI0N:6 // 版本的声明  第6
#EXT-X-TARGETDURATION:10 // 默认视频的时长
#EXT-X-MEDIA-SEQUENCE:26 // 序号
#EXTINF:9.901, // 时间戳  跟浏览器跟新m3u8文件是有关系的
http://media.example.com/wifi/segment26.ts // 索引片段
#EXTINF:9.901f
http://media.example.com/wifi/segment27.ts
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts
// 动态列表  结束
 
 
// 静态列表 开始   静态列表比动态列表多了一个#EXT-X-PLAYLIST-TYPE:EVEN 其他的没什么区别
#EXTM3U // 标明m3u8文件的版本 很重要,版本一定要是播放器能够支持的对上
#EXT-X-VERSI0N:6 // 版本的声明  第6
#EXT-X-TARGETDURATION:10 // 默认视频的时长
#EXT-X-MEDIA-SEQUENCE:26 // 序号
#EXT-X-PLAYLIST-TYPE:EVEN
#EXTINF:9.901, // 时间戳  跟浏览器跟新m3u8文件是有关系的
http://media.example.com/wifi/segment26.ts // 索引片段
#EXTINF:9.901f
http://media.example.com/wifi/segment27.ts
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts
// 静态列表 结束
 
 
// 全量列表  开始
#EXTM3U // 标明m3u8文件的版本 很重要,版本一定要是播放器能够支持的对上
#EXT-X-VERSI0N:6 // 版本的声明  第6
#EXT-X-TARGETDURATION:10 // 默认视频的时长
#EXT-X-MEDIA-SEQUENCE:26 // 序号
#EXT-X-PLAYLIST-TYPE:VOD // 表明是点播
#EXTINF:9.901, // 时间戳  跟浏览器跟新m3u8文件是有关系的
http://media.example.com/wifi/segment26.ts // 索引片段
#EXTINF:9.901f
http://media.example.com/wifi/segment27.ts
#EXTINF:9.501,
#EXT-X-ENDLIST // 表明结束 不需要再去跟新m3u8文件
// 全量列表  结束

TS文件 

image.png



 解析ts文件之后会先找一个PAT包,PAT下面会有一个PMT包,PTM里面有TS包,PTM会告诉你哪些TS包是视频和音频,这些若干个TS包组成一个PES


rtmp协议


 image.png


http-flv协议


image.png

 


 总结

HLS:使用起来方便,但是有一定延迟(对延迟要求不高的时候)


RTMP:  延迟低,但是使用起来相对复杂(通常用再客户端的采集、低延迟)


HTTP-FLV: 结合了上两个的优点,但是视频格式是flv的(低延迟)


好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***