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("http://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("http://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 高速缓存设备。 技巧模式和多速率流能够方便地在应用程序层实现。 与渐进式播放一样,需要添加内容保护机制。

来自 <http://www.adobe.com/cn/devnet/video/articles/media-measurement-flash.html>

时间: 2024-10-05 22:49:00

Flash视频传送架构的相关文章

优酷、YouTube、Twitter及JustinTV视频网站架构设计

优酷视频网站架构 一.网站基本数据概览 据2010年统计,优酷网日均独立访问人数(uv)达到了8900万,日均访问量(pv)更是达到了17亿,优酷凭借这一数据成为google榜单中国内视频网站排名最高的厂商.     硬件方面,优酷网引进的戴尔服务器主要以 PowerEdge 1950与PowerEdge 860为主,存储阵列以戴尔MD1000为主,2007的数据表明,优酷网已有1000多台服务器遍布在全国各大省市,现在应该更多了吧. 二.网站前端框架 从一开始,优酷网就自建了一套CMS来解决前

Raspbian PIXEL不能播放flash视频的解决办法

Raspbian PIXEL虽然已经自带chromium浏览器,而且也安装了Pepper Flash Player插件,但默认还是不能播放flash视频的,需要执行下面两个命令之后才能真正解决这个问题. sudo apt-get update sudo apt-get dist-upgrade PS:执行上面的命令之前,最好把软件源改一下,要不然估计要很长时间才能执行完.

解决在firefox中看flash视频时卡顿的问题

问题:使用firefox播放音悦台中flash视频时总是出现画面卡顿的现象. 注意:以下的解决方案会导致安全性问题,我用360安全浏览器发现它现在(2015-2-14)就是使用旧版flash插件来解决卡顿问题的. 解决方案的步骤: 1. 下载旧版flash 11.6.602.180 2. 打开安装压缩包中的fp_11.6.602.180_archive\11_6_r602_180\flashplayer11_6r602_180_win.exe 3. 打开firefox的about:config,

html文件中flash视频格式(flv、swf)文件的嵌入方法

flash文件的格式:.FLV 和 .SWF flash视频格式有两种扩展名可以使用:.flv和.swf.他们有什么不同呢? (1)一个.flv文件(flash视频)是基于图片的视频流和音频.如果你在运行一个流服务,flv将是一个好的选择.上游条件是,这个文件的任何部分可以被客户终端访问,并且任何时间不会等待下载.话又说回来了,运行一个流服务待价昂贵. (2).swf也是Macromedia Flash文件格式,是一个完整的视频-音频文件,并具有脚本和其它更多的.这将有利于HTTP(渐进式)下载

flash 视频 死机(转贴)

http://zhidao.baidu.com/question/120464366 打开有关flash的网站就定屏死机 打开flash的网站经常定屏死机,打开酷狗,看土豆网遇到旁边那些广告也一样死机.维独玩传奇,QQ聊天,斗地主就没事.请高手回答下是怎么回事! 最佳答案 [可能原因]您的电脑显卡配置较低,在启用硬件加速时,显卡不堪重负,故而“定屏”. [故障现象] 观看优酷或土豆网等网站视频时,尤其是全屏时容易导致死机. [故障分析] 2008年2月份推出的Flash Player9版本更新,

flash视频器播放器代码

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="Copyright" content=/" /> <meta name="keywords" content="" /> <meta nam

利用 Chromium Embedded Framework (CEF) 定制提取 Flash 视频的浏览器

功能介绍: 利用 CEF 分析网页源码, 提取 flash 视频的代码. 提取的视频代码 LoadString 和 JS 两种方式重新插入到浏览器. (CEF_3.2171.1979_win32 - Chromium Verison 39.0.2171.95 + VS2010) 按钮说明: Flash 网页全部载入后单击 Flash 按钮,提取 flash 视频的代码 Fix LoadString 方式重新插入到浏览器 JS Fix JS 方式重新插入到浏览器 SizeN 控制视频大小 (Siz

短视频SDK架构设计,短视频APP开发目标首选

短视频 SDK 实践中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家,厂家SDK 架构设计理念.第一点说到 SDK 的设计理念必定要提到命名规范,就跟腾讯的企业理念一样,他们的命名规范是统一.简单并且精炼的,比如他们将对外的核心类统一以 PLShortVideo 为前缀,在录制.编辑以及剪辑等模块的命名:参数配置类则均以 PLxxxSetting 为标准进行命名:接

视频服务器架构师

岗位职责: 1.智能视频分析服务器解决方案设计与核心代码实现及团队带领 2.用稳定可靠的视频后台产品给用户带来更方便服务和体验 任职要求: 1.希望用视频技术创造更多商业智能与价值2.5年以上视频服务器相关工作经验3.精通C/C++/VC++/Java4.精通算法和数据结构,精通socket开发与分布式流媒体服务器方案设计,精通TCP/UDP.HTTP.RTSP.RTMP.RTP/RTCP.SDP等协议规范5.熟悉H.264.H.263.MPEG-4.MPEG-2等技术规范,尤其熟悉流媒体容器M