从很多方面来讲,HTTP动态流技术(在文章中以下部分简称HDS)是Adobe公司对苹果公司的Adaptive Bitrate Streaming技术以及微软公司的IIS Smooth Streaming技术的一个回应。这三项技术的共同之处在于它们通过HTTP网络连接传递媒体文件以及适应于用户当前带宽的媒体文件传输的能力。相对于连入以太网的个人电脑而言,Android设备的有效带宽就显得尤为不足了。(这项技术的)最终结果是,在各种设备上实现媒体文件的流畅回放,不管这些设备是智能手机还是台式计算机。
要更好地了解HDS是如何工作的,撇开技术上的内容,只考虑下述的虚拟场景:
ABC Video Services刚刚完成了一个一分钟短片的制作,它的老板Pete灵机一动,并没有使用录像带来承载其录音内容。Pete说:“我们何不放弃录像带,而是通过一种更为有效的方式把视频传输给用户呢?”
工作室的人对这个激进的想法都感到有些惊讶,因为每个人都知道,“这是我们一直在使用的方法。”Pete并没有接受这个论据,而是给出了下面一个假设:
“为什么不把录像内容切成十个六秒钟的小片段,然后顺序的把它们传输到设备中去播放?”
有点保守主义的Sam觉得这真是一个愚蠢的想法,但是Pete是他的老板,因此他并不想这么去说。他考虑了一会,想到了一个他认为可以把这个想法从根本上扼杀掉的反驳想法。他说:“Pete,这听起来很有趣,但不合实际啊。(如果按照你的想法,)客户将会拿到一堆看起来一样的录音条。我们如何能确保客户不会弄乱这些录音条的顺序?”
“这很简单”,Pete说,“我们可以给客户一个告诉他们应该在什么时间播放哪一个录音条的文件。我们所要做的就是把这个文件和录音条打包到一起传输给客户。客户所需要做的就是打开并阅读说明文件,然后一切都按计划进行了。”
这并不是HDS的产生过程,但它捕获了这项技术的本质。
HDS和Pete的想法又有什么关联呢?HDS可能就是由你伴随Flash Media Server (FMS)一同安装的Apache模块而来的。在这种情况下,FMS扮演着打包机的角色,制造内容片断,由Apache通过HTTP传输到Flash兼容的视频播放器。为了解决Sam所提出的反对意见,与F4M扩展一起,另外的一个清单文件也是通过同样的一个过程创建出来的。从根本上说,所需视频文件首先使用F4F扩展软件切割成若干片段,作为片段文件。清单文件中包含了视频的一些基本信息,包括每一个片段文件的位置以及其中最为重要的信息——这些片段传输到用户设备上的顺序。
如果这一切都是通过HTTP连接流动的,那么FMS 4.5是如何纳入这个过程的呢?Flash Media Server 4.5包含了两种类型的实时组件:live和Just-In-Time (JIT)。不管在哪种情况下,清单文件和F4F文件都能按照需求创建,并通过HTTP传输给客户来实现回放。例如,如果Sam有一部智能手机,想观看他刚编辑过的视频,他要做的就是打开他的手机上的浏览器,链接到包含这段视频的SWF文件的网页。SWF文件打开时,只需要F4M清单文件来启动视频片段有序的向设备浏览器的传输。
作为一个反对者,Sam马上就看到了这个方案存在的问题。“朋友们,我用的是3G网络,网速很慢;我没有你们所使用的以太网连接的带宽。这将会是一个很糟糕的体验。”
幸运的是,还有Pete。Pete说:“Sam,别激动。这不是问题。这个清单文件会把播放列表附在SWF文件上,它可以检测你的连接状况,如果你的带宽较低,在清单文件中查找该带宽下的最佳视频文件。我们称这个为‘多比特率流媒体’,你会喜欢上它的。”
既然这样说了,是时候让Sam喜欢上它了。
虽然HDS的术语听起来是相当的“专业”,HDS应用程序的创建却是非常简单的:
View larger (+)
你可能会感觉很疑惑:“到底发生了什么?”你首先要知道的一件事情是,文件路径是关键。F4M扩展插件会告知FMS你需要这个媒体流的清单文件。hds-vod镜像通过寻址服务器上需打包文件路径启动Just-In-Time (JIT)程序。Flash Player打开文件包,获取清单中所需媒体流信息,然后根据用户需求开始播放清单中相应视频文件片段。
如果你已经做完了这一系列教程的学习,你可能还会注意到,(在这个过程中,)HTTP协议取代了RTMP协议的使用。如果你忘记了添加”http://”,播放器就会报错,“对不起,找不到您所需要的文件”。
除了使用RTMP而不是HTTP之外,HDS进程和这一系列中以往的任何进程都存在着很大的不同。Flash Player需要在清单文件中包含大量的逻辑语言来解析清单文件,然后有序地播放视频片段。Flash Media Playback,Strobe以及OSMF都有这样的功能并入其中,使得它们更加适用于HDS环境。它们可以将随选媒体流输送到Android设备,Flash Player 10及更新版本,以及AIR应用程序。对iOS设备的要求会有些许的不同,这个将会在以后的介绍中提及。
这一系列教程的作者之一非常热衷于向他的学生说:“试图在你的移动设备上播放一个在你的电脑上播放的高清视频,无异于试图在一只蠕虫体内拖动一个西瓜。”随着移动设备的不断升级,你可不敢保证你编码的在高带宽环境下播放的视频文件只能在那样的环境中播放。移动设备网络是有带宽限制的,相信你们中很多人都有过在支持Flash的设备上播放视频,体验“在一只蠕虫体内移动一个西瓜”的经历吧。
在同一部视频中编码不同的比特速率的解决方法。在这个例子中,会使用Adobe Flash Media Encoder对Waterfall视频进行500,1000以及1,500 kbps三个不同的比特速率的编码。在这一部分,我将向你演示使用RTMP和HDS编辑多比特率(MBR)媒体流。
正如你在前面练习中看到的那样,你需要从FMS媒体流转化多个文件。在这种情况下,它们是独立的F4V格式文件,与有效带宽而不是视频片段相关。
注意:这里所提供的示例文件是以你在电脑上安装FMS软件时创建的Program FilesAdobeFlash Media Server 4.5webrootvod folder目录下的rtmp_sample1_manifest.f4m文件为基础的。
这里重要的部分是<streamType>
和<media>
标签。<streamType>
有三个可用值。如果你使用的是预先录制的视频,那么recorded就是你所需要的。如果你使用的是Flash Media Live Encoder (FMLE),你就需要选用live。如果你不知道你在使用什么,为了保险起见,选用liveOrRecorded。
<media>
标签只是包含了需要装载的文件的文件名以及决定装载哪一个视频文件的比特速率。这里所需要的逻辑语言都已经在Flash Player里面了。
View larger (+)
View larger (+)
既然已经使用了RTMP协议,为什么还要使用HTTP协议?清单文件是从本地网站根目录提供服务的,这会用到HTTP协议。另一方面,视频文件位于applications/vod目录下,使用RTMP协议生成的流媒体文件也存储在这个位置。
当你点击Play Stream按钮时,清单文件中的播放列表检测设备带宽,开始播放Waterfall_1500.f4v文件,这是因为,媒体流是本地播放的,跟带宽无关。
HTTP动态流(HDS)和MBR
为HDS准备播放列表的过程和前面例子例子中讲到的会有所不同,因为你将要自主创建清单文件,将会直接调用播放列表,而不是由服务器实时的创建播放列表。在这个例子中,你将会用到伴随FMS一起安装的名为“the Configurator(配置器)”的工具。
尽管它看起来是相当的复杂,但你只需要记住,你将要做的最多的就是复制和粘贴。这个工具所要做的就是添加媒体流到清单文件或播放列表中去,然后保存,在HDS中使用。然后你就可以在OSMF或Strobe视频播放器中播放这个文件了。最终的结果是,你会创建一个使用HTTP动态流,通过标准HTTP连接传输最优比特速率视频的视频应用程序或项目。
注意:在给Apple iOS设备创建多比特率播放列表时用到了M3U8标签,这些会在系列教程的下面部分做更加详细的介绍。对其他文件使用f4m标签。
View larger (+)
Flash,OSMF以及多比特率媒体流
到目前为止,你一直使用的都是FMS 4.5自带的播放器。在最后的这个练习中,你将会使用到网络上的开源媒体框架动作脚本库(Open Source Media Framework ActionScript library)来实现视频流的转化。
连接到SWC文件之后,看一下OSMF视频播放器的代码。
import org.osmf.media.MediaPlayerSprite;
import org.osmf.layout.ScaleMode;
import org.osmf.media.URLResource;
这个代码块的作用是导入包含于.swc文件内的,这个例子所需的级。
下面一行是很重要的:
var manifestResource:URLResource = new URLResource("http://localhost/vod/Waterfalls_hds.f4m");
你需要在FMS服务器中指定清单文件。同时,你还要注意到,这需要用到HTTP以及在网站根目录下找到的hds-vod应用程序。(尽管在这个例子中用到的是HTTP,但值得注意的是,RTMP同样能够使用多比特率清单文件来通过FMS智能化地提供视频服务。)
既然Flash Player已经知道了到哪儿去查找清单文件,你就需要添加一个MediaPlayerSprite对象来显示视频流。这个对象同样也需要被置于Stage,它的尺寸则根据视频而定。在尺寸缩放时也并不会对它产生什么坏的影响。这些问题都可以由下面的代码块来解决:
var mediaPlayerSprite:MediaPlayerSprite = new MediaPlayerSprite();
mediaPlayerSprite.scaleMode = ScaleMode.LETTERBOX;
mediaPlayerSprite.x = 32;
mediaPlayerSprite.y = 74;
mediaPlayerSprite.width = 736;
mediaPlayerSprite.height = 506;
最后一部分代码块将OSMF播放器添加到Stage并把它指定给清单文件。
this.addChild(mediaPlayerSprite);
mediaPlayerSprite.resource = manifestResource;
由于其复杂性,Adobe强烈建议你在F4M清单文件中使用OSMF。OSMF大大简化了在各式各样的Flash项目中视频文件的使用。
机房名称 | 机房介绍 | 是否推荐 |
---|---|---|
广州较场西路机房 | 中国电信5星级机房,华南骨干出口,广州市中心机房,交通便利,总带宽200G,为华南骨干出口。 | |
广州人民中路机房 | 中国电信3星级机房,超高速的20Gx2主备双线路带宽直接接入ChinaNET骨干层。 | |
广州天河科技园机房 | 天河软件园建中路4号,中国互联网应急中心机房,国家政府机关直属。多线接入骨干BGP线路。 | |
电子商务部广州机房 | 天河软件建业路上(科韵路)的国际电子商务中心大厦甲级写字楼内,机房环境一流。多线接入骨干BGP线路。 | |
广州电信加速器机房 | 位于广州市萝岗区开源大道1号企业加速器B1栋一楼,按照国际T3+及国标B+级标准建造,机房环境一流。多线接入骨干网。 | |
广州移动旗锐机房 | 广州科学城南翔二路1号旗锐数字科技园区内,属于第三方私立机房,现由移动运营,从粤西汇聚节点直连CMNET骨干网。 | |
广州移动南方基地机房 | 中国移动广州南方基地机房位于广州市天河软件园高塘大道333号,用于移动骨干网线路,是移动服务器托管优质机房。 | |
东莞电信道滘机房 | 中国电信4星级机房,总带宽320G,可提供电信和多线BGP线路,华南骨干机房,稳定高速,性价比高。 | |
东莞电信东城机房 | 中国电信4星级机房,总带宽320G,性价比高,可提供电信和多线BGP线路和200G集群硬件防火墙VIP防护。 | |
东莞电信樟木头机房 | 中国电信4星级机房,总带宽320G,可提供电信和多线BGP线路和100G集群硬件防火墙企业级防护。 | |
深圳互联港湾机房 | 深圳南山高新区中区软件大厦四楼,电信3星级机房,20G带宽接入骨干网络。 | |
深圳南山科兴机房 | 位于深圳市南山区科技园科苑路15号科兴科学园,3星级机房,可提供双线接入等业务。 | |
深圳百旺信机房 | 深圳市南山区西丽松白公路百旺信工业区A区(一区)一栋属于第三方机房,可提供双线接入等业务。 | |
佛山电信信息大厦机房 | 佛山市汾江南路35号电信佛山分公司信息大厦8-9层,是中国电信3星级机房,可提供双线接入等业务。 | |
中山电信火炬机房 | 机房位于中山市火炬区康乐大道47号电信3楼,是中国电信3星级机房,可提供双线接入等业务。 | |
江苏徐州电信机房 | 机房位于江苏徐州市新城区镜泊东路4号,徐州市档案馆东侧,是中国电信3星级机房,可提供双线接入等业务。 | |
江苏常州电信机房 | 机房位于江苏省常州市清凉路108号常州信息港,是中国电信4星级机房,可提供双线接入等业务。 | |
香港TKO机房 | 机房靠近香港交易所的数据中心位置和香港商业中心,拥有PCCW、GTT、Cogent、Telia、TATA、CT、CN2、CU线路。 | |
香港将军澳机房 | 机房在香港新界將軍澳工業邨駿昌街22號,与阿里云香港机房同属一栋楼,拥有多种线路接入。 | |
香港新世界机房 | 香港新世界机房的海底电缆系统遍布全球,能直接连接多个国家,免备案,服务器租用、云服务器等业务。 | |
香港NTT机房 | 香港NTT电讯机房,是一座专用数据中心,在香港大埔,免备案,提供服务器租用、VPS云服务器等业务。 | |
美国洛杉矶机房 | 位于美国洛杉矶,直连全球,是全球带宽最集中的地方,是外贸企业首选,该机房只提供服务器租用业务。 | |
美国加州DCS机房 | 位于美国加州,直连全球,是美国的华人机房,是外贸企业首选,该机房只提供服务器租用业务。 | |
美国圣何塞机房 | 位于美国圣何塞,紧邻科技中心-硅谷,直连全球,是外贸企业首选,该机房只提供服务器租用业务。 | |
韩国首尔KT机房 | 韩国首尔的江南区道谷洞数据中心,光纤直连电信(CN2)、移动、PCCW、NTT等网络核心骨干。 | |
台湾中华电信机房 | 台湾中华电信机房位于台湾台北市114内湖区瑞光路68号3楼,是台湾对外最重要的电信枢纽之一。 | |
菲律宾PLDT机房 | 菲律宾PLDT机房拥有PCCW、TATA、CT、CN2等线路接入,优化线路到中国大陆速度快,延迟低,网络稳定。 |
¥99元/年起 网站空间 原价:199元
¥488/月起 物理机 原价:699元
¥580起 企业建站 原价:1999元起
迅恒专注于企业建站,海量精美网站风格模板供您选择!
网络营销推广的第一步就是做一个属于自己的网站
做网站,为什么要选迅恒建站?
专业的设计团队、技术团队,为客户提供专业的技术服务支持
客户查验合格,提供源码交付/FTP信息。网站商业授权,避免产权纠纷
网站能够在CP+平板+手机+小程序 完美响应展示。
所有收费项公开透明,正规签订合同,合同清楚明确
提供网站个性化定制设计,拒绝千篇一律
我司与华为云/腾讯云长期合作,采用安全稳定服务器,保障网站安全稳定运行