使用 HTTP Live Streaming 时如何自动检测设备尺寸?
How do you automatically detect device dimensions when using 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
这确实会导致我的直播流在视频质量之间正确切换,但它似乎 运行domly 选择它是使用 4x3 还是 16x9 分辨率。
有没有办法让它 select 自动具有正确的尺寸,或者我是否需要有多个播放列表文件并让设备请求一个特定的文件?例如,如果在 iPad 上,我是否需要检测它的屏幕尺寸为 4x3 并请求一个只有 480x360 分辨率选项的 4x3_playlist.m3u8?
2017 年更新:
保持相同的宽高比只是最新 HLS authoring 指南中的建议:
1.33. All video variants SHOULD have identical aspect ratios.
原回答:
Audio/Video Stream Considerations:
Video aspect ratio must be exactly
the same, but can be different dimensions.
Select 一个基于 User-Agent 的播放列表。
我有一个应用程序可以使用 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
这确实会导致我的直播流在视频质量之间正确切换,但它似乎 运行domly 选择它是使用 4x3 还是 16x9 分辨率。
有没有办法让它 select 自动具有正确的尺寸,或者我是否需要有多个播放列表文件并让设备请求一个特定的文件?例如,如果在 iPad 上,我是否需要检测它的屏幕尺寸为 4x3 并请求一个只有 480x360 分辨率选项的 4x3_playlist.m3u8?
2017 年更新:
保持相同的宽高比只是最新 HLS authoring 指南中的建议:
1.33. All video variants SHOULD have identical aspect ratios.
原回答:
Audio/Video Stream Considerations:
Video aspect ratio must be exactly the same, but can be different dimensions.
Select 一个基于 User-Agent 的播放列表。