HLS直播取流过程演示
一、HLS是什么(第一部分为转载)
转载地址如下:
https://langyastudio.blog.csdn.net/article/details/82012187
HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。 它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。
在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
HLS协议规定:视频的封装格式是TS。视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3。除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)。
HLS协议说明:
HLS的m3u8,是一个ts的列表,也就是告诉浏览器可以播放这些ts文件,譬如:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:430
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.800
news-430.ts
#EXTINF:10.120
news-431.ts
#EXT-X-DISCONTINUITY
#EXTINF:11.952
news-430.ts
#EXTINF:12.640
news-431.ts
#EXTINF:11.160
news-432.ts
#EXT-X-DISCONTINUITY
#EXTINF:11.751
news-430.ts
#EXTINF:2.040
news-431.ts
#EXT-X-ENDLIST
上述SDP信息中字段含义如下
EXTM3U:
每个M3U文件第一行必须是这个tag,提供标示作用
EXT-X-VERSION
用以标示协议版本。这里是3, 那么这里用的就是HLS协议第三个版本,此标签只能有0或1个,不写代表使用版本1
EXT-X-TARGETDURATION
所有切片的最大时长,有些Apple设备这个参数不正确会无法播放。
EXT-X-MEDIA-SEQUENCE
切片的开始序号。每一个切片都有唯一的序号,相邻之间序号+1。这个编号会继续增长,保证流的连续性。
EXTINF
ts 切片的实际时长。duration : 媒体持续时间
#EXTINF ,<br/> 1<br/> EXT-X-PLAYLIST-TYPE<br/> 类型,vod 表示点播。
EXT-X-ENDLIST
文件结束符号。表示不再向播放列表文件添加媒体文件。
二:HLS实际场景演示:
- 客户端向服务端发起GET请求:
可以看到上述请求为:https://cctvalih5c.v.myalicdn.com/live/cdrmcctv1_1md.m32u8,GET方式。
服务端response为:
具体回复见下图:
可以清楚的看到服务器回复的是一个ts文件列表。EXTINF为视频的实际时长,大约为10s中,比较稳定的长度。但是要注意的是,我们第一次播放,尽可能的选择列表中后面部分的ts文件,防止出现延时过大的问题。 - 通过获得的ts列表信息重新组装需要请求的url
具体url图片见下方:
此次请求服务端回复的就是客户端想要的直播流文件,客户端收到该response中的ts流,直接送播放库,或者dsp,进行视频的解封装,之后进行解码,即可播放。
HLS直播取流过程演示相关推荐
- 音视频类 ——【IP摄像头】 rtsp取流,你为什么取着取着就断了呢?
今天是2019年的中秋节,自己早上也吃了一个月饼,豆沙馅的,哈哈哈,生活要有点仪式感的嘛~~~~ 这里也和各位道友们说一句中秋节快乐哦,尤其是还在辛勤工作的道友们,别忘记和父母.亲友们联系哦~~ 截止 ...
- hls直播实现源码V2(h264,aac流输入,ffmpeg实现,MFC,VC环境,ts,m3u8)
周星驰来也! 像很多80,90后年轻人(老男人吧)一样,周星驰一直就是哥喜爱的电影演员之一,不仅喜欢星爷的人物形象,更是喜欢这种乐观向上的精神!(哥16年的QQ一直就是周星驰这个昵称). 转入主题吧: ...
- 使用ffmpeg+nginx将rtmp直播流转为hls直播流
ffmpeg的安装和nginx的安装在之前的博客中有详细的讲解. mac搭建nginx+rtmp直播流 1.配置nginx (1)配置rtmp直播 rtmp {server {listen 1935 ...
- android4.4 hls,Android VideoView直播电视流(HLS)
我试图开发电视流(HLS)的应用程序.使用下面的代码我测试了2.3.3,3.0和4.0.1版Android设备上的流,但遇到了几个问题. 在Android 2.3.3上,播放时间大于1分钟,然后停止播 ...
- python接入萤石云HLS直播流(海康威视摄像头4g连接条件下)
1.将插好4g流量卡海康威视摄像头添加到萤石云 下载注册并登陆萤石云,点击添加设备,输入摄像头后部的序列号以及验证码(已改过设备密码的填写密码). 获取HLS直播流地址 登陆萤石云开发平台(https ...
- php 直播流,ngnix开发(五)将rtmp直播流转换成hls直播流
1:修改/usr/local/nginx/conf/ngnix.conf,红色字体为添加内容. #rtmp直播配置 server { listen 1936; chunk_size 4000; app ...
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...
- 【APP逆向-入门级】某直播APP逆向过程
原文章逆向思路 重点:先向CSDN审核客服声明一下:本文仅仅是用于技术交流,甚至可以都算不上APP逆向,文章提到的截图已经全部打码.也没有提及是什么APP,希望审核人员可以通过本文章,谢谢. 这是一篇 ...
- 利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)
SRS(Simple-RTMP-Server)定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码,在Github上人气颇高.本文是由王学投稿的SRS搭建直播的学习笔记,由Liv ...
最新文章
- Mac vscode 调试打印有问题 输出缓冲区 “\r\n“
- 在Apache的POI XWPFRun对象分隔文本行
- 一些关于iText和iTextSharp的旧闻(some old news about iText and iTextSharp)
- 下方点击出项上方对应的插件_你的PPT里装了几个插件?我赌你不知道TA!
- OSPF的高级配置(连载1)
- Jenkins入门系列之——03PDF文档下载
- python3 Connection aborted.', RemoteDisconnected('Remote end closed connection without response'
- 预测分析算法的设计与实现_基于LD(编辑距离算法)的单词速记数据库分析设计与实现...
- A sample that using the completion port I/O model
- Proteus ISIS仿真软件中英文元件名称对照
- IP66 IP67 防护等级介绍
- FPS游戏方框透视原理分析及实现-C++语言
- CGAL license说明
- python 日本 地图 热力图_python 在百度地图上画热力图
- r语言爬虫和python爬虫哪个好-R语言爬虫常用方法总结(以案例说明)
- Java实现微信红包随机金额算法
- 这次经历给我埋下了学理财的种子
- 彻底解决Android 拍照 内存溢出 Out of Memory的问题
- 最长公共子序列问题-----题目
- Oracle 恢复dmp文件到数据库表中(超大DMP) 【数据系列 3】