`
忧里修斯
  • 浏览: 426805 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

简易视频聊天

    博客分类:
  • flex
阅读更多
文件1、

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FF7999, #FE7F9D]" height="576">
	<mx:Panel x="102" y="86" width="340" height="282" layout="absolute" title="视频发布端">
		<mx:VideoDisplay x="0" y="0" width="320" height="240" id="PublishVideo"/>
	</mx:Panel>
	<mx:Panel x="497" y="86" width="340" height="282" layout="absolute" title="视频接收端" id="playPan">
		<mx:VideoDisplay x="0" y="0" width="320" height="240" id="RecordVideo" />
	</mx:Panel>
	<mx:Button x="243" y="387" label="发布视频" fontWeight="normal" click="onPublishClick()"/>
	<mx:Button x="627" y="387" label="接收视频" fontWeight="normal" click="onRecordClik()"/>
	<mx:Script>
		<![CDATA[
			import flash.events.*;
			
			private var pnc:NetConnection;
			private var rnc:NetConnection;
			private var pns:NetStream; //发布流
			private var rns:NetStream;
			private var cam:Camera;
			private var mic:Microphone;
			private var video:Video;
			
			private function onPublishClick():void
			{
				pnc = new NetConnection();
				pnc.connect("rtmp://192.168.10.135/p2p/mem88/");
				pnc.addEventListener(NetStatusEvent.NET_STATUS,onPublishNetStatusHandler);
				cam = Camera.getCamera();
				mic = Microphone.getMicrophone();
				this.PublishVideo.attachCamera(cam);
			}

			private function onPublishNetStatusHandler(evt:NetStatusEvent):void
			{
				this.lbPublish.text=evt.info.code;
				if(evt.info.code=="NetConnection.Connect.Success")
				{
					pns = new NetStream(pnc);
					pns.attachAudio(mic);
					pns.attachCamera(cam);
					pns.client=this;
					pns.publish("88stream","live");
				}
			}
			
			private function onRecordClik():void
			{
				rnc = new NetConnection();
				rnc.connect("rtmp://192.168.10.135/p2p/mem135/");
				rnc.addEventListener(NetStatusEvent.NET_STATUS,onReordNetStatusHandler);
			}
			
			private function onReordNetStatusHandler(evt:NetStatusEvent):void
			{
				this.lbRecord.text=evt.info.code;
				if(evt.info.code=="NetConnection.Connect.Success")
				{
					rns = new NetStream(rnc);
					rns.client=this;
					video = new Video();
					video.width=320;
					video.height=240;
					video.attachNetStream(rns);
					this.RecordVideo.addChild(video);
					rns.play("135stream","live");  //这里的publishName必须与发布流的流名一致
				}
			}
		]]>
	</mx:Script>
	<mx:Label x="125" y="443" width="304" id="lbPublish"/>
	<mx:Label x="528" y="443" width="296" id="lbRecord"/>
</mx:Application>


2、文件2

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FF7999, #FE7F9D]" height="576">
	<mx:Panel x="102" y="86" width="340" height="282" layout="absolute" title="视频发布端">
		<mx:VideoDisplay x="0" y="0" width="320" height="240" id="PublishVideo"/>
	</mx:Panel>
	<mx:Panel x="497" y="86" width="340" height="282" layout="absolute" title="视频接收端" id="playPan">
		<mx:VideoDisplay x="0" y="0" width="320" height="240" id="RecordVideo" />
	</mx:Panel>
	<mx:Button x="243" y="387" label="发布视频" fontWeight="normal" click="onPublishClick()"/>
	<mx:Button x="627" y="387" label="接收视频" fontWeight="normal" click="onRecordClik()"/>
	<mx:Script>
		<![CDATA[
			import flash.events.*;
			
			private var pnc:NetConnection;
			private var rnc:NetConnection;
			private var pns:NetStream; //发布流
			private var rns:NetStream;
			private var cam:Camera;
			private var mic:Microphone;
			private var video:Video;
			
			private function onPublishClick():void
			{
				pnc = new NetConnection();
				pnc.connect("rtmp://192.168.10.135/p2p/mem135/");
				pnc.addEventListener(NetStatusEvent.NET_STATUS,onPublishNetStatusHandler);
				cam = Camera.getCamera();
				mic = Microphone.getMicrophone();
				this.PublishVideo.attachCamera(cam);
			}

			private function onPublishNetStatusHandler(evt:NetStatusEvent):void
			{
				this.lbPublish.text=evt.info.code;
				if(evt.info.code=="NetConnection.Connect.Success")
				{
					pns = new NetStream(pnc);
					pns.attachAudio(mic);
					pns.attachCamera(cam);
					pns.client=this;
					pns.publish("135stream","live");
				}
			}
			
			private function onRecordClik():void
			{
				rnc = new NetConnection();
				rnc.connect("rtmp://192.168.10.135/p2p/mem88/");
				rnc.addEventListener(NetStatusEvent.NET_STATUS,onReordNetStatusHandler);
			}
			
			private function onReordNetStatusHandler(evt:NetStatusEvent):void
			{
				this.lbRecord.text=evt.info.code;
				if(evt.info.code=="NetConnection.Connect.Success")
				{
					rns = new NetStream(rnc);
					rns.client=this;
					video = new Video();
					video.width=320;
					video.height=240;
					video.attachNetStream(rns);
					this.RecordVideo.addChild(video);
					rns.play("88stream","live");  //这里的publishName必须与发布流的流名一致
				}
			}
		]]>
	</mx:Script>
	<mx:Label x="125" y="443" width="304" id="lbPublish"/>
	<mx:Label x="528" y="443" width="296" id="lbRecord"/>
</mx:Application>
分享到:
评论
1 楼 奔跑的蓝猫 2012-05-10  
楼主你好!请问这两个文件怎么使用啊?
楼主能把源代码发给我下吗?我最近在座的系统中想加入视频对话功能,一直不知如何下手。谢谢!h2pei@163.com

相关推荐

Global site tag (gtag.js) - Google Analytics