我有一个使用HTTP Live Streaming传送视频内容的应用程序。我希望应用程序根据设备屏幕大小(4x3或16x9)检索适当的分辨率。我运行Apple的工具来创建主.m3u8播放列表文件(variantplaylistcreator)并得到以下内容:
#EXTM3U
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=248842,BANDWIDTH=394849,CODECS="mp4a.40.2, avc1.4d4028",RESOLUTION=480x360
4x3/lo/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=384278,BANDWIDTH=926092,CODECS="mp4a.40.2, avc1.4d4028",RESOLUTION=480x360
4x3/mid/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=787643,BANDWIDTH=985991,CODECS="mp4a.40.2, avc1.42801e",RESOLUTION=480x360
4x3/hi/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=249335,BANDWIDTH=392133,CODECS="mp4a.40.2, avc1.4d4028",RESOLUTION=640x360
16x9/lo/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=384399,BANDWIDTH=950686,CODECS="mp4a.40.2, avc1.4d4028",RESOLUTION=640x360
16x9/mid/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=780648,BANDWIDTH=987197,CODECS="mp4a.40.2, avc1.42801e",RESOLUTION=640x360
16x9/hi/prog_index.m3u8
这确实导致我的直播流正确地在视频质量之间切换,但似乎随机选择它是使用4x3还是16x9分辨率。
有没有办法让它自动选择正确的尺寸,还是我需要有多个播放列表文件并让设备请求特定的?例如,如果在iPad上,我是否需要检测它的屏幕是否具有4x3尺寸并请求仅具有480x360分辨率选项的4x3_playlist.m3u8?
2017年更新:
保持相同的宽高比仅是最新的HLS authoring指南中的建议:
1.33。所有视频变体应该具有相同的宽高比。
原始答案:
音频/视频流注意事项:
视频宽高比必须完全相同,但可以是不同的尺寸。
请改为选择基于User-Agent的播放列表。