-->
获得免费通行证,加入我们的流媒体连接-2月19日至22日; 现在注册!

如何为自适应流制作

文章特色图片

本文发表于2012年2月/ 3月号 流媒体 杂志, 一年一度的 流媒体行业资料手册.

自适应流媒体指的是对直播或点播流的多个实例进行编码,并在这些流中自适应地切换,以向每个观众提供最佳体验的技术, 考虑到传输带宽和播放马力. 自适应流的生产涉及两个离散的分析:如何选择最佳的流数量及其配置,以及如何自定义各种流的编码参数以在每种自适应流技术中运行. 本文将探讨这两种分析.

让我们先简要介绍一下自适应流媒体技术的工作原理.

技术概述

有两种自适应流技术:基于服务器的和无服务器的(或HTTP). 最突出的基于服务器的技术是 Adobe的 基于rtmp的动态流, 当流播放时,哪个维护播放器和服务器之间的持久连接. 播放器监视诸如播放缓冲区和CPU利用率之类的启发式信息,并决定何时需要更改流, 服务器根据需要提供备用流. 在为基于rtmp的动态流编码时, 您可以创建源文件的多个实例,其格式与将单个文件交付给同一播放器的格式相同, 通常是MP4或F4V文件.

自适应表1与此形成鲜明对比的是, 与server-less, 或HTTP, 技术, 没有服务器来交付可选流, 玩家既要监视回放启发式,又要检索适当的流. 要实现这一点,需要HTTP技术,例如 苹果的 HTTP直播(HLS); 微软的 光滑的流, 以及Adobe基于http的动态流媒体, 需要两种类型的文件:一个包含描述替代流的身份和位置的元数据的清单文件和专门编码的内容文件,以便播放器可以在播放期间检索文件的离散块. 这些技术的两种文件类型的文件扩展名见 表1.

如你所见, MPEG破折号, 新采用的自适应流媒体标准, 使用相同的文件二分法, 包含在媒体表示文件中的内容, 和基于xml的元数据在Media Presentation Description文件中.

相应的, 在为基于rtmp的自适应流制作时, 生成的多个文件与为单文件播放生成的文件相同. 使用HTTP技术, 您以特定技术所需的特殊格式生成清单文件和内容文件. 在本文末尾,我列出了每种技术的参考资料列表.

通用的问题

既然我们了解了地形, 让我们来探讨一些通用问题,比如选择流的数量及其配置. 虽然这些决定都不是精确的科学, 在做这些决定时,有一些明确的因素是你应该考虑的.

有多少流??

在高水平上, 选择流的数量时, 您应该选择一个流计数,使您能够有效地将您的视频传递给最相关的观众. 正确的数字取决于你所传递的内容的性质及其目的. 为了给这个模糊的定义添加结构,请考虑以下因素:

  • 确定要分配的最大和最小分辨率. 如果您计划为高级用户分发1080p流, 以及为iPhone观众提供的416x234流媒体, 您需要许多流来有效地服务于相关的目标范围. 另一方面, 如果所有流都是640x480, 这在SD内容中很常见, 三条小溪就够了. 
  • 确定使用是面向娱乐的(通常为4-11个流)还是教育或公司的(通常为3-5个流). 如果你销售的是订阅或按次付费的内容,那就大错特错了. 
  • 考虑一下你网站上的窗口大小. 如果你的网站只提供一个浏览窗口,三到四个流就足够了. 然而, 如果您要以多种窗口大小显示可选流, 考虑每种窗口大小至少有一个流.

配置你的流

一旦确定了流计数,就该配置流了. 当Adobe, 苹果, 和微软都针对各自的技术发布了一些关于流配置的指导, 苹果为iOS设备的流媒体提供了最具体的指导 技术说明TN2224:为iPhone和iPad创建和部署HTTP流媒体的最佳实践. 在为HLS配置流时,本文档应该是您的第一站.

