flash media server 第一课:Hello world!

flash media server(FMS)像是一个HUB,链接到这个服务器的用户把捕捉到的摄像头、麦克风里的内容传送给FMS,然后FMS在把它们传送给成千上万的其他用户。
FMS主要有这些作用,实时转播摄像头、麦克风里的音频视频流,播放录制好的流媒体文件。

client-server架构

FMS是基于RTMP协议的client-server架构。

      客户端的应用由flash或是flex搭建,运行在flash player或是AIR上,服务器端运行在服务器上。客户端的代码可以由actionscript1.0,2.0,3.0编写,服务端的代码有专门的服务器端actionscript(类似actionscript1.0)编写。服务器端的应用在哪里呢?安装目录下的application文件夹里的东西就是服务器端的应用,一个文件夹对应一个应用,客户端其实是链接到FMS的某个应用的。如何建立这样的应用呢?很简单,在application文件夹里再建一个文件夹就成了,把你的脚本就放到这个文件夹里。这个脚本文件的名字一定要与它所在的文件夹的名字一样,后缀名为asc。假如在FMS的安装目录里的application文件夹里新建一个hw的文件夹,想在这个文件夹里建立一个应用程序,这个程序名必须为:hw.asc。当然,也可以与文件夹名不相同,那就必须叫main.asc。只有这两种选择。服务器端的应用无外乎下面几种用处:1)验证连接到的用户;2)当用户连接或是断开时执行某些逻辑;3)更新客户端;4)控制流;4)链接到其他服务器。

不得不说说服务器端的脚本的两个很特别的对象:client对象和application对象。当一个客户端链接到FMS时,FMS就会建立一个client类,来代表这个客户端。application对象是一个代表服务器端应用的实例。这个对象可以访问客户端,断开连接,停止服务器端应用等。

多媒体应用的组成

一个客户端的应用用Actioscript写成,编译成SWF文件。服务器端的应用用server-side Actionscript写成(类似ActionScript1.0,运行在服务器)。一个多媒体应用通常有一些录制的或是实时的音频,视频,从客户端流到服务器,从服务器流到客户端,或是从服务器到服务器。一个典型的FMS应用有以下几部分:

  • 客户端用户界面
  • 客户端actionscript脚本
  • 视频,音频文件
  • 摄像头和麦克风:可以通过flash media live encoder 来使食品和音频流向服务器,也可以开发自己的客户端来捕获视频音频。
  • 服务器端得actionscript脚本

 

设置开发环境

flash/flex+flash media server(developer edition)

说说这个版本问题:去adobe下载FMS,你会发现三个版本,一个是Flash Media Interactive Server,这是功能最齐全的版本,也是最贵的版本。Flash Media Development Server,这是免费的版本,基本上Flash Media Interactive Server有的它都有,但是最大连接数目有限制。Flash Media Streaming Server,这好像是阉割完的Flash Media Interactive Server版本,功能有很多的限制,学习的话最好不要用这个版本,当然也用不了,这也是要钱的版本。

下载完了就安装吧!里面有个让你选择是否安装appache的选项,最好选了,否则可能会遇到一些麻烦。

如果出现问题可以查看下面两个方面:1,控制面板->管理员工具->服务,查看与FMS相关的服务是否全部打开。2,在安装目录下有个log文件夹,里面有个master.xx.log 文件 和 core.xx.log 文件显示失败的记录。edge.xx.log里面写了那个端口在监听。

创建一个hello world 的例子

这个例子很简单,链接到FMS,然后FMS返回字符串。

第一步:创建用户界面,很简单,一个按钮按下去就会连接到FMS,一个文本框,用来显示连接信息。

<mx:Button id="conBt" y="10"/>
<mx:Text id="tt" y="50"/>

第二步:写客户端的的actionscript代码

<mx:Script>
<![CDATA[
import flash.net.NetConnection;
import flash.net.Responder;
import flash.events.MouseEvent;
private var nc:NetConnection;
private var myResponder:Responder=new Responder(onReply);
public function init():void{
tt.text="";
conBt.label="connect";
conBt.addEventListener(MouseEvent.CLICK,clickHandler);
}
public function clickHandler(event:MouseEvent):void{
if(conBt.label=="connect"){
trace("Connecting...");
nc=new NetConnection();
nc.connect("rtmp://localhost/HelloWorld");
nc.call("serverHelloMsg", myResponder, "World");
conBt.label="disconnect";
}
}
public function onReply(result:Object):void{
trace("onReply received value: " + result);
tt.text = String(result);
}
]]>
</mx:Script>

第三步:编写服务器断的actionscript代码

application.onConnect = function( client ) {
client.serverHelloMsg = function( helloStr ) {
return "Hello, " + helloStr + "!";
}
application.acceptConnection( client );
}

在flash media server的安装目录下有一个application的文件夹,在里面新建一个HelloWorld的文件夹,在这个文件夹里新建一个文本文档,把上面的代码拷进去,保存,名字为:HelloWorld.asc。注意后缀名为asc。
好,三步完成了就可以测试了,如果成功的话,按钮按下去就会出现hello,world!的字样。如果不成功,先看看是否开启了fms,在开始菜单里的flash media server3.5里有一个start abobe flash media server3.5和一个start flash media administrator server3.5,确定启动了。还可以去管理员工具的services里的两个有关FMS的服务是否已经启动。如果服务都启动了还不成功,就去看看你的版本,只有development版和Interactive版才能在application文件夹里自己建立文件夹,Streaming版本不可以。这样就应该可以了,上述代码我测试过,没问题。看别的教程,说要把vod文件夹(application)里的四个文件拷到新建的文件夹(这个例子是HelloWorld文件夹),其实没这个必要。

第一课先到这里 O(∩_∩)O~ 

 

posted @ 2009-08-07 18:21  orchid  阅读(1172)  评论(0编辑  收藏  举报