HLS、AWS Elastic Encoder 和自适应流
HLS, AWS Elastic Encoder, and adaptive streaming
我目前正在开发基于浏览器的简单 VOD 服务,主要使用 AWS 技术。 HLS将被用作Elastic Transcoder支持的流媒体协议。
目前,源素材是 720p (1280x720),这也是我想向所有可以处理它的设备显示的分辨率。我希望这些视频可以在台式机、iPad 和大多数智能手机上播放。作为播放器,我正在使用 ViBlast 和 videojs。
我有以下问题:
- m3u8 播放列表允许指定多个流。如果每个分辨率都有自己的播放列表(具有不同比特率的不同源流),还是我可以将所有内容放在一个播放列表中(这样一个播放列表可以提供不同的分辨率和比特率)。
- 台式机和最新的平板电脑似乎可以显示 1280x720,我假设可以使用相同的播放列表。我只需要指定比特率。然而,手机的最佳分辨率是多少?似乎每个设备都有其他尺寸(查看 Android 此处)。
- 我应该为每台设备使用哪种比特率?我正在做一些研究,但似乎每篇文章对 "best" 设置都有不同的建议,但从未解释他们如何获得这些数字。
- 如果我使用的播放列表包含不同分辨率的不同来源,播放列表中的顺序是否重要?我在某处读到应该首先列出最低比特率,但这是否也适用于分辨率?还是播放器会自动选择与屏幕最匹配的流?
我正在寻找适合大多数设备的 "good enough" 解决方案。
希望这对您有所帮助。
the m3u8 playlist allows to specify multiple streams. Should each
resolution get's it own playlist (with different source-streams on
different bitrates), or can I put everything in one playlist (so one
playlist can serve different resolutions and bitrates).
供参考,这里是 Apple 关于此主题的 'Technical Note 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
"The bitrates are specified in the EXT-X-STREAM-INF tag using the BANDWIDTH attribute" (TN2224)。并且每个下降的带宽(比特率)级别都有相应的较低分辨率,因为可用数据较少并且通常希望在较小的移动屏幕上查看。
Seems desktops and most recent tablets can display 1280x720, I assume
the same playlist can be used. I just need to specify bitrates.
However, what is the best resolution for mobile phones? Seems every
device has other dimensions (looking at Android here).
分辨率和比特率相辅相成。使用 186K 比特率(非常低)编码的流没有足够的数据来填充 1280x720 屏幕。但是蜂窝网络上的移动设备可能无法下载高比特率。因此,您需要多个可用的变体选项,每个变体选项都具有适当的分辨率和比特率。
不要专注于特定设备,否则您将永远无法完成。使用常见的 16:9 宽高比构建 bitrate/resolution 变体的阶梯。例如。 1280x720、1024x576、640x360、...
虽然有几件事需要考虑。您已经在考虑的比特率、分辨率。但是这些视频是使用 H.264 编码的吗?如果是这样,您应该考虑配置文件级别。这是一篇关于该主题的好文章:http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=94216&PageNum=1.
Which bitrate should I use for each device? I'm doing some research,
but it seems every article has a different recommendation for the
"best" setting, but never explain how they got those numbers.
与决议相同的答案。不要专注于实际设备。构建 bitrate/resolution 变体的阶梯,允许设备根据可用带宽、电池寿命、处理能力等 select 最合适的
If I use a playlist which contains different sources with different
resolutions, does the order in the playlist matter? I've read
somewhere that lowest bitrates should be listed first, but does this
also apply to resolutions? Or does the player automatically picks the
stream which best matches the screen?
每个发行商或制造商构建播放器的方式可能不同。但这就是Apple在TN2224中推荐的。
"第一个比特率应该是大多数客户端可以承受的比特率
主播放列表中的第一个条目将在流的启动时播放,并用作测试的一部分以确定哪个流最合适。其他流的顺序无关紧要。因此,播放列表中的第一个码率应该是大多数客户端可以承受的码率。"
希望对您有所帮助。
伊恩
我目前正在开发基于浏览器的简单 VOD 服务,主要使用 AWS 技术。 HLS将被用作Elastic Transcoder支持的流媒体协议。
目前,源素材是 720p (1280x720),这也是我想向所有可以处理它的设备显示的分辨率。我希望这些视频可以在台式机、iPad 和大多数智能手机上播放。作为播放器,我正在使用 ViBlast 和 videojs。
我有以下问题:
- m3u8 播放列表允许指定多个流。如果每个分辨率都有自己的播放列表(具有不同比特率的不同源流),还是我可以将所有内容放在一个播放列表中(这样一个播放列表可以提供不同的分辨率和比特率)。
- 台式机和最新的平板电脑似乎可以显示 1280x720,我假设可以使用相同的播放列表。我只需要指定比特率。然而,手机的最佳分辨率是多少?似乎每个设备都有其他尺寸(查看 Android 此处)。
- 我应该为每台设备使用哪种比特率?我正在做一些研究,但似乎每篇文章对 "best" 设置都有不同的建议,但从未解释他们如何获得这些数字。
- 如果我使用的播放列表包含不同分辨率的不同来源,播放列表中的顺序是否重要?我在某处读到应该首先列出最低比特率,但这是否也适用于分辨率?还是播放器会自动选择与屏幕最匹配的流?
我正在寻找适合大多数设备的 "good enough" 解决方案。
希望这对您有所帮助。
the m3u8 playlist allows to specify multiple streams. Should each resolution get's it own playlist (with different source-streams on different bitrates), or can I put everything in one playlist (so one playlist can serve different resolutions and bitrates).
供参考,这里是 Apple 关于此主题的 'Technical Note 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
"The bitrates are specified in the EXT-X-STREAM-INF tag using the BANDWIDTH attribute" (TN2224)。并且每个下降的带宽(比特率)级别都有相应的较低分辨率,因为可用数据较少并且通常希望在较小的移动屏幕上查看。
Seems desktops and most recent tablets can display 1280x720, I assume the same playlist can be used. I just need to specify bitrates. However, what is the best resolution for mobile phones? Seems every device has other dimensions (looking at Android here).
分辨率和比特率相辅相成。使用 186K 比特率(非常低)编码的流没有足够的数据来填充 1280x720 屏幕。但是蜂窝网络上的移动设备可能无法下载高比特率。因此,您需要多个可用的变体选项,每个变体选项都具有适当的分辨率和比特率。
不要专注于特定设备,否则您将永远无法完成。使用常见的 16:9 宽高比构建 bitrate/resolution 变体的阶梯。例如。 1280x720、1024x576、640x360、...
虽然有几件事需要考虑。您已经在考虑的比特率、分辨率。但是这些视频是使用 H.264 编码的吗?如果是这样,您应该考虑配置文件级别。这是一篇关于该主题的好文章:http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=94216&PageNum=1.
Which bitrate should I use for each device? I'm doing some research, but it seems every article has a different recommendation for the "best" setting, but never explain how they got those numbers.
与决议相同的答案。不要专注于实际设备。构建 bitrate/resolution 变体的阶梯,允许设备根据可用带宽、电池寿命、处理能力等 select 最合适的
If I use a playlist which contains different sources with different resolutions, does the order in the playlist matter? I've read somewhere that lowest bitrates should be listed first, but does this also apply to resolutions? Or does the player automatically picks the stream which best matches the screen?
每个发行商或制造商构建播放器的方式可能不同。但这就是Apple在TN2224中推荐的。
"第一个比特率应该是大多数客户端可以承受的比特率 主播放列表中的第一个条目将在流的启动时播放,并用作测试的一部分以确定哪个流最合适。其他流的顺序无关紧要。因此,播放列表中的第一个码率应该是大多数客户端可以承受的码率。"
希望对您有所帮助。
伊恩