如何使用HLS为Google TV编码内容?

15

HLS 是 Google TV 3.2 的一个功能,我应该如何最佳编码我的内容以在 Google TV 上查看?

1个回答

26

如何在Google TV上实现HLS

Http Live Streaming(又称HLS)是一种流媒体内容(音频和视频)的标准,受到Google TV的支持。

HLS有许多很酷的功能。 其中主要功能包括:

  1. 自适应流 - 自动适应拥塞或带宽可用性。
  2. 对瞬态网络故障的弹性。
  3. 不需要为服务器、路由器或防火墙进行特殊配置。 它只是HTTP 1.1
  4. 易于被内容分发网络支持
  5. 支持直播流(更多内容请查看长文章)
  6. Chrome for Google TV支持HTML5视频标签。
  7. 可选AES加密(更多内容请查看长文章)。

在Google TV上,HLS是一种标准协议,您只需将URL放入任何媒体播放API(例如MediaPlayer、VideoView等)中即可使用。

HLS文件的组成部分

.m3u8 - 文本格式清单或播放列表文件(可能针对实时内容进行更新)- 变体播放列表通常指向以 .m3u8 结尾的个别清单

MIME 类型:vnd.apple.mpegURL 或 application/x-mpegURL

.ts - MPEG 2 传输流 - 通常为 5-10 秒的视频和音频数据。

MIME 类型:video/MP2T

创建 HLS 内容

创建 HLS 内容的最简单方法是使用苹果公司的工具、最新版本的 Sorenson Squeeze、Telestream 的 Episode 和许多云编码提供程序。您需要从多个比特率编码的内容开始。对于 Google TV,.m3u8 文件中的第一行是我们要开始的速度。最好选择1.2mbps 的流。

自 Google TV 固件版本 3.2 起,支持 HLS 协议版本 3。

您的内容URL必须在URL中包含字符“.m3u8”。如果URL不以“.m3u8”结尾,系统将在播放之前至少进行2次请求,并且播放列表的MIME类型必须是“application/vnd.apple.mpegurl”或“application/x-mpegurl”。
请注意- Google TV目前不支持编解码器切换-因此广告片段必须使用与主内容相同的编码。当然,开发人员可以暂停HLS播放,播放其他内容,然后再恢复HLS播放以绕过此限制。

编码

编码内容既是一门艺术,也是一门科学。最佳选择很大程度上取决于你的内容,物体相对背景移动的速度以及其他过多而无法在简单帖子中详细说明的项目。它还取决于你所针对的设备。以下设置旨在为Google TV进行优化。旧设备可能需要不同/额外的编码。请注意,某些商业用途的编码可能需要许可证和/或支付版税。

音频编码应在所有流中保持一致。HE-AACv1、HE-AACv2、AAC-LC高达48kHz、立体声音频都是可接受的选择。

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 实现仅在每个片段开头使用关键帧(对于 30 帧每秒的 10 秒片段,这将是每 300 帧)。苹果建议每 90 帧设置一个关键帧。(或每 3 秒以 30fps 的速度)注意 - 帧率 是一个复杂的主题。

** 改编自 https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices


很好的概述。媒体播放器在进行单个视频片段的HTTP请求时是否有一种指定要发送的标头的方法?我假设没有,因为以下方法仅适用于API级别14:http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>)。 - Steve
你可以通过在 Google TV 上使用反射来查找并使用该方法。 - Les Vogel - Google DevRel
天才!!它奏效了。非常感谢你。这值得一个+1。 :) - Steve
@LesVogel-GoogleDevRel:我有一个类似的问题,你能看一下我的问题吗?http://stackoverflow.com/questions/22317865/android-hls-audio-starting-before-video-onseek - Behnam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接