HLS,AWS弹性编码器和自适应流媒体

时间:2016-10-28 11:32:06

标签: amazon-web-services video-streaming html5-video transcoding amazon-elastic-transcoder

我目前正致力于简单的基于VOD浏览器的服务,主要使用AWS技术。 HLS将用作流式协议,由Elastic Transcoder支持。

目前,源素材是720p(1280x720),这也是我想要显示给所有可以处理它的设备的分辨率。我希望这些视频适用于台式机,iPad和大多数智能手机。我正在使用ViBlast和videojs作为播放器。

我有以下问题:

  • m3u8播放列表允许指定多个流。每个分辨率应该是它自己的播放列表(不同比特率的不同源流),或者我可以将所有内容放在一个播放列表中(因此一个播放列表可以提供不同的分辨率和比特率)。
  • 似乎桌面和最新的平板电脑可以显示1280x720,我假设可以使用相同的播放列表。我只需要指定比特率。但是,手机的最佳分辨率是多少?似乎每个设备都有其他尺寸(在这里查看Android)。
  • 我应该为每个设备使用哪个比特率?我正在做一些研究,但似乎每篇文章对“最佳”设置有不同的建议,但从未解释他们如何获得这些数字。
  • 如果我使用包含不同分辨率的不同来源的播放列表,播放列表中的顺序是否重要?我已经读过应该首先列出最低比特率的地方,但是这也适用于分辨率吗?或者播放器是否自动选择最适合屏幕的流?

我正在寻找适合大多数设备的“足够好”的解决方案。

1 个答案:

答案 0 :(得分:2)

希望这有帮助。

  

m3u8播放列表允许指定多个流。每个都应该   分辨率获取它自己的播放列表(具有不同的源流)   不同的比特率),或者我可以将所有内容放在一个播放列表中(所以一个   播放列表可以提供不同的分辨率和比特率。)

作为参考,这里是Apple关于该主题的'技术说明TN2224',这是下面信息的良好指导。 https://developer.apple.com/library/content/technotes/tn2224/_index.html

简答:每个决议都应该有自己的变体播放列表。

通常,有一个主播放列表,其中引用了变体播放列表(也称为演绎)。变体播放列表是同一视频的不同质量流,其比特率和分辨率各不相同。但每个变体只包含一个比特率级别。示例主播放列表:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4648000,RESOLUTION=3840x2160
4648k/stream.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2670000,RESOLUTION=1920x1080
2670k/stream.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1823000,RESOLUTION=1280x720
1823k/stream.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=975000,RESOLUTION=854x480
975k/stream.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=491000,RESOLUTION=640x360
491k/stream.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=186000,RESOLUTION=256x144
186k/stream.m3u8

“使用BANDWIDTH属性在”EXT-X-STREAM-INF标签中指定比特率“(TN2224)。每个下行带宽(比特率)级别都有相应的较低分辨率,因为可用的数据较少,通常可以在较小的移动屏幕上观看。

  

我认为,似乎台式机和最新的平板电脑可以显示1280x720   可以使用相同的播放列表。我只需要指定比特率。   但是,手机的最佳分辨率是多少?似乎每一个   设备有其他尺寸(在这里看Android)。

分辨率和比特率一起使用。以186K比特率(非常低)编码的流没有足够的数据来填充1280x720屏幕。但是,蜂窝网络上的移动设备可能无法下载高比特率。因此,您需要多种变体选项,每种选项都具有适当的分辨率和比特率。

不要专注于特定设备,否则你永远不会完成。使用常见的16:9宽高比构建比特率/分辨率变体的阶梯。例如。 1280x720,1024x576,640x360,......

但有几件事需要考虑。比特率,你已经在考虑的分辨率。但这些视频是否使用H.264编码?如果是这样,您应该考虑配置文件级别。这是一篇关于这个主题的好文章:http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=94216&PageNum=1

enter image description here

  

我应该为每个设备使用哪个比特率?我正在做一些研究,   但似乎每篇文章都有不同的建议   “最佳”设置,但从未解释他们如何获得这些数字。

与解决方案相同的答案。不要专注于实际设备。构建比特率/分辨率变体的阶梯,允许设备根据可用带宽,电池寿命,处理能力等选择最合适的。

  

如果我使用包含不同来源的播放列表   决议,播放列表中的顺序是否重要?我读了   应该首先列出最低比特率的地方,但这样做   也适用于决议?或者玩家自动选择   与屏幕最匹配的流?

每个发布商或制造商都可能以不同方式构建其播放器但这是Apple在TN2224中推荐的。

“第一比特率应该是大多数客户可以维持的比特率 主播放列表中的第一个条目将在流的启动时播放,并用作测试的一部分以确定哪个流最合适。其他流的顺序无关紧要。因此,播放列表中的第一个比特率应该是大多数客户可以维持的比特率。“

希望有所帮助。

伊恩