我采用的是在fms的applications文件夹下赋值live文件夹改名为videoChat
配置fms.ini增加程序路径
配置videoChat里Application.xml文件
<StreamManager>
<VirtualDirectory>
<!-- Specifies application specific virtual directory mapping for streams. -->
<Streams>/;${VIDEOCHAT_DIR}</Streams>
</VirtualDirectory>
</StreamManager>
提个录制的问题:
根据网上资料:main.far中都改成yes,true但是反而没有权限了。。求助各位大侠!!都倒腾好几天了。。
另外问个小问题:写其他录制例子的时候不会自动生成streams文件夹。。特此求助,请各位大侠指点一二!
代码贴出:
import flash.text.TextFormat;
import flash.display.*;
import flash.text.*;
import flash.net.*;
import flash.events.*;
import flash.errors.*;
import flash.system.*;
import fl.managers.StyleManager;
import fl.controls.List;
import fl.data.DataProvider;
import fl.controls.TextArea;
//安全域
Security.allowDomain("*");
Security.allowInsecureDomain("*");
//定义变量
var fmsPath:String;
var myNC:NetConnection;
var myNS:NetStream;
var myNS2:NetStream;;//分支视频流 专门用来录像
var time:String = null;//定义时间寄存器
var userName:String;
var msg:String;
var peopleArray:Array;
var mySO:SharedObject;
var tmpName:String;
var now:Date;
var mySubNS:NetStream;
var myCam:Camera;
var myMic:Microphone;
//组件样式
var myTF:TextFormat=new TextFormat();
myTF.size = 12;
StyleManager.setStyle("textFormat",myTF);
userName = "guest" + int(Math.random() * 10000);
userName1.text = userName;
userName2.text = "所有人";
now=new Date();
peopleList.addEventListener(MouseEvent.CLICK,selectChatTo);
peopleList.addEventListener(MouseEvent.DOUBLE_CLICK,getVideo);
plays.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF);
//链接
myNC=new NetConnection();
myNC.client = this;
myNC.objectEncoding = ObjectEncoding.AMF0;
myNC.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
myNC.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncError);
myNC.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityError);
myNC.connect("rtmp://192.168.1.4/videoChat",userName);
function netStatus(event:NetStatusEvent):void
{
trace(event.info.code);
switch (event.info.code)
{
case "NetConnection.Connect.Success" :
chatContent.htmlText += "连接成功!";
setMySO();
sendBtn.addEventListener(MouseEvent.MOUSE_DOWN,sendMsgByMouse);
stage.addEventListener(KeyboardEvent.KEY_DOWN,sendMsgByKey);
record.addEventListener(MouseEvent.CLICK,onRecord);
stops.addEventListener(MouseEvent.CLICK,onStop);
recordPublish();
publishStream();
break;
case "NetConnection.Connect.Failed" :
chatContent.htmlText += "连接失败!";
break;
case "NetConnection.Connect.Rejected" :
chatContent.htmlText += event.info.application.message;
break;
}
}
function securityError(event:SecurityErrorEvent):void
{
chatContent.htmlText += "安全性错误!";
}
//创建一个远程对象
function setMySO():void
{
mySO = SharedObject.getRemote("mySO",myNC.uri,false);
mySO.addEventListener(SyncEvent.SYNC,mySoSync);
mySO.connect(myNC);
}
//利用远程共享对象创建在线列表
function asyncError(event:AsyncErrorEvent):void
{
}
function mySoSync(e:SyncEvent):void
{
peopleArray = new Array ;
for (var tmp in mySO.data)
{
peopleArray.push(tmp);
}
var tmpDP:DataProvider = new DataProvider ;
for (var i=0; i<peopleArray.length; i++)
{
tmpName = peopleArray[i];
tmpDP.addItem({label:tmpName});
}
tmpDP.sortOn("label");
tmpDP.addItemAt({label:"所有人"},0);
peopleList.dataProvider = tmpDP;
}
function sendMsgByMouse(event:MouseEvent):void
{
sendMsg();
}
function sendMsgByKey(event:KeyboardEvent):void
{
if (event.keyCode == 13)
{
sendMsg();
}
}
function sendMsg():void
{
if (willSendMsg.length > 0)
{
if (userName2.text = userName1.text)
{
chatContent.htmlText += "您不能对自己发言" + "\n";
chatContent.verticalScrollPosition = chatContent.maxVerticalScrollPosition;
}
else
{
var allPeople:Array = new Array ;
for (var i=0; i<peopleList.length; i++)
{
if (peopleList.getItemAt(i).label != "所有人" && peopleList.getItemAt(i).label != userName1.text)
{
allPeople.push(peopleList.getItemAt(i).label);
}
}
//利用html标签格式化被发送的聊天内容,突出显示用户名和发送时间
msg="<font color='#ff0000'>"+userName1.text+"</font>"+"对"+"<font color='#ff0000'>"+userName2.text+
"</font>"+"说"+"("+"<font color='#0000ff'>"+now.getHours()+":"+((now.getMinutes()<10)?"0"+now.getMinutes():
now.getMinutes())+":"+((now.getSeconds()<10)?"0"+now.getSeconds():now.getSeconds())+"</font>"+")"+":"+"\n"
+willSendMsg.text+"\n";
if (userName2.text == null)
{
userName2.text = "所有人";
}
//呼叫服务器端函数,并传递参数
myNC.call("msgFromClient",null,userName1.text,userName2.text,msg,allPeople);
chatContent.htmlText += msg;
chatContent.verticalScrollPosition = chatContent.maxVerticalScrollPosition;
willSendMsg.text = "";
}
}
}
//客户端获取服务器信息
function msgFromSrvr(msg)
{
trace(msg);
chatContent.htmlText += msg;
chatContent.verticalScrollPosition = chatContent.maxVerticalScrollPosition;
}
//选择聊天对象
function selectChatTo(event:MouseEvent):void
{
userName2.text = peopleList.selectedItem.label;
}
//发布自己视频
function publishStream():void
{
liveVideo.visible = true;
myCam = Camera.getCamera();
myMic = Microphone.getMicrophone();
liveVideo.attachCamera(myCam);
myNS = new NetStream(myNC);
myNS.client = this;
myNS.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
myNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncError);
myNS.attachCamera(myCam);
myNS.attachAudio(myMic);
myNS.publish(userName1.text,"live");
}
//发布录制的视频
function recordPublish():void
{
myNS2 = new NetStream(myNC);
myNS2.client = this;
myNS2.addEventListener(NetStatusEvent.NET_STATUS,netStreamHandler);
myNS2.attachCamera(myCam);
myNS2.attachAudio(myMic);
myNS2.publish(userName1.text, "live");
}
//NetStream事件处理器
function netStreamHandler(e:NetStatusEvent):void
{
var s:String = e.info.code;
switch (s)
{//停止录像时,再记录当前时间,并以此为标志位,发不到FMS
case "NetStream.Record.Stop" :
myNS2 = new NetStream(myNC);
myNS2.attachAudio(Microphone.getMicrophone());
myNS2.attachCamera(Camera.getCamera());
myNS2.publish(time,"live");
break;
}
}
//显示对方视频
function getVideo(event:MouseEvent):void
{
if (userName2.text != userName1.text)
{
whoseVideo.text = userName2.text + "的视频";
mySubNS = new NetStream(myNC);
mySubNS.client = this;
mySubNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncError);
mySubNS.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityError);
mySubNS.play(userName2.text);
}
else
{
mySubNS.close();
liveVideo.clear();
whoseVideo.text = "我的视频";
liveVideo.attachCamera(myCam);
}
}
//录制视频
function onRecord(event:MouseEvent):void
{
myNS2.attachCamera(myCam);
myNS2.attachAudio(myMic);
myNS2.publish("videoC", "record");
}
function onStop(event:MouseEvent):void
{
myNS2.close();
}
//播放
var fl_Loader:Loader;
function fl_ClickToLoadUnloadSWF(event:MouseEvent):void
{
fl_Loader = new Loader();
fl_Loader.load(new URLRequest("Legendexc.swf"));
fl_Loader.addEventListener(Event.COMPLETE,onComplete);
addChild(fl_Loader);
//加载的播放器的swf里处理视频播放的代码
}
function onComplete(e:Event):void{
var loader:Loader=e.currentTarget as Loader;
loader.content.width=800;
}
分享到:
相关推荐
fms3.5注册机 (肯定可用)fms3.5注册机 (肯定可用)fms3.5注册机 (肯定可用)fms3.5注册机 (肯定可用)
流媒体服务器FMS3.5 sn:1373-5465-5574-9110-6240-7230
Flash+Media+Server3.5使用教程中文版本··························
Adobe FMS3.5 PPT 教程.学习FMS必看!
破解FMS4.0 FMS3.5,本人FMS4.0成功
FMS聊天室FMS聊天室FMS聊天室FMS聊天室FMS聊天室
FMS学习教程,FMS视频,视频聊天,视频录制,FMS,AS3
fms,flash,视频聊天fms,flash,视频聊天fms,flash,视频聊天
flash+fms2视频聊天室-附带源码 源码在 html页面上有下载的超链接
FMS+FLASH+在线视频录制+ASP+Access. <br>编者的话 <br>自己骗写的,下载本文件的朋友请自己研究,该注释的,我已经打好了详细注释,修改不困难,这样还不懂的话我也没有办法,另外还附了播放器。 <br>不...
通过FMS实现时时视频聊天(Flash|Flex)源码
Fms 视频录制屏幕共享 附源码.doc
此文档是由flashmediaserver_3.5_dev_guide翻译而来,只是简单概括,详细内容请查看原文档。
简易聊天室 flash多人聊天 FMS实现
FlashMediaServer3.5 简称FMS3.5 Flash大家庭里的一员,这个东西以前叫Flash Communication Server,传说中的FCS就是...视频录制啊,flash聊天室啊,在线视频会议啊啊, 网络游戏, 他都能做到。 下载一个吧~~~亲~~~~~
最新的关于flashmeidasever的
一个FMS3.5 服务端应用程序。 服务器端WEB服务: 用于向FMS服务应用程序EdhRecPostServer提供授权信息查询服务。 服务器端FTP服务: 用户能通过此FTP服务,从FMS服务器下载FLV文件到用户的服务器上。 用户WEB应用...
FMS视频录制监控,播放,完美实现Demo。
NULL 博文链接:https://abstractforever.iteye.com/blog/524123
以下为引用的内容: private function onPublishClick(evt:MouseEvent):void { nc = new NetConnection();...以live的形式发布的流不会在FMS里生成.fla文件,不同于“record”录制视频流生成.flv的视频文件。