您的位置:首页 > 理论基础 > 计算机网络

技术说明 TN2224 为 iPhone 和 iPad 创建和部署 HTTP Live 媒体流的最佳实践

2012-04-09 10:15 525 查看


技术说明 TN2224
为 iPhone 和 iPad 创建和部署 HTTP Live 媒体流的最佳实践

本技术说明讨论了为 iPhone 和 iPad 创建和部署 HTTP Live 媒体流的一些最佳实践。

介绍
推荐的HTTP Live媒体流编码设置

如何使用QuickTime以推荐的设置创建视频
对应用程序的要求

媒体分段

媒体流分段器
媒体文件分段器

多版本播放列表

多版本列表创建器
创建多版本播放列表时需要考虑的

媒体部署

HTML5 Video元素
Web服务器配置

媒体流的验证

媒体流验证器

参考
文档修订历史



介绍

HTTP Live媒体流允许您通过普通的Web服务器将实时的或者预先录制好的音频和视频发送到iPhone,iPad,以及其他设备,包括桌面计算机。播放媒体流需要设备运行iOS 3.0或以上版本,桌面计算机则要求安装QuickTime X以上版本。更多信息请参考HTTP
Live媒体流概述。

本技术说明提供了为iPhone和iPad应用程序以及iOS上的Safari创建HTTP Live媒体流时合适的编码设置,同时也提供了创建多版本播放列表的技巧,着重说明了部署媒体内容到Web服务器时一些需要特别考虑的方面,并讨论了如何验证媒体流的有效。

重要: 本文档经常更新。请将本页加入书签,并在您每次开始下一个项目前重新参考最新的推荐设置。

回到顶部




推荐的HTTP Live媒体流编码设置

图 1包含了创建HTTP Live媒体流推荐的编码设置。

重要:这些是推荐的设置,不是必须的。例如,如果您的视频有非常快速的动作(如运动项目),或者您比较担心带宽问题,您可能需要对视频进行额外的压缩以保证达到您需要的效果。在这种情况下,您可以使用推荐的设置作为一个初步设定,然后重新压缩直到您对最后的效果满意。

这些编码设置可以同时应用于实时的和预先录制(视频点播,VOD)的视频。推荐的设置是按照视频是在蜂窝网络还是Wi-Fi网络传输,是针对iPhone/iPod Touch还是iPad,视频内容的长宽比是4:3还是16:9来分类组织的。

支持如下音频和视频格式:

视频:H.264 Baseline Profile Level 3.0 (iPhone/iPod Touch),Main Profile Level 3.1 (iPad)

音频:HE-AAC或AAC-LC,最高48 kHz,立体声或

MP3(MPEG-1 Audio Layer 3),8 kHz到48 kHz,立体声

注意:iPhone 3G支持H.264 Baseline Profile Level 3.1。如果您的程序需要在更老的iPhone上运行,为兼容性考虑,您需要使用H.264 Baseline Profile 3.0。

图 1:推荐的HTTP Live媒体流编码设置




如何使用QuickTime以推荐的设置创建视频

关于如何使用QuickTime以推荐的编码设置导出视频文件,请查看技术说明TN2218,‘为Web压缩QuickTime视频’

回到顶部




对应用程序的要求

如果您是在iPhone和iPad应用程序中使用HTTP Live媒体流,则您必须遵守一些要求,具体细节请参考HTTP Live媒体流概述

回到顶部




媒体分段

HTTP Live媒体流要求媒体流或者文件被分成一系列相等的时间段。这通常是使用分段工具和创建播放列表的工具来完成的。

这种架构允许一个已经分好时间段的实时的媒体流能够通过更新播放列表快速转换为一个视频点播的流。

Apple提供了两个进行HTTP Live媒体流分段的命令行工具:

Media Stream Segmenter

Media File Segmenter

重要:这两个工具都经常更新。如果您是iOS开发者计划的会员,或者是ADC的Select会员和Premier会员,您可以从Apple开发者联盟的网站上下载其最新版本。您可以从http://connect.apple.com页面,点击“下载”链接,然后选择“QuickTime”,下拉到到“HTTP Live媒体流工具”,下载并安装“HTTP
Live 媒体流工具”。


媒体流分段器

您可以使用媒体流分段器(
mediastreamsegmenter
)来部署HTTP Live媒体流。

Mac OS X 10.6及以后的版本中内置了
mediastreamsegmenter
,其路径是
/usr/bin/mediastreamsegmenter
。(
/usr/bin
目录在Finder中是隐藏的,但是您可以使用实用工具文件夹中的终端应用程序来访问它。)

