手动更改HLS带宽?

时间:2014-02-26 11:09:16

标签: video-streaming switch-statement bandwidth

在HLS中流式传输视频时是否可以手动切换带宽?我的意思是视频点播,而不是直播视频。

HLS:http://en.wikipedia.org/wiki/HTTP_Live_Streaming

它看起来像youtube切换质量。 还有商业产品:http://www.longtailvideo.com/support/forums/jw-player/using-playlists/32487/hls-playlist/

2 个答案:

答案 0 :(得分:0)

您可以,只要您控制播放器和播放器的馈送逻辑,包括下载内容,确定正确的比特率流等。对于许多设备和包括youtube在内的许多应用/播放器都是如此。 你不能在iOS上。对于iOS,您只能指定PreferredPeakBitRate(AVPlayerItem属性),而不能(至少尚未)手动切换视频流。

答案 1 :(得分:0)

可以。但是您将需要一些清单文件解析。

在HLS世界中,一切都以清单文件开头:.m3u8

清单文件引用电影文件(切成小块)以及其他内容,例如字幕,音频等。

您通常会阅读一个主清单,其中引用了不同的子清单-每个视频编码质量一个-包含视频文件(.ts文件)

即使使用加密流(如Apple Fairplay DRM),清单也始终是清晰的原始文本文件。

根据主清单文件中的相对带宽,下面是一个不同视频变体的示例:

#EXT-X-STREAM-INF:BANDWIDTH=409000,CODECS="mp4a.40.2,avc1.640015",RESOLUTION=480x270,AUDIO="audio-aacl-64",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
sub-manifest-1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1409000,CODECS="mp4a.40.2,avc1.64001E",RESOLUTION=854x480,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
sub-manifest-2.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2469000,CODECS="mp4a.40.2,avc1.64001F",RESOLUTION=1280x720,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
sub-manifest-3.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3953000,CODECS="mp4a.40.2,avc1.640028",RESOLUTION=1920x1080,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
sub-manifest-4.m3u8

在此示例中,只需解析此文件以获取sub-manifest-1.m3u8即可获得相对于409000波段的子清单。
如果主清单URL是http://myserver.com/path/mastermanifest.m3u8,则子清单URL将是http://myserver.com/path/sub-manifest-1.m3u8

请注意,您可以直接为子清单文件提供绝对URL。在这种情况下,只需直接使用这些URL。