使用HTTP直播时如何自动检测设备尺寸?

leh*_*058 1 http-live-streaming

我有一个使用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
Run Code Online (Sandbox Code Playgroud)

这确实导致我的直播流正确地在视频质量之间切换,但似乎随机选择它是使用4x3还是16x9分辨率.

有没有办法让它自动选择正确的尺寸,还是我需要有多个播放列表文件并让设备请求特定的?例如,如果在iPad上,我是否需要检测它的屏幕是否具有4x3尺寸并请求仅具有480x360分辨率选项的4x3_playlist.m3u8?

aer*_*tal 5

2017年更新:

保持相同的宽高比仅是最新HLS创作指南中的建议:

1.33.所有视频变体应该具有相同的宽高比.

原始答案:


音频/视频流注意事项:

视频宽高比必须完全相同,但可以是不同的尺寸.

Apple技术说明TN2224 - 为iPhone和iPad创建和部署HTTP直播流媒体的最佳实践

请改为选择基于User-Agent的播放列表.