我采用的是在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;
}
分享到:
相关推荐
1. **视频流式处理**:FMS 3.5能高效地对视频进行流式传输,使得内容能够在播放时即时加载,提升用户体验。 2. **ActionScript 3.0 支持**:利用AS3,开发者可以创建更复杂的应用,实现与服务器的深度交互。 3. **...
Adobe FMS3.5,全称Adobe Flash Media Server 3.5,是一款强大的实时流媒体服务器,用于处理和分发富媒体内容,如音频、视频和数据。它提供了丰富的功能,包括实时视频直播、动态流媒体、数字视频录像(DVR)以及与...
fms3.5注册机 (肯定可用)fms3.5注册机 (肯定可用)fms3.5注册机 (肯定可用)fms3.5注册机 (肯定可用)
流媒体服务器FMS3.5 sn:1373-5465-5574-9110-6240-7230
标题"FMS3.5.rar_as3"提示我们这个压缩包主要包含了与Adobe Flash Media Server (FMS) 3.5版本相关的学习资料,且与ActionScript 3 (AS3)有关。AS3是Flash平台上用于创建动态内容、交互式应用程序和网络服务的主要...
1. **实时视频流传输**:FMS3.5支持实时视频流传输,能够实现高质量的实时音视频通信,适用于直播、在线教育、远程会议等多种场景。 2. **内容分发网络(CDN)集成**:通过与CDN的无缝集成,FMS3.5能够在全球范围内...
《FMS3.5开发指南》是一份针对Adobe Flash Media Server 3.5的详细教程,旨在帮助开发者理解和创建富媒体应用。FMS是用于提供流媒体和交互式服务的服务器,支持即时启动、直播视频流和根据用户带宽调整流速率等功能...
FMS 3.5作为网络中心存储音频和视频媒体文件,当用户请求时,通过实时消息协议(RTMP)与Flash Player进行通信,实现流畅的播放体验。RTMP是一种专为Flash设计的传输协议,能实现实时数据传输,且不需下载整个文件到...
破解FMS4.0 FMS3.5,本人FMS4.0成功
在本篇博文中,我们将深入探讨“FMS3系列”的第五部分,主要关注如何通过Adobe Flash Media Server (FMS) 3实现实时视频聊天功能。这个话题对于开发交互性强、实时性高的网络应用来说至关重要,特别是对于那些需要...
- **聊天室功能**:FMS聊天室是基于FMS构建的实时通信平台,用户可以通过文字、语音或视频进行互动交流。 - **实时性**:利用FMS的实时传输特性,确保消息即时发送和接收,实现低延迟的聊天体验。 - **多用户支持...
文档"《Fms 视频录制屏幕共享 附源码.doc》"主要涉及使用Adobe Flash Media Server (FMS) 实现屏幕共享和视频录制的功能。FMS 是一款强大的实时流媒体服务器,它允许开发者创建实时交互式的多媒体应用程序,包括视频...
Flash Media Server 3.5 (FMS 3.5) 是 Adobe 公司推出的一款强大的多媒体服务器软件,主要用于处理和流式传输音频和视频内容。这款服务器是基于实时消息协议(RTMP)的,允许SWF文件与服务器之间的高效数据交换,特别...
【标题】中的“通过FMS实现时时视频聊天(Flash|Flex)源码”是指使用Adobe的Flash Media Server (FMS)技术,结合Flash和Flex这两种编程语言,开发出一款能够实现实时视频通信的应用程序。这个标题暗示了我们将在...
【标题】:“FMS制作聊天室例子”是一个关于利用Flash Media Server(FMS)构建实时聊天室的应用示例。FMS是Adobe公司提供的一款强大的流媒体服务器,它能够支持实时的音频、视频通信以及数据共享功能,非常适合用来...
FMS(Flash Media Server)是Adobe公司推出的一款流媒体服务器,它广泛用于实时视频和音频的传输。在这个“fms之P2P视频聊天”项目中,我们将探讨如何利用FMS和P2P技术来实现高清视频聊天功能,并可能将其扩展到更多...
【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...
【标题】"FMS视频聊天程序"涉及到的核心技术是Adobe Flash Media Server (FMS)以及基于Flash的视频聊天应用开发。FMS是一个强大的实时流媒体服务器,它为开发者提供了创建实时交互式视频和音频应用程序的能力。在Web...
1. **实时播放**:除了录制,FMS还提供了实时播放功能,用户可以通过Web浏览器或其他支持Flash的客户端实时观看监控画面,无需等待视频上传完成。 2. **视频流分发**:FMS使用高效的流媒体技术,如HLS...