自适应图1当配置目标流在其他环境中播放时, 考虑因素包括:

  • 对于显示视频的每个窗口大小,您应该至少有一个分辨率.
  • 如果你在一个窗口大小中显示所有流, 检查是否可以在该分辨率下生成所有流, 改变低质量流的数据速率和帧速率, 而不是分辨率. 只要分辨率是640x480或更低,这似乎效果最好.
  • 考虑mod 16,但不要过于教条. 为了解释,H.264编解码器在编码时将每帧分成16x16块, 分辨率平均分成16x16块, 或mod 16分辨率, 最有效地编码. 一些生产商将只使用mod 16分辨率, 但苹果显然不在其中, 由于416x234和640x360都不是mod 16分辨率(参见 图1). 所以尽可能使用mod 16, 但如果你选择了一个不合规的解决方案,也不用担心, 特别是在较大的分辨率下.

选择数据速率

在为自适应流配置数据速率时, choose data rates that will make a discernable difference in quality between the streams; otherwise, 切换流没有意义. 这意味着在较小的分辨率下数据速率差异较小,而在较高的分辨率下差异较大.

如图1所示,苹果将此模式用于其推荐的流. 在低端,第一和第二流之间有90Kbps的差异. 在高端,最高质量的流和倒数第二的流之间有2Mbps的差异.

对流进行编码

配置完流之后,就该关注编码了. 从编解码器的角度来看,对于某些(但不是全部)自适应技术,您有多种选择. 例如,苹果的HLS是H.但微软的平滑流媒体与VC1和H.而Adobe的动态流媒体可以使用VP6或H . 264.264.

与VP6或VC1相比,H.264在相同的数据速率下提供更好的质量, 并且可以通过GPU在回放过程中加速, 在低功耗设备上实现更流畅的播放. H.264也可以在大多数移动平台上播放,所以你可以为多个目标编码一组流. 除非您有非常好的理由使用VC1或VP6,否则我推荐使用H.264在所有应用程序.

在大多数情况下,H.推荐用于自适应流的264特定编码参数类似于用于生成单文件播放的文件的编码参数. 如果您仅为计算机播放而制作,我推荐启用了CABAC的高规格. 如果您正在编码一组流,以便同时传送到计算机和移动设备, 您应该针对最小公分母目标设备进行编码, 这意味着遵循图1中与概要文件相关的建议.

不管所选的编解码器是什么, 您需要自定义编码,以便文件能够在所选的自适应流媒体技术中顺利运行. 以下是你需要考虑的问题.

比特率控制:CBR vs. 研究设计

通常来说, 当流尽可能少地切换时,自适应流技术工作得最好. 确定何时需要流开关, 所有自适应流媒体技术都监视回放缓冲区,以确定在本地存储多少视频用于回放. 当缓冲区低于某个阈值时,玩家会切换到较低的数据速率流.

当使用恒定比特率(CBR)编码对文件进行编码时,此模式工作得最好, 因为所有相关的文件段大小大致相同, 如何促进平稳和一致的交付. 使用可变比特率(研究设计)编码, 难以编码的序列以更高的数据速率产生, 在转移这些序列的时候, 缓冲区可能低于相关阈值并触发流切换. 在这种情况下, 流开关与实际吞吐量问题无关,而是与编码技术有关.

出于这个原因, 大多数权威建议使用CBR编码, 或研究设计限制在最高平均数据速率的110%. 然而,CBR的问题在于,它会在难以压缩的序列中产生质量下降的结果. 出于这个原因,许多生产者在编码自适应流时使用约束研究设计.

使用研究设计编码的潜在负面影响取决于许多因素, 包括您的流打包在一起的紧密程度以及在研究设计编码期间使用的约束级别. 最保守的方法是CBR, 这是第一次实施, 我就从这里开始. 然而, 如果质量有问题, 我会尝试将研究设计限制在目标的150%-200%,看看在测试期间是否会产生太多的流开关.

一致的关键帧间隔

正如我们讨论过的, 所有自适应流媒体技术都涉及到一个播放器接收来自不同流的部分内容. 和所有流文件一样, 每个部分的播放必须从关键帧开始,因为这是唯一包含完整帧的帧类型. 因此,每一部分内容都必须以关键帧开始. 要做到这一点, 您需要在自适应集中的所有文件之间保持一致的关键帧间隔, 这意味着在你的编码工具中禁用场景变化检测.