该工具从UDP网络连接或标准输入
stdin
接收MPEG-2 TS流,并把它分成一系列相等的小时间片段,然后创建一个包含各时间段引用的索引。索引文件和媒体段可以使用任意Web服务器架构来部署。
mediastreamsegmenter
可以同时支持实时流和视频点播(VOD)。

mediastreamsegmenter
工具支持不同的命令行参数(您可以通过在终端中输入
man mediastreamsegmenter
或者查看在线的man
page获得命令行参数的列表及其具体含义) 。如果您指定了如下参数,则该工具只会产生音频流:

-a | -audio-only


这会抽取基本的音频流(AAC/ADTS或者MP3)并写入到媒体文件中。例如,您可以对一个现有的媒体流(包含音频和视频)运行
mediastreamsegmenter
,从而得到一个只有音频的媒体流。

下面是一个怎样使用
mediastreamsegmenter
来捕获和创建未加密的实时流的例子:

mediastreamsegmenter -s 3 -D -f /Library/WebServer/Documents/stream 239.4.1.5:20103


选项
-s
定义了索引文件中媒体文件条目的数量。默认值是5。选项
-D
(在实时流中)表示不在索引文件中的媒体文件将在一定时间后被删除。选项
-f
指定了保存媒体文件和索引文件的文件夹。

在这个例子中,索引文件将包含3个文件条目。媒体文件将在过期后被删除。媒体文件和索引文件保存在
/Library/WebServer/Documents/stream
中。

回到顶部




媒体文件分段器

媒体文件分段器(
mediafilesegmenter
)是一个命令行工具,可以将媒体文件分段,从而部署成HTTP Live媒体流。
mediafilesegmenter
从指定的文件中获得媒体信息,如果需要的话复用成MPEG-2
TS流,然后切分成大概相等的时间片段。

注意:
mediafilesegmenter
是从文件中读取媒体内容。媒体流分段器是从网络连接或者标准输入
stdin
读取媒体信息。

mediafilesegmenter
同时还创建了包含各个媒体段引用的索引文件。索引文件和媒体文件可以在通用的Web服务器架构上以视频点播的形式部署。

mediafilesegmenter
支持很多命令行参数(您可以在终端中输入
man mediafilesegmenter
来获得命令行参数的列表及其含义)。

注意:该工具以前版本要求您指定
-O
或者
-optimize
选项以打开优化,否则默认是关闭的。在新版本中,优化默认是的,您现在必须指定
yes
或者
no
,如下所示:

[-O | -optimize [yes | no]]


回到顶部




多版本播放列表

多媒体流的展现是由播放列表决定的。播放列表是一系列媒体文件的列表,每一项都指向一段单独的连续的流。在HTTP Live媒体流中,服务器可能会为同一视频提供不同编码率的多个播放列表,这时,服务器必须提供一个多版本播放列表文件,从而提供不同的播放流以允许客户端根据带宽变化在不同的编码率之间动态切换。

关于多版本播放列表的更多信息,请参考HTTP Live媒体流和HTTP
Live媒体流协议规范。


多版本播放列表创建器

多版本播放列表创建器(
variantplaylistcreator
)是为
mediafilesegmenter
创建的HTTP Live媒体流时间段以m3u8格式创建多版本播放列表的命令行工具。iOS开发者计划的会员和ADC的Select或Premier会员可以作为媒体分段小节中描述的HTTP
Live媒体流工具包的一部分下载。

variantplaylistcreator
接收成对的URL和plist文件为参数生成多版本播放列表,URL和plist文件由
mediafilesegmenter
加上参数
-generate-variant-info
生成。您可以在终端中输入
man
variantplaylistcreator
获得所有的命令行参数列表及其含义。

回到顶部




创建多版本播放列表时需要考虑的

下面是创建您的多版本播放列表时需要着重考虑的几点:

选择播放的初始版本

多版本播放列表中的第一个条目将会在视频流开始时播放,并且作为决定那一个视频流更合适的一部分。其他视频流的顺序将不会考虑。

您应该为同一组视频流创建多个播放列表,但针对不同的目标网络,每一个都具有不同的入口条目。这将保证用户在视频流第一次播放时获得良好体验。

我们推荐您为蜂窝网络提供150Kbps的视频流。

我们推荐您为Wi-Fi多版本播放列表提供240Kbps或440Kbps的视频流。

请参考推荐的HTTP Live媒体流编码设置

尽可能的提供足够多的编码,从而为不同的连接速度提供质量最高的媒体流

例如,编码版本有150Kbps,350Kbps,550Kbps,900Kbps,1500Kbps。

尽可能的在多版本播放列表中和单独的.m3u8播放列表文件中使用相对路径

音频/视频流的注意事项

音频流都要绝对一致。

