Flash基础入门之Flash视频传送架构
小标 2018-12-28 来源 : 阅读 1069 评论 0

摘要:本文主要向大家介绍了Flash基础入门之Flash视频传送架构,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了Flash基础入门之Flash视频传送架构,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

Flash视频传送架构
Flash 可以提供三种完全不同的视频传送机制:渐进式下载(progressive download)、流式传输(streaming)和HTTP流式传输(HTTP streaming)。 我将利用少许代码片段简单地说明所有上述三种传送机制。如果你使用视频播放器应用程序,则这些底层的细节将是不可见的。
渐进式下载
渐进式下载是Flash提供的最简单的、因此也是使用最广泛的视频播放机制。 相应的视频文件存储于 HTTP 服务器,你需要做的所有操作是指定视频的 URL。 Flash将视频下载到浏览器的高速缓存中,然后当收到足够数量的数据时开始播放视频。
下面的范例 ActionScript 代码演示了渐进式视频播放机制:

private function playProgressive():void
{
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    ns.play("//wwww.example.com/video.flv");
}

该方案的优点是其简单性(不需要特别的媒体流服务器)并且能够自动使用HTTP高速缓存的基础设备。该方案的不足之处是你无法控制视频下载进程、搜寻功能有限(用户无法搜寻到没有下载的视频)以及浪费带宽(整个视频能够以网络连接的最大处理速度下载,即使视频无法观看)。因此,渐进式下载仅仅适用于最简单的视频应用程序。 由于视频是通过HTTP传送的,因此需要提供内容保护机制。
YouTube 使用渐进视频下载方式以及特别的服务器侧组件来克服上述局限性。

流是指一种更高级的视频播放机制,利用这一机制,Flash Platform 客户端能够从特别的流服务器中获取视频数据,例如 Adobe Flash Media Server。流是使用 Real-Time Messaging Protocol (RTMP)实现的,RTMP是Adobe开发的一种开发协议。
适用于流的客户端侧 ActionScript 代码与渐进式下载的代码非常相似:

private function playStreaming():void
{
    var nc:NetConnection = new NetConnection();
    nc.connect("rtmp://example.com/video");
    var ns:NetStream = new NetStream(nc);
    ns.play("flv:video");
}

RTMP 流的优点是能够通过对缓存和下载的完全控制以获得最佳的性能。目前,RTMP流已经能够支持快速启动(fast start)、搜寻(seeking)、技巧模式(trick mode)和多速率流(multi-bitrate streaming )等功能。 RTMP流没有浪费带宽,它只下载必需的视频数据。相应的视频数据不必写入磁盘(浏览器高速缓存器或任何其它位置),而是在收到之后由Flash进行处理。
RTMP具有多种风格:它可以在 HTTP (RTMPT) 或SSL (RTMPS)上建立通道。 Flash Media Server 也可以提供加一种密格式 (RTMPE),目前许多视频网站已经使用这种加密格式。
HTTP流
HTTP 流处理功能是最近引入Flash Player 10.1的。 它将流的高级功能与HTTP高速缓存基础设备的可用性组合在一起。 相应的视频文件存储于一个web服务器。在当前的实现方案中,复杂部分被推向视频播放器应用程序:视频下载、缓存控制、搜寻以及其它多种功能均由应用程序开发人员利用ActionScript实现。 ActionScript负责将视频消息作为一个ByteArray 提供给Flash以便进行解析、解码和显示。 相应的解析器只能读懂FLV 文件。如果你希望播放以 MPEG-4 格式编码的视频 ,你必须利用ActionScript解析MPEG-4容器,而这是非常具有挑战性的任务。 因此,作为Flash Media Server的一个组成部分,Adobe可以提供一种HTTP插件,它能够解析 MPEG-4 容器,并且能够方便地用于 HTTP 流处理功能。
下面的代码片段可以提供播放一段FLV电影的范例代码:

private var httpStream:URLStream = null;

private function playHttpStreaming():void
{
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    ns.play(null);
    var request:URLRequest = new URLRequest("//wwww.example.com/video.flv");
    httpStream = new URLStream();
    httpStream.addEventListener(ProgressEvent.PROGRESS, onData);
    httpStream.load(request);
}

private function onData(e:ProgressEvent):void
{
    var b:ByteArray = new ByteArray();
    httpStream.readBytes(b, 0, httpStream.bytesAvailable);
    ns.appendBytes(b);
}

视频播放器的职责是实现搜寻(seeking)、播放列表(playlist)、多速率切换( multi-bitrate switching)及更多其它功能(而这些不是没有价值的功能)。例如,为了实现搜寻功能,视频播放器需要对视频消息进行缓存、跟踪可搜寻点并且在进行搜寻操作时为Flash提供合适的FLV片段。充分利用HTTP流提供的所有高级功能的最佳方法是使用 OSMF 视频播放器和 Flash Media Server HTTP 流处理功能插件。
HTTP 流处理功能的优点是能够对缓存进行全应用程序的ActionScript控制并且能够使用 HTTP 高速缓存设备。 技巧模式和多速率流能够方便地在应用程序层实现。 与渐进式播放一样,需要添加内容保护机制。

以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程