Adobe flash media server 开发者向导
By:闪闪威廉@nju
1 起步
Adobe flash meida server提供了一个流媒体的集合和为建立富媒体应用的集交互模式。Flash media server提供了即时开始,实况视频流和基于用户带宽的可变的流的码率。 Flash media server有三个版本
Flash Media Interactive Server :拥有完整特性的服务
Flash Media Development Server:一个用于开发的交互式服务的版本。支持所有的特性,但是有连接数的限制。
Flash Media Streaming Server:只支持实况和视频点播的服务。这个版本不支持服务器端的脚本或视频编码。 阅读与学习
注释:在使用这个向导之前最好阅读flash media server 山西省物理学会技术一般观察
1. 1 前言
1.1.1 client-server体系结构
浙江癌症村 Flash media server是一个网络中心,应用程序联用实时信息协议(real-time messaging protocol)连结到这个中心,这样服务器可以向连接到服务器上的很多用户发送数据并且从这些用户接受数据。一个用户通过一台配备了摄像头和麦克风,并且安装了flash player的电脑可以捕捉实况视频或音频,然后通过服务器向全世界成千上万的用户发布自己的视频或音频。全世界的用户可以参与在线游戏,并且同步所有用户的动作。 用户通过网络连接连到服务器。一个连接类似于一个大的管道,这个管道里面传输着大量的数据流。每个流在客户端和服务器之间传输。每个服务器可以并发的处理很多连接,最大的连接数量取决于您的服务器的能力。 一个在flash media server上运行的应用程序后一个client-server体系结构。客户端的应用程序是由adobe flash 或adobe flex开发,运行在flash player,AIR 或flash lite 3 上的。他可以捕捉和播放音频和视屏并且处理用户的交互。服务器端的应用程序运行在服务器上。它可以处理客户端的连接,向服务器的文件系统写入文件,并且处理其他的任务。 客户端必须向服务器发起连接。一旦连接成功,客户端可以和服务器或其他客户端通信。确切的说,客户端连接到一个服务器上运行的应用程序的实例。一个应用程序的实例的例子是一个有着很多不同房间的在线游戏,用户可以组成很多不同的组来进行游戏。在这个例子里面,每个房间就是一个确定的应用程序的实例。
许多应用程序的实例可以同时运行。每一个应用程序的实例有自己唯一确定的名字,并且向客户端提供独一无二的资源。多个用户可以连接到同一个应用程序的实例或不同的应用程序的实例
多个客户端连接到运行与flash media server的多个应用程序(如图的scrabble和sudoku)和多个应用程序的不同实例实例(如scrabble的room2和sudoku的room1和room2)
1.1.2媒体应用程序的组成部分
客户端的应用程序用actionscript编写并且被编译为swf文件。服务器端的应用程序是由服务器端的actionscript编写(一种类似于actionscript 1.0的语言,但是不在客户端运行,而是在服务器端运行)。一个媒体应用程序通常有已经编码好的或者实况的音频和视频,它们通过流的方式由服务器传输到客户端,由客户端传输到服务器或由服务器传输到服务器。
一个典型的flash meida server应用程序有以下几个部分:
客户端的用户界面:客户端的显示着用户界面,如控制视频开始,停止或暂停的按钮。用户界面可以运行在flash player,AIR 或flash lite 3 上,由adobe flash 或adobe flex开发。
客户端的actionscrip:客户端有可以处理用户交互和连接到服务器的actionscript的代码。
Flash media server3支持actionscript3.0。客户端由actionscript2.0或actionscript1.0为早期版本的Flash media serve而开发的因应用程序也是被Flash media server3兼容的。
视频或音频:许多媒体应用程序将已经编码好的音频或视频以流的方式由服务器端传输到客户端,或由一个客户端传输到服务器端然后到其他的客户端。事先编码好的文件可能是Flash Video (FLV), MP3, 或 MP4格式的。又服务器端编码的视频总是FLV格式的,以.Flv为后缀.
摄像头或麦克风:一个客户端可以用Adobe Flash Media Encoder或者你自己的习惯的支持实况流的flash软件向服务器实况传输音频或视频。客户通过自己的摄像头和麦克风端捕获音频或视频。
喷雾干燥法
服务器端的actionscript:许多应用程序包括封装在一个以.asc为后缀的服务器端的actionscript代码里面,通常叫他actionscript通信文件。这个文件被命名为man.asc或myApplication.asc。服务器端的脚本处理服务器端的任务,如流通传输音频和视频,定义当用户连接或断开连接时做什么。具体的请查看服务器端actionscrip语言参考。
1.1.3流格式
Flash media server支持很多种流媒体格式,包括Flash Video (FLV), MPEG-3 (MP3), and MPEG-4 (MP4)。
1.2搭建开发环境
1.2.1安装服务
你可以使用免费开发版的服务来开发和测试应用程序。最简单的开发环境是一台安装了flash或flex的电脑,这台电脑通同时被用作服务器。
安装服务
如果你需要细节介绍的话请参考Adobe Flash Media Server 安装向导。
开启服务
当你安装服务时,你可以设置开机自动开启服务。如果服务没有开启,你可以手动开启。
1.点击开始,选择所有程序>adobe> Flash Media Server 3 > Start Flash Media Server 3。
2.点击开始,选择所有程序>adobe> Flash Media Server 3 > Start Flash Media Administration Server 3。
注释:如果你像打开管理控制台的话你需要开启Administration Server服务。
确认服务运行
打开控制面板>管理工具>服务。在服务窗口,确认Flash Media Administration Server 和 Flash Media Server都被开启。
1.2.2安装flash
使用actionscript3.0开发flash用户界面,你需要flash cs3和flash player 9。
1.下载并且安装Adobe Flash CS3 Professional。
2.下载并且安装Flash Player 9。
3.打开flash cs3,选择文件>发布设置。
4.在格式栏里面确保flash和html被选中。
5.在flash栏里面,对于版本选项,选择flash player 9。对于actionscript选项,选择actionscript3.0。
1.2.3安装flex
创建用户界面,你需要Adobe Flex Builder 或 Adobe Flex SDK和flash player 9。
1.下载并且安装Adobe Flex 2 SDK 或 Adobe Flex Builder 2。
2.下载并且安装Flash Player 9。
3.在Flex Builder里面确保project> Build Automatically被选中。
1.3 hello world 应用程序
1.3.1前言
注释:下面的部分应用于Flash Media Interactive Server 和Flash Media Development Server者两个版本的服务。
这个例子使用flash CS3来展示如何将一个flas件连接到一个服务器端的脚本,别且如何从服务器获取数据。在这个例子里面,flash用户界面有一个按钮(connect)和一个lebel(最初是空的)。当一个用户点击connect按钮,客户端连接到服务器;然后客户端运行服务器端的函数来返回一个字符串的值。当服务器端回应了,客户端的回应函数在label上显示字符传。客户端通过改变按钮的label来断开连接。当diaconnect的按钮被点击,客户端断开连接,并且清空label。
范例文件在HelloWorld文件夹下。
1.3.2创建用户界面
1.开启Flash CS3,然后选择新建>flas件(ActionScript 3.0)。
2.在文档类的框框里面写上HelloWorld。你可能看见一个关于威定义的actionscript类警告信息。点及ok,因为你将添加类文件在下一节。
3.选择窗口>组件,然后选择User Interface>Button。在属性栏里面为按钮取名connectBtn。4.添加一个Label组件,移动它到按钮上面,取名为textLbl。
保存文件为HelloWorld.fla。
1.3.3编写客户端脚本
这个脚本定义了两个按钮动作,一个是连接到服务器,另一个是从服务器断开。当连到服务器,这个脚本或调用服务器端的一个函数传入参数(”world”),这将引发一个相应来显示返回的字符串(”hello world”)。
1.选择文件>新建>actionscript文件。检查目的路径有HelloWorld.fla。
2.声明包和导入需要的类;
package {
苏州蓝缨学校 import flash.display.MovieClip;
import flash.Responder;
import flash.NetConnection;
import flash.events.MouseEvent;
第三世界电影
public class HelloWorld extends MovieClip {
}
}
3.为连接和相应服务器事件申明变量(查看 ActionScript 3.0 语言和组件参考)
private var nc:NetConnection;
private var myResponder:Responder = new Responder(onReply);
4.定义类的构造函数。设置label和button的显示的值,为button添加事件侦听器