Flash Media Server 入门
2009年12月20日
什么是Flash Media Server ?
Flash大家庭里的一员,这个东东以前叫Flash Communication Server,传说中的FCS就是这个,现在改叫FMS了...
不见不知道哦,一见真可怕,adobe还有这么cool的东东,自从见了她,让我做些小东东的兴趣全没了,一心想研究这个
这东东能做什么?
视频录制,flash聊天室,在线视频会议,网络游戏
先要打开服务器
你在本机装的fms,本机就是服务器了哦!记得现在你的机器既是客户端又是服务端哦
开始===程序===Macromedia===Flash Media Server 2
有两个start****,都要打开,关时候两个都要关,如果你怕麻烦直接找tool文件夹里的批处理文件StartServerService.bat,双击他,他会帮你搞定地,想关就找StopServerService.bat。
applications文件夹
你可以在里边建一个文件夹例如叫 FirstApp,这就建了一个Application,以后所有此项目服务器端的flv文件啊,共享文件啊都会在这里边,有时服务器端需要写程序的时候里边会有个main.asc 文件,这个就是服务器端程序,服务器端程序目前只支持as1写,是在服务器上执行的,你也可以用trace调试,怎么trace管理服务器时候你会看到,你可能会建若干个app,在一台服务器上同时运行,比如录象的app,聊天室的app。。。这些所有的app都通过fms自带的fms2_console.swf管理。
有一种协议叫rtmp
客户端和服务器端通信是使用协议rtmp的,现在在服务器端applications文件夹(当然偶的客户端和服务器端是一台机器了)里建个test1文件夹,你的地址就为rtmp:/test1 或者 rtmp://localhost/test1,注意两个地址中的 "/ "符号
打开flash
与服务器通信首先要建个NetConnection()
nc = new NetConnection(); 连接
nc.connect("rtmp://localhost/test1");
怎么知道连没连上呢?顺利连接服务器后会触发一个onStatus事件,自己trace一下info.code
nc.onStatus = function(info) {
//trace(info)
//trace(info.code)
for (i in info) {
trace(i+": "+info);
}
};
完整代码:
nc = new NetConnection();
nc.onStatus = function(info) {
trace(info.code);
if (info.code == "NetConnection.Connect.Success") {
trace("接通");
}
};
nc.connect("rtmp://localhost/test1");
视频,流
这个比较重要,但超简单,网上播放电影,在线录制,在线播放,视频会议,视频电话,全靠他了 ,下边我们先做一个最简单 录制和播放
录制视频
打开flash,新建一个fla,Ctrl + L 打开library,右键新建视频,确定。拉到舞台上起个名叫my_video
第一帧开始加代码
//从麦和设像头显示视频显示在my_video上
my_video.attachVideo(Camera.get());
my_video.attachAudio(Microphone.get());
//像以前一样连接
nc = new NetConnection();
nc.connect("rtmp://localhost/aaaa"); //注意这里,Applications文件夹里要有aaaa文件夹哦!
//可以理解为在nc连接上绑一个流
nsOut = new NetStream(nc);
//在流上加麦克风和视频头
nsOut.attachVideo(Camera.get());
nsOut.attachAudio(Microphone.get());
//发布 2.flv
nsOut.publish("2", "record");
第一个参数是文件名,后一个参数要"record"才是录制
把fla发布一下, 录一会儿,把视频关掉,打开你的
叉盘:\Program Files\Macromedia\Flash Media Server 2\applications\aaaa\,是不是多了个streams\_definst_
打开C:\Program Files\Macromedia\Flash Media Server 2\applications\aaaa\streams\_definst_
看见2.flv了吧。
播放flv ,用fms播放的flv目前是无法下载的,这可以保护你的版权,打开flash,新建一个fla ,Ctrl + L 打开library,右键新建视频,确定。 拉到舞台上,这回起个名叫view ,我们来播放你刚才录的那个视频
nc = new NetConnection();
nc.connect("rtmp://localhost/aaaa");
res = new NetStream(nc);
//view元件要加载res流
view.attachVideo(res);
view.attachAudio(res);
//播放
res.play("2");
现场流
上边做的都是先录制好了视频,然后才播放,网上的实时视频会议,视频电话是怎么做的呢?总不能先录好再播放吧?
这要用到现场流,现场流是指你连接到服务器后,你在发布的同时,其他人就可以实时的看到你,把上边录制视频的例子拿下来
nsOut.publish("2", "record"); 这句改成 nsOut.publish("2", "live");
把"record" 改成"live"后,就不会生成flv了,取而代之的是一个看不到的实时的视频流
ok 了,发布,这就是直播端了,同时再发布上边那个播放端,已经可以实时看见你了吧。现在你是用本机测试,等你有了服务器。其他人也能同时看见你了哦
到这里你已经可以自己做一个网页上的直播了,发布端不要让别人看到,让别人看你的播放端就好了 :) 至于为什么要用两个swf,因为目前为止你还不知道怎么样跟服务器之间传递消息,这样做可以避免这些东西,等你把后边的东西全都学完就可以在一个swf里,写个视频会议之类的东东了
远程共享
共享的概念就是让每个连接到服务器的swf都能实时的得到服务器端共享的数据。
一个人更改了这些数据,其他人都会看得到通知。可以想象聊天室里的发言,一个人发了以后其他人都可以看到。
待续......
2009年12月20日
什么是Flash Media Server ?
Flash大家庭里的一员,这个东东以前叫Flash Communication Server,传说中的FCS就是这个,现在改叫FMS了...
不见不知道哦,一见真可怕,adobe还有这么cool的东东,自从见了她,让我做些小东东的兴趣全没了,一心想研究这个
这东东能做什么?
视频录制,flash聊天室,在线视频会议,网络游戏
先要打开服务器
你在本机装的fms,本机就是服务器了哦!记得现在你的机器既是客户端又是服务端哦
开始===程序===Macromedia===Flash Media Server 2
有两个start****,都要打开,关时候两个都要关,如果你怕麻烦直接找tool文件夹里的批处理文件StartServerService.bat,双击他,他会帮你搞定地,想关就找StopServerService.bat。
applications文件夹
你可以在里边建一个文件夹例如叫 FirstApp,这就建了一个Application,以后所有此项目服务器端的flv文件啊,共享文件啊都会在这里边,有时服务器端需要写程序的时候里边会有个main.asc 文件,这个就是服务器端程序,服务器端程序目前只支持as1写,是在服务器上执行的,你也可以用trace调试,怎么trace管理服务器时候你会看到,你可能会建若干个app,在一台服务器上同时运行,比如录象的app,聊天室的app。。。这些所有的app都通过fms自带的fms2_console.swf管理。
有一种协议叫rtmp
客户端和服务器端通信是使用协议rtmp的,现在在服务器端applications文件夹(当然偶的客户端和服务器端是一台机器了)里建个test1文件夹,你的地址就为rtmp:/test1 或者 rtmp://localhost/test1,注意两个地址中的 "/ "符号
打开flash
与服务器通信首先要建个NetConnection()
nc = new NetConnection(); 连接
nc.connect("rtmp://localhost/test1");
怎么知道连没连上呢?顺利连接服务器后会触发一个onStatus事件,自己trace一下info.code
nc.onStatus = function(info) {
//trace(info)
//trace(info.code)
for (i in info) {
trace(i+": "+info);
}
};
完整代码:
nc = new NetConnection();
nc.onStatus = function(info) {
trace(info.code);
if (info.code == "NetConnection.Connect.Success") {
trace("接通");
}
};
nc.connect("rtmp://localhost/test1");
视频,流
这个比较重要,但超简单,网上播放电影,在线录制,在线播放,视频会议,视频电话,全靠他了 ,下边我们先做一个最简单 录制和播放
录制视频
打开flash,新建一个fla,Ctrl + L 打开library,右键新建视频,确定。拉到舞台上起个名叫my_video
第一帧开始加代码
//从麦和设像头显示视频显示在my_video上
my_video.attachVideo(Camera.get());
my_video.attachAudio(Microphone.get());
//像以前一样连接
nc = new NetConnection();
nc.connect("rtmp://localhost/aaaa"); //注意这里,Applications文件夹里要有aaaa文件夹哦!
//可以理解为在nc连接上绑一个流
nsOut = new NetStream(nc);
//在流上加麦克风和视频头
nsOut.attachVideo(Camera.get());
nsOut.attachAudio(Microphone.get());
//发布 2.flv
nsOut.publish("2", "record");
第一个参数是文件名,后一个参数要"record"才是录制
把fla发布一下, 录一会儿,把视频关掉,打开你的
叉盘:\Program Files\Macromedia\Flash Media Server 2\applications\aaaa\,是不是多了个streams\_definst_
打开C:\Program Files\Macromedia\Flash Media Server 2\applications\aaaa\streams\_definst_
看见2.flv了吧。
播放flv ,用fms播放的flv目前是无法下载的,这可以保护你的版权,打开flash,新建一个fla ,Ctrl + L 打开library,右键新建视频,确定。 拉到舞台上,这回起个名叫view ,我们来播放你刚才录的那个视频
nc = new NetConnection();
nc.connect("rtmp://localhost/aaaa");
res = new NetStream(nc);
//view元件要加载res流
view.attachVideo(res);
view.attachAudio(res);
//播放
res.play("2");
现场流
上边做的都是先录制好了视频,然后才播放,网上的实时视频会议,视频电话是怎么做的呢?总不能先录好再播放吧?
这要用到现场流,现场流是指你连接到服务器后,你在发布的同时,其他人就可以实时的看到你,把上边录制视频的例子拿下来
nsOut.publish("2", "record"); 这句改成 nsOut.publish("2", "live");
把"record" 改成"live"后,就不会生成flv了,取而代之的是一个看不到的实时的视频流
ok 了,发布,这就是直播端了,同时再发布上边那个播放端,已经可以实时看见你了吧。现在你是用本机测试,等你有了服务器。其他人也能同时看见你了哦
到这里你已经可以自己做一个网页上的直播了,发布端不要让别人看到,让别人看你的播放端就好了 :) 至于为什么要用两个swf,因为目前为止你还不知道怎么样跟服务器之间传递消息,这样做可以避免这些东西,等你把后边的东西全都学完就可以在一个swf里,写个视频会议之类的东东了
远程共享
共享的概念就是让每个连接到服务器的swf都能实时的得到服务器端共享的数据。
一个人更改了这些数据,其他人都会看得到通知。可以想象聊天室里的发言,一个人发了以后其他人都可以看到。
待续......