视频的长宽比必须一致,但是可以是不同的大小。

16:9的内容我们推荐大小为400x224,4:3的内容我们推荐大小为400x300(请参考推荐的HTTP Live媒体流编码设置)。

注意;在不同的VOD流文件间同步的一个简单方法就是将一个多版本播放表单的音频文件拷贝到所有其他的每个流。

回到顶部




媒体部署


HTML5 Video元素

我们推荐您使用HTML5的
video
元素来在iOS的Safari中显示视频。关于
video
元素的更多信息,请参考Safari关于HTML5音频和视频的指南和Safari
DOM扩展参考中
HTMLMediaElement
HTMLVideoElement
HTMLAudioElement
部分。

表单 1中的源代码例子展示了如何使用
video
元素在网页中显示HTTP
Live媒体流视频。

表单 1:HTML5 Video元素示例。
<video src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8">
This browser does not support HTML5 video.
</video>


请参考技术说明TN2262,‘为iPad准备您的Web内容’,该技术说明描述了在iOS设备上的Safari中和平台相关的注意事项,特别是为iPad。

回到顶部




Web服务器配置

HTTP Live媒体流的分发系统是基于HTTP发布媒体文件和索引文件的Web服务器或者Web缓存系统(更多信息请参考HTTP
Live媒体流概述)。不需要定制的服务器模块,只需要很少的服务器配置。

推荐的配置通常是为
.M3U8
文件和
.ts
指定MIME类型关联。

表格 1:
.M3U8
.ts
的MIME类型关联。
文件扩展名MIME类型
.M3U8
vnd.apple.mpegURL或者application/x-mpegURL
.ts
video/MP2T
为兼容性考虑,服务器也接受MIME类型是
audio/mpegURL
.m3u
文件。

调整
.M3U8
文件的存活时间属性(Time-to-Live)对于下载流的Web缓存机制来说可能是必须的,因为这些文件会被频繁的覆盖,每个请求下载的应该是最新版本。和您的服务提供商联系以获得推荐设置。

回到顶部




媒体流的验证


媒体流验证器

媒体流验证器(
mediastreamvalidator
)是用来验证HTTP Live媒体流和服务器的一个命令行工具。iOS开发者计划的会员和ADC的Select或Premier会员可以作为媒体分段中描述的HTTP
Live媒体流工具包的一部分下载。

这个工具模拟了一次HTTP Live媒体流的会话,验证索引文件和媒体段符合HTTP Live媒体流的规范,并进行多次检查以确保媒体流的可靠。如果发现了任何问题,将会显示一份详细的分析报告。

重要:您应该总是在您的媒体流上运行
mediastreamvalidator
工具来确保它符合HTTP Live媒体流规范。

下面是
mediastreamvalidator
工具的一个输出样例。

表单 2:验证工具的输出样例。
Validating http://devimages.apple.com/iphone/samples/bipbop/gear3/prog_index.m3u8 against iPhone OS 3.1.0

Average segment duration: 8.77 seconds
Average segment bitrate: 510.05 kbit/s
Average segment structural overhead: 96.37 kbit/s (18.89 %)

Video codec: avc1
Video resolution: 480x360 pixels
Video frame rate: 29.97 fps
Average video bitrate: 407.76 kbit/s
H.264 profile: Baseline
H.264 level: 2.1

Audio codec: aac
Audio sample rate: 22050 Hz
Average audio bitrate: 5.93 kbit/s


注意:
mediastreamvalidator
将首先显示您提供的媒体流列表,然后再是每个媒体流的结果。当然,
mediastreamvalidator
计算实际时间会需要几分钟。

对于多版本播放列表来说,在播放列表中指定的码率是否和实际测试的码率非常接近很重要。否则
mediastreamvalidator
将会产生警告。码率是在
EXT-X-STREAM INF
标签中的
BANDWIDTH
属性中指定的。

表单 3:设置了BANDWIDTH属性的多版本播放列表示例
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000 http://example.com/low.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000 http://example.com/mid.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000 http://example.com/hi.m3u8[/code] 
关于
BANDWIDTH
属性的更多信息请参考HTTP
Live媒体流协议规范。

回到顶部




参考

HTTP Live媒体流概述

IETF关于HTTP Live媒体流协议规范的互联网草案

技术说明TN2218, ‘为Web压缩QuickTime视频’

技术说明TN2262,‘为iPad准备Web内容’

Safari关于HTML5音频和视频的指南

Safari DOM扩展参考

回到顶部




文档修订历史

日期Notes
2010-04-19为iPad更新了推荐编码设置。
2010-03-19新建本文档,讨论了为iPhone和iPad创建和部署HTTP Live媒体流的最佳实践
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: