`

Macromedia Flash Flash Media Server配置教程

阅读更多
简介:FMS的简单介绍  
 Macromedia Flash Media Server 2 是一个富媒体应用程序的开发框架和部署环境。开发 者可以使用Macromedia Flash Flash Media Server 来编写媒体应用程序,然后使用Flash Media Server来部署这些应用程序. Flash Media Server提供给你流媒体的能力,以及一种强大的急具弹性的开发环境。这 使你能够创建和呈递各种各样的交互媒体应用程序。比如视频点播,WEB事件实况广播,或 是MP3流。你也可以开发诸如视频博客,视频消息,以及多媒体聊天环境这样的通讯应用程 序。Flash Media Server 是Macromedia完整的数据库连通性,目录系统,以及现场服务解 决方案中的一个组成部分,是唯一的能够将音频和视频呈递给流行的Flash Player的服务 器。


 
FMS的安装!
FMS=Flash Media Server
FCS=Flash Commucation Server
最新的下载地址是


--------------------------------------
下载完毕后选择安装!(不安装怎么用啊,嘿嘿)
下一步下一步都会吧!
安装完毕后最好再配置一下服务器!
服务器的配置:
一.设定文件结构
设定档均放在C:\Program Files\Macromedia\Flash Communication Server MX\conf目

录下
 
1.conf目录下内建_defaultRoot_目录,与server.xml档案
  server.xml内涵括整个server的设定,如设定管理者帐号密码,在这Server上包含多少Adapter,Adapter有哪些VirtualHost, 而这些VirtualHost允许哪些帐号使用。  
  _defaultRoot_目录名称即是预设之Adapter名称,若你在服务器上设定多个Adapter,即会有多个目录,当然你若只是使用个人
  Developer版本的FCS,是不允许你使用多个Adapter。  
2.在Adapter目录(_defaultRoot_)下会有一个内建_defaultVHost_目录与一个Adaptor.xml档案
  Adaptor.xml内涵括目前所在Adapter的设定,主要是设定这Adapter内的host要使用哪个ip哪个port来进行联机。当你的Server 上有多个Adapter时,每个Adapter间绝对不可同时使用相同ip相同port号,否则会发生冲突,而致系统异常。  
  _defaultVHost_目录名称即是预设之VirtualHost名称,当你在这Adapter内设定多个VirtualHost,则需要有多个与所设定VirtualHost同名的目录存在。  
3.在VirtualHost目录(_defaultVHost_)内包含application.xml与vhost.xml两个档案 vhost.xml内设定了包含,这VirtualHost所要使用的application目录,application.xml内设定了要套用在application的设定。
二.如何增加server管理者帐号?
管理帐号是写在server.xml内在<admin>往下找会看到<UserList>,server可以有多少管理帐号,就会有几组的<User></User>。 name放的是使用者帐号,<Password encrypt="true">内是已编码的的密码数据,你可以将encrypt设成false,即可直接填入密码,不做编码,不过不建议这样做,可以透过以下两个方式设定编码之密码。
1.透过FCS提供之管理接口,在"Admin Users"项目下方加入或修改密码
2.使用Server Management Action Script写一个管理用的flash文件,利用指令addAdmin(admin_name, password)即可做到,至于Server Management ASD如果你有FCS光盘里面就有,若无则需要到Macromedia网站下载,FCS Help内并无这份资料。

三.如何指定FCS使用指定IP,指定port
开启Adaptor.xml,修改<HostPort>192.168.0.2:1935,443,80</HostPort>
使用rtmp联机server时即可将server ip设成192.168.0.2,然后联机会依序找1935port是否可用,若port 1935被挡,会接下来找port 443,再不行就会走port 80

四.如何指定application所在位置
系统安装好,application的位置都是预设在C:\Program Files\Macromedia\Flash Communication Server MX\applications下,也就是说你要联机的ap目录都要放在这里,通常这样的管理是比较不方便的,我会把applicetions要建置的目录放在其它好维护的地方
开启Vhost.xml,找到<AppsDir>填入你放的目录,以下是我的设定  
<AppsDir>d:\www_root\fcs_ap</AppsDir>

五.如何设定影音资料的虚拟目录
如果有预录好的mp3或flv影片檔要播放,这些要做streaming的多媒体档案须放在FCS上,而不是在Web Server,可指定较易维护的目录来放置档案,并设定虚拟目录名称。
开启Vhost.xml,找到<VirtualDirectory>,内可依需求设定多个stream虚拟目录,以下我使用两个目录分别来放video与audio
<Streams>video;D:\www_root\fcs_stream\video</Streams>
<Streams>audio;D:\www_root\fcs_stream\audio</Streams>

将mysong.mp3放到D:\www_root\fcs_stream\audio即可在程序内用mystream.play("mp3:audio/mysong")播放

准备工具:

Flash Media Server..

Flash 8 && Flash 8 Player (-______-)

一个摄像头,一个麦克.

作者:KeeRula
此教程及附带源文件仅做网友个人交流学习使用.请勿用于商业用途.需要商业版请单独联系.

打开FLASH,新建一个FLASH文档.

CTRL + L调出库..在库的右上角有个三角,点一下.然后选择"新建视频元件";

命名为:video

在主场景里新建2个图层,一个名字叫 video_record,另一个叫video_play;

将库里的视频元件分别拖到这2个图层中.起名字叫video_r和video_p.video_r是用来录视频的.video_p是用来放视频的.

(下面起新建MC啊,或命名一类的我就不写了.只做程序介绍.如果连MC命名都不知道的话相信也看不懂这教程.大家见谅

程序部分:
var server_uri:String = "rtmp://localhost/tensharp";
//FMS地址;

var videoName:String = "KeeRula";
//视频名.

var my_nc:NetConnection = new NetConnection ();
//新建一个连接对象,用来连接FMS;

my_nc.connect (server_uri);
//连接FMS;

var my_ns:NetStream = new NetStream (my_nc);
//新建流,用来捕获和播放视频;

var my_cam:Camera = Camera.get ();
video_r.attachVideo (my_cam);
//获得慑像头,并将摄像头获取的视频载入到video_r里.

my_cam.setQuality (1024, 90);
//设置带宽和质量;

var my_mic:Microphone = Microphone.get ();
//获得MIC;

my_ns.attachVideo (my_cam);
my_ns.attachAudio (my_mic);
//将摄像头图象和MIC声音装载到流.

video_p._visible = false;
//将播放窗口设置为不可见.

my_nc.onStatus = function (thisObj:Object)
{
//trace (thisObj.code);
if (thisObj.code == "NetConnection.Connect.Success")
{
RecordStop ("空闲中");
//执行录制停止方法.并将状态设置为空闲
}
else
{
trace ("错误:服务器未启动或URI输入错误.");
}
}
//onStatus这里是指服务器的连接状态.

function Record ()
{
video_r._visible = true;
//将录制窗口设为可见.
video_p._visible = false;
//播放窗口设置为不可见.
my_ns.publish (videoName, "record");
//关键就在这句了.写了这么多全围绕它来的.record为录制.
StreamInfo ("NowRecord");
//执行StreamInfo方法,并将参数设置为NowRecord;
btn_pr.btn_text.text = "停止";
//按钮文字:停止.
RecordInterval = setInterval (RecordTime, 1000);
//统计录制时间.
}
//方法:录制.

var timeNum:Number = 0;
//录制时间.

function RecordTime ()
{
timeNum ++;
txt_status.text = "正在录制" + " " + "时间:" + Math.floor (timeNum / 60) + "分" + (timeNum % 60) + "秒";
}
//方法:录制时间统计.

function RecordStop (__status:String)
{
//__status是当前状态文字.
txt_status.text = "当前状态:" + __status;
btn_pr.btn_text.text = "录制";
StreamInfo ("NowStop");
//执行StreamInfo方法..并将参数设置为NowStop;
clearInterval (RecordInterval);
timeNum = 0;
//不录了..要把统计时间清空.
if (__status == "录制完成")
{
Finished ();
}
//这个应该不用偶说了..
}
//方法:空闲或录制完成.

function Finished ()
{
my_ns.close();
//完成了..就要关闭录制.
var thisObj = this;
var FinishAlert:MovieClip = _root.attachMovie ("Alert", "FinishAlert", 100);
//这个是一个弹出框.具体看库里的MC:Alert.
with (FinishAlert)
{
alertTitle.html = true;
alertTitle.htmlText = "<b>" + "录制完成!" + "</b>";
info.text = "录制完成..请选择下一步操作."
_x = video_r._x + (video_r._width - _width) / 2;
_y = video_r._y + (video_r._height - _height) / 2;
btn_sub.btn_txt.text = "播放";
btn_cln.btn_txt.text = "重录";
btn_sub.onRelease = function ()
{
  thisObj.PlayVideo ();
  thisObj.closeAlert (FinishAlert);
}
btn_cln.onRelease = function ()
{
  thisObj.Record ();
  thisObj.closeAlert (FinishAlert);
}
closed.onRelease = function ()
{
  thisObj.closeAlert (FinishAlert);
}
}
btn_pr.enabled = false;
//把按钮设为不可点.
}
//方法:录制完成.

function closeAlert (__alert:MovieClip)
{
btn_pr.enabled = true;
unloadMovie (__alert);
}
//关闭那个Alert用的.

function StreamInfo (__status:String)
{
btn_pr.onRelease = function ()
{
if (__status == "NowRecord")
{
  RecordStop ("录制完成");
}
else if (__status == "NowStop")
{
  Record ();
}
else if (__status == "NowPlay")
{
  Record ();
}
}
}
//嘿嘿..如果把上面的仔细看了的话这个就不用我说了吧.^_^

function PlayVideo ()
{
txt_status.text = "当前状态:" + "正在播放...";
StreamInfo ("NowPlay")
video_r._visible = false;
video_p._visible = true;
video_p.attachVideo (my_ns);
//将视频载到播放窗口中.
my_ns.play (videoName);
//开始播放.
btn_pr.btn_text.text = "重录";
my_ns.onStatus = function (PlayInfo)
{
if (PlayInfo.code == "NetStream.Play.Stop")
{
  my_ns.seek (0);
  my_ns.pause();
  txt_status.text = "当前状态:" + "播放完成...";
}
}
//流状态信息...详细的请自己 trace (PlayInfo.code);
}
//方法:播放视频.
//需要注意的是用FMS播放的时候不用写路径.因为FMS录的视频直接存在FMS默认的流文件目录里了.
//录的视频的存放路径:FMS安装目录:/application/站点/streams/_definst_

如果上面看个差不多了可以自己动手做一下了.祝大家好运


提供FMS(FCS)服务端获取flv时间长度和删除flv文件的方法

--------------------------------------------------------------------------------

只要在main.asc里添加下列代码
//=====================================================================;
function getStreamLength(name) {
return Stream.length(name);;
}
//=====================================================================;
function clearStream(name) {
trace("clearStream("+name+");");
var stream = Stream.get(name);
return stream.clear();
}
//=====================================================================;
//设置Client.prototype;
//=====================================================================;
Client.prototype.getStreamLength = getStreamLength;
Client.prototype.clearStream = clearStream;


分享到:
评论

相关推荐

    Flash Media Server 入门教程

    ### Flash Media Server 入门教程 #### 一、Flash Media Server 简介 Flash Media Server(FMS)是一款由Adobe公司开发的流媒体服务器软件,用于发布和传输实时视频和音频流。早期版本名为Flash Communication ...

    Flash Media Server 入门教程.doc

    ### Flash Media Server (FMS) 入门教程详解 #### 一、Flash Media Server简介 Flash Media Server(简称FMS)是Adobe Systems公司推出的一款专为流媒体传输设计的服务器软件。它支持实时数据和流媒体传输,广泛...

    RED5安装与配置详解

    Red5是一个开源的流媒体服务器平台,它提供了与Macromedia公司的Flash Media Server(FMS)相似的功能,主要支持基于Adobe Flash平台的实时通信应用,如音频、视频流,以及共享对象通信等。Red5利用Java语言开发,...

    FlashMediaServer配置与开发入门

    **发展历史**: FlashMediaServer(FMS),最初由Macromedia公司于2002年末以Flash Communication Server MX(FCS)的形式推出,随后在2005年升级并更名为FlashMediaServer。目前最新版本为3.5,它代表了Flash视频流...

Global site tag (gtag.js) - Google Analytics