一直以来对 HTTP 方式观看视频的技术不是太了解,最近恶补了一些知识,整理一下笔记,备忘一下。本篇主要谈谈使用 Adobe Flash Media Server 4.5 来配置一个基本的网页视频服务站点的概念及步骤。

一些基础的知识

与 Flash 有关的一些名词概念

<p>
  FMS: Flash Media Server,Flash多媒体服务器,用来对音频和视频进行流媒体服务的服务器软件。
</p>

<p>
  SWF: small web format,就是 flash 动画文件。
</p>

<p>
  FLV: Flash Video,用来通过 Flash 播放视频的文件格式,可以包含在 SWF 中。在互联网上,这个是事实上的基于 Web 的视频服务的传输标准,例如 Youtube 之类的厂商都是用这个格式来进行基于 Web 的在线视频点播。FLV 文件里对视频和音频内容的编码方法和 SWF 是一样的。从 Adobe Flash Player version 6 开始支持 FLV 格式。
</p>

<p>
  F4V: 与 FLV 相平行的一种格式,为了封装 H.264 和 AAC 的音视频内容,从 Flash Player 9 update 3 开始支持这种格式。
</p>

<p>
  备注:在 Windows 上可以通过 Flash Player 来播放 FLV 和 F4V 格式的视频,在 Web 浏览器里通过安装 Flash Player 插件来实现对这类视频的播放。
</p>

<p>
  FLA: SWF 的源代码文件,可以使用编辑器打开这个文件进行修改,再导出新的 SWF 文件。
</p>

<p>
  f4m: 清单文件,在使用 Web 浏览器来进行视频浏览时,需要有一个清单文件来适配码率以便选择合适的文件,就是通过这个清单来做的。
</p>

<p>
  Flash Professional: 用来制作 SWF 的专业工具。
</p>

<p>
  VOD: Video on Demond,请求视频服务。在 FMS 安装目录下的 vod 目录,有如下的使用特例:
</p>

<blockquote>
  <p>
    The VOD service enables you to stream video and audio files through the server without writing any application code or configuring the server. You can simply point the Flash FLVPlayback component or a Flash video object to a file in this folder and the file will play—as long as it is an MP4, F4V, FLV, or MP3 file.
  </p>
</blockquote>

Flash 视频服务的基本类型

总体来说,Flash 视频的使用方式有两种,一种是客户端的模式,通过使用 RTMP 协议;另一种方式是使用 HTTP 的方式,通过网页来观看视频。在这两种方式中,SWF 都是客户端,FMS 都是服务器。

使用 RTMP 的方式来观看视频

<div class="outline-text-4" id="text-2-1">
  <p>
    最基本的配置步骤:
  </p>
  
  <ol>
    <li>
      正常安装 FMS 4.5;
    </li>
    <li>
      打开安装文件夹的这个路径: <pre class="example">D:\Program Files\Adobe\Flash Media Server 4.5\applications\vod\media

      <p>
        把示例的 flv 文件扔进去,或者直接使用该目录下面已有的测试文件。
      </p>
    </li>
    
    <li>
      直接打开 VLC 播放器,使用如下的地址来进行播放了: <pre class="example">rtmp://127.0.0.1/vod/sample

      <p>
        或是
      </p>
      
      <pre class="example">rtmp://127.0.0.1/vod/Legend

  <p>
    对于以 flv 为后缀的文件,可以不使用后缀。但是这样播放有一个问题,没有办法快进与快退。
  </p>
  
  <p>
    使用这种方式来播放,可以简单地测试一下服务器是否正常。
  </p>
  
  <p>
    另外,使用 Flash Media Server,还可以直接直播摄像头的视频。大体上是三个步骤:
  </p>
  
  <ol>
    <li>
      使用 Flash Media Live Encoder 对摄像头的数据进行压缩;
    </li>
    <li>
      使用 Flash Media Server 创建一个直播流;
    </li>
    <li>
      使用视频播放器来打开这个地址。
    </li>
  </ol>
</div></p>

使用 HTTP 的方式来观看视频

<div class="outline-text-4" id="text-2-2">
  <p>
    如果使用 HTTP 的方式来传输视频,最基本的原理在<a href="http://www.adobe.com/cn/devnet/flashmediaserver/articles/beginning-fms45-pt06.html">这里</a>讲得很清楚了,引用里面比较经典的一段话:
  </p>
  
  <blockquote>
    <p>
      HDS和Pete的想法又有什么关联呢?HDS可能就是由你伴随Flash Media Server (FMS)一同安装的Apache模块而来的。在这种情况下,FMS扮演着打包机的角色,制造内容片断,由Apache通过HTTP传输到Flash兼容的视频播放器。为了解决Sam所提出的反对意见,与F4M扩展一起,另外的一个清单文件也是通过同样的一个过程创建出来的。从根本上说,所需视频文件首先使用F4F扩展软件切割成若干片段,作为片段文件。清单文件中包含了视频的一些基本信息,包括每一个片段文件的位置以及其中最为重要的信息——这些片段传输到用户设备上的顺序。
    </p>
  </blockquote>
  
  <p>
    对于具体的协议来说,可以使用 PD, HLS, HDS 这三种中的一个,这三种协议的基本含义:
  </p>
  
  <p>
    PD: HTTP progressive download,在终端用户上缓存多媒体文件从而实现边下载边播放的流媒体技术,这是很多视频流媒体服务使用方法的统称。
  </p>
  
  <p>
    HLS: HTTP Live Streaming,苹果公司的基于 Web 的流媒体服务协议,先把视频切成若干个小片,然后使用 HTTP 协议下载后进行播放,从而实现基于 Web 的视频播放技术。这个协议最大的优势是只使用了 HTTP 协议,所以一般来讲,只要能正常上网的地方就可以使用该协议进行视频观看服务。
  </p>
  
  <p>
    HDS: <a href="http://www.adobe.com/cn/products/hds-dynamic-streaming.html">HTTP Dynamic Streaming</a>
  </p>
  
  <p>
    对于 FMS 的配置来讲,如果需要跑起基本的视频服务,还是比较简单的,根据上面的教程来配置即可。这几者之间的优缺点下次再作详细的介绍。
  </p>
</div>