自适应图2使用将分布式文件划分为单独片段的技术, 比如苹果的HLS和微软的光滑的流, 你还需要一个关键帧在每个片段的开始. 要做到这一点,你需要你的关键帧间隔平均划分到你的片段持续时间. 我所见过的最完美的界面之一就是Sorenson Squeeze 7, 如图所示 图2. 如你所见, you set the keyframe interval and fragment duration for all files at one time; you can customize other encoding parameters by clicking the Edit button associated with each stream on the right.

与关键帧相关的另一点是,所有关键帧都应该是IDR帧, 这意味着关键帧之后的帧不会参考关键帧之前的帧. 此选项并非在所有编码工具上都可用, 但是作为任何流编码的一般规则, 所有关键帧都应该是IDR帧.

一致的音频参数

最后要考虑的编码与音频参数有关. 如果从图1中的总比特率中减去视频比特率, 你会看到苹果推荐所有流的音频为40Kbps. 大多数权威机构都建议这样做, 警告,当在具有不同音频参数的流之间切换时,可能会出现可听到的弹出. 明显的缺点是音频质量不能与视频质量同步, 在音乐会和类似的活动中,音频质量是整体体验的重要组成部分.

再一次。, 现场CBR和研究设计, 这是另一个普遍的规则,似乎违反比遵守更受尊重. 例如, 自适应流媒体预设在Adobe媒体编码器规模与视频数据速率, 该领域的许多生产商也遵循同样的做法.

如果音频不是游戏体验的重要组成部分, 比如在培训或类似的演讲视频中, 采取安全的路线,使用一组保守的音频参数. 音乐会, 芭蕾舞剧, 以及其他类似的事件, 使用两组音频参数, 一个单一, 一个音响, 它们具有相同的采样率和位深度. 例如, 你的低质量流可能是64Kbps/ 44khz /16位单声道, 而更高质量的流可能是128Kbps/ 44khz /16位立体声. 然后测试以确定当流切换发生时是否听到可听到的爆裂声.

其他的考虑

在生成流时要考虑的另一个关键因素是您是否将使用transmuxing技术,例如 Wowza Media Server、Adobe Flash Media Server、微软 IIS或 职业 螺旋服务器. 短暂的, 传输技术以一种格式输入一组流, 在不同的容器中动态地重新包装内容文件, 并为其他格式创建必要的清单文件. 因此,您可以输入一组为RTMP播放而生成的流, 服务器可以将文件传输到iOS设备, Silverlight, 或者其他目标. 如果你用的是变形技术, 请与服务器管理员联系,以确定提交流的最佳格式.

对于现场活动, 你也可以考虑像Wowza Transcoder AddOn这样的转码产品, 哪一个可以接受单个传入流,并将其重新编码(或转码)为多个不同格式的低质量流,用于不同的播放技术. 再一次。, 如果你将使用Transcoder AddOn之类的产品, 请咨询您的服务器管理员以获得最佳输入格式.

百家乐软件

RTMP闪光

Kapoor阿. 实时动态流媒体与Flash媒体服务器3.5.” Adobe.com.
Bouthillier,拉里. 如何使用Flash媒体服务器实现动态流媒体.” StreamingMedia.com.
教程:按需HTTP动态流.” Adobe.com.
基于HTTP的Flash动态流编码指南.” Akamai.com.

HTTP直播

苹果技术说明: 为iPhone和iPad创建和部署HTTP实时流媒体的最佳实践.” 苹果.com.
苹果技术说明: HTTP直播概述.” 苹果.com.
苹果技术说明: “使用HTTP直播.” 苹果.com.

光滑的流

Akamai HD for 微软 Silverlight按需编码推荐.” Akamai.com.
Zambelli,亚历克斯. IIS平滑流技术概述.” 微软.com.
Zambelli,亚历克斯. 研讨会: “代码转换方法论101.” StreamingMedia.com.

HTTP闪光

基于HTTP的Flash动态流编码指南.” Akamai.com.
Levkov,马克西姆. Flash平台上HTTP动态流媒体的视频编码和转码建议.” Adobe.com.

流媒体覆盖
免费的
合资格订户
现在就订阅 最新一期 过去的问题
相关文章

Live的到来.0

实时视频工作流程的进步为IP获取和路由打开了大门, 让我们走向99.9999%可靠的直播

提及的公司及供应商