HLS协议是如何实现多码率和多音轨的?

举报
拍手作歌 发表于 2020/03/08 20:18:17 2020/03/08
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。