FFmpeg入门详解之107:m3u8整理2--HLS、RTMP、HTTP-FLV直播协议

HLS、RTMP、HTTP-FLV直播协议

HLS协议

HLS协议

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

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

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

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

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

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

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文件 

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

rtmp协议

http-flv协议

 总结

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

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

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

猜你喜欢

转载自blog.csdn.net/teachermei/article/details/127444780