• 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~ 

  • 相关阅读:
    查找和排序-6.快速排序
    查找和排序-5.插入排序
    PAT (Basic Level) Practice (中文)1093、1094
    srand((unsigned)time(NULL))详解
    fscanf()库函数
    C++ fopen函数用法
    简单计数排序
    数据结构:堆排序
    数据结构:归并排序
    团体程序设计天梯赛-练习集(八)(DFS,7-37 整数分解为若干项之和、7-22 龟兔赛跑)
  • 原文地址:https://www.cnblogs.com/orchid/p/1541439.html
Copyright © 2020-2023  润新知