深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

2024 桐庐半程马拉松
00:00:00
时间
0.00
距离(公里)
--:--
配速
--
步频
--
心率 (bpm)
--
配速
步频
|
share-image
ESC

HLS入门

HLS入门

常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。

HLS (HTTP Live Streaming),是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

这里提到的M3U(8),以m3u8文件为例,其本质是一个Unicode编码的文本文件,其内容如下:

$ cat videos.m3u8 
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-MEDIA-SEQUENCE:255
#EXT-X-TARGETDURATION:15
#EXTINF:11.656, no desc
videos-255.ts
#EXTINF:11.587, no desc
videos-256.ts
#EXTINF:10.880, no desc
videos-257.ts
#EXTINF:11.291, no desc
videos-258.ts
#EXTINF:10.179, no desc
videos-259.ts
#EXTINF:11.185, no desc
videos-260.ts

这段文件中的信息大致含义如下表:

字段 含义
#EXTM3U m3u文件头,必须放在第一行
#EXT-X-VERSION 版本信息
#EXT-X-MEDIA-SEQUENCE 第一个TS分片的序列号
#EXT-X-TARGETDURATION 每个分片TS的最大的时长
#EXT-X-ALLOW-CACHE 是否允许cache
#EXT-X-ENDLIST m3u8文件结束符
#EXTINF extra info,分片TS的信息,如时长,带宽等

相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

例如,我当前的srs设置了hls切片,其保存的目录中会有如下文件:

[live]$ ls
videos-312.ts  videos-313.ts  videos-314.ts  videos-315.ts  videos-316.ts  videos-317.ts  videos-318.ts.tmp  videos.m3u8

这些文件是会不断的更新的,客户端就是通过读取videos.m3u8文件来获取索引进行播放,当获取的ts文件播放完了,hls就会更新索引并且删除当前目录过期的ts文件。

当我们通过curl去请求一个m3u8文件时,也会看到其索引信息

< HTTP/1.1 200 OK
< Server: marco/0.9
< Date: Thu, 10 Mar 2016 09:39:07 GMT
< Content-Type: application/vnd.apple.mpegurl
< Content-Length: 327
< Connection: keep-alive
< X-Source: C/200
< Access-Control-Allow-Origin: *
< Last-Modified: Thu, 10 Mar 2016 09:38:56 GMT
< X-Real-Ip: 103.251.128.30
< ETag: "56e140b0-147"
< Accept-Ranges: bytes
< Expires: Sat, 03 Mar 1990 23:33:33 GMT
< Cache-Control: no-cache, no-store, must-revalidate
< Pragma: no-cache
< Age: 0
< X-Cache: MISS|MISS from cun-hz-fdi-148, MISS|MISS from ntt-cn-hkg-006, MISS|MISS from ntt-us-lax-148
< X-Request-Id: c6512d750f05fa25419c330930dd0483
< Via: S.cmn-hz-fdi-084, T.1221.M.2, T.1221.M.1, V.cun-hz-fdi-148, T.1284.M.2, T.1284.M.1, V.ntt-cn-hkg-006, T.60148.M.2, T.60148.M.1, M.ntt-us-lax-148
< Strict-Transport-Security: max-age=604800
< 
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-MEDIA-SEQUENCE:333
#EXT-X-TARGETDURATION:15
#EXTINF:11.198, no desc
videos-333.ts
#EXTINF:11.989, no desc
videos-334.ts
#EXTINF:11.195, no desc
videos-335.ts
#EXTINF:11.176, no desc
videos-336.ts
#EXTINF:11.182, no desc
videos-337.ts
#EXTINF:11.998, no desc
videos-338.ts
* Connection #0 to host www.fangwenjun.com left intact
* Closing connection #0

我们可以通过vlc去播放这个们m3u8文件,iPhone或mac自带的浏览器safari可以直接播放hls文件

)

文章作者:阿文
文章链接: https://www.awen.me/post/3930591733.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2017-06-20 13:29 发布,已超过半年(3190天),请注意甄别内容是否已过期。

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
您的评论由 AI 智能审核,一般1分钟内会展示,若不展示请确认你的评论是否符合社区和法律规范
加载中...

选择联系方式

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️