HLS协议是如何实现多码率和多音轨的?
【摘要】 HLS是一种常见的流媒体协议。HLS是由m3u8索引文件和一系列流媒体分片文件构成。一个简单的m3u8索引文件如下:#EXTM3U#EXT-X-TARGETDURATION:10#EXTINF:9.009,http://media.example.com/first.ts#EXTINF:9.009,http://media.example.com/second.ts#EXTINF:3.003...
HLS是一种常见的流媒体协议。HLS是由m3u8索引文件和一系列流媒体分片文件构成。
一个简单的m3u8索引文件如下:
#EXTM3U #EXT-X-TARGETDURATION:10 #EXTINF:9.009, http://media.example.com/first.ts #EXTINF:9.009, http://media.example.com/second.ts #EXTINF:3.003, http://media.example.com/third.ts
播放器在获得了索引文件后,就可以按顺序下载ts分片文件并播放。但如果我们有多种不同码率的ts文件要提供呢?
这时我们就需要两级索引文件,一级索引文件中放置不同码率的m3u8索引文件位置,二级索引文件中再放置媒体分片。播放器下载一级索引文件后,可以根据网络状态和用户喜好选择一个码率进行下载和播放。一个简单的一级索引如下:
#EXTM3U #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English", \ DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en", \ URI="main/english-audio.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Deutsch", \ DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="de", \ URI="main/german-audio.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Commentary", \ DEFAULT=NO,AUTOSELECT=NO,LANGUAGE="en", \ URI="commentary/audio-only.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",AUDIO="aac" low/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",AUDIO="aac" mid/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",AUDIO="aac" hi/video-only.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5",AUDIO="aac" main/english-audio.m3u8
在这个索引文件中,除了有low/video-only.m3u8、mid/video-only.m3u8和hi/video-only.m3u8三路不同码率索引文件多信息,还有三路不同语种的音轨的索引文件的信息,根据这些信息,播放器就可以支持多码率和多音轨了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)