HLS是Google TV 3.2的一项功能,对我的内容进行编码以便在Google TV上观看的最佳方式是什么?
如何为 Google TV 实现 HLS
Http Live Streaming aka HLS 是 Google TV 支持的流媒体内容(音频和视频)流媒体标准。
HLS附带了许多很酷的功能。 主要是:
- 自适应流式处理 - 自动适应拥塞或带宽可用性。
- 对暂时性网络故障的复原能力。
- 您的服务器、路由器或防火墙没有特殊配置。这只是HTTP 1.1
- 由内容交付网络轻松支持
- 支持实时流式传输(更多内容见较长的文章中)
- Chrome for Google TV 中的 HTML5 视频标签支持。
- 可选的 AES 加密(更多内容在较长的文章中)。
在Google TV上,HLS是一个标准协议,您只需将URL放在任何媒体播放API中,例如MediaPlayer,VideoView等。 它只是工作。
HLS 文件的组件
.m3u8 - 基于文本的清单或播放列表文件(可能会针对实时内容进行更新) - 变体播放列表通常指向也以 .m3u8 结尾的单个清单MIME 类型:vnd.apple.mpegURL 或 application/x-mpegURL
.ts - MPEG 2 Transport Stream - 通常为5-10秒长的视频和音频数据。MIME类型:视频/MP2T
为 HLS 创建内容
创建HLS内容的最简单方法是使用Apple的工具,最新版本的Sorenson Squeeze,Telestream的Episode和许多云编码提供商。 您从以许多比特率编码的内容开始。 对于Google TV,.m3u8文件中的第一行是我们开始的速度。最好选择 1.2mbps 的流。
Google TV从 Google TV 固件版本 3.2 开始支持 HLS 协议版本 3。
您的内容网址中必须包含字符".m3u8"。 如果 URL 不以".m3u8"结尾,系统将在播放前发出至少 2 个请求,并且播放列表的 MIME 类型必须是"application/vnd.apple.mpegurl"或"application/x-mpegurl"之一。
注意 - Google TV 目前不支持编解码器切换,因此广告细分受众群必须使用与主要内容相同的编码。当然,开发人员可以暂停HLS播放,播放其他一些内容,然后再次恢复HLS播放以解决此问题。
编码
编码内容既是一门艺术,也是一门科学。 最佳选择在很大程度上取决于您的内容、对象在背景中移动的速度以及许多其他项目,这些项目太多而无法进入一个简单的帖子。 它还取决于您的目标设备。 以下设置旨在针对 Google TV 进行优化。 较旧的设备可能需要不同的/额外的编码。 请注意,某些类型的商业编码可能需要许可证和/或支付版税。
音频编码应在所有流中保持一致。 HE-AACv1,HE-AACv2,高达48kHz的AAC-LC,立体声音频都是可接受的选择。
16:9 Aspect Ratio**
Total Video
Dimensions Bitrate Bitrate Encoding
640x360 640 600 HiP, 4.1
640x360 1240 1200 HiP, 4.1
960x540 1840 1800 HiP, 4.1
1280x720 2540 2500 HiP, 4.1
1280x720 4540 4500 HiP, 4.1
1920x1080 6040 6000 HiP, 4.1
1920x1080 8196 8156 HiP, 4.1
4:3 Aspect Ratio
Total Video
Dimensions Bitrate Bitrate Encoding
640x480 640 600 HiP, 4.1
640x480 1240 1200 HiP, 4.1
960x720 1840 1800 HiP, 4.1
1280x960 2540 2500 HiP, 4.1
1280x960 4540 4500 HiP, 4.1
关键帧
当前的 Google TV 实现仅在每个片段的开头使用关键帧(对于 30fps 的 10 秒段,这将是每 300 帧)。 苹果的建议是每 90 帧有一个关键帧。 (或每 3 秒以 30fps 的速度运行) 注意 - 帧率是一个复杂的主题。
** 改编自 https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices