Video streaming 手动更改HLS带宽?

Video streaming 手动更改HLS带宽?,video-streaming,switch-statement,bandwidth,Video Streaming,Switch Statement,Bandwidth,在HLS中传输视频时,是否可以手动切换带宽?我指的是视频点播,不是现场直播 HLS: 它看起来像youtube切换质量。 还有一种商业产品:你可以,只要你控制播放器和播放器的输入逻辑,包括下载内容、确定正确的比特率流等。这对于许多设备和包括youtube在内的许多应用程序/播放器都是如此。 你不能在iOS上运行。对于iOS,您只能指定PreferredPeakBitRate(AVPlayerItem属性),并且不能(至少现在还不能)手动切换视频流 是的,你可以。但您将有一点清单文件解析 在HLS

在HLS中传输视频时,是否可以手动切换带宽?我指的是视频点播,不是现场直播

HLS:

它看起来像youtube切换质量。
还有一种商业产品:

你可以,只要你控制播放器和播放器的输入逻辑,包括下载内容、确定正确的比特率流等。这对于许多设备和包括youtube在内的许多应用程序/播放器都是如此。
你不能在iOS上运行。对于iOS,您只能指定PreferredPeakBitRate(AVPlayerItem属性),并且不能(至少现在还不能)手动切换视频流

是的,你可以。但您将有一点清单文件解析

在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
,即可获得相对于bandwith 409000的子清单。
如果主清单URL为
http://myserver.com/path/mastermanifest.m3u8
,子清单URL将为
http://myserver.com/path/sub-manifest-1.m3u8

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