Показать сообщение отдельно
  #1 (permalink)  
Старый 15.10.2011, 16:48
Аватар для Sadist_dead
Профессор
Отправить личное сообщение для Sadist_dead Посмотреть профиль Найти все сообщения от Sadist_dead
 
Регистрация: 08.08.2011
Сообщений: 191

flash media server интересная все таки штука....
Вообщем только сегодня впервые начал разбираться с
flash media server интересная все таки штука....
и вот что наковырял
скрипт сначала спрашивает у вас разрешения показать камеру, разрешаем видим свою довольную рожу....
нажимаем записать ....записываем свою довольную рожу....
и после воспроизводим запись уже с сервера....
я вот только уловить не могу как сделать чтобы фаил проходил через сервер.... в реал тайме.. то есть не сохранял.... а вещал постоянно ...



package
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	
	import flash.net.NetConnection;
	import flash.events.NetStatusEvent;
	import flash.net.NetStream;
	
	import flash.media.Camera;
	import flash.media.Microphone;
	import flash.media.Video;
	
	public class Record extends MovieClip
	{
		private var nc:NetConnection;
		private var sendStream:NetStream;
		private var receiveStream:NetStream;
		
		private var camera:Camera;
		private var mic:Microphone;
		private var video:Video;
		private var player:Video;
		
		private var metaObject:Object;

		public function Record()
		{
			nc = new NetConnection();
			nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
			nc.connect("rtmp://localhost/test");			
		}
		
		private function netStatusHandler(event:NetStatusEvent):void
		{
			switch (event.info.code)
			{
				case "NetConnection.Connect.Success":
					setUpMedia();
					break;
				default:
					trace(event.info.code);				
			}
		}
		
		private function setUpMedia()
		{
			camera = Camera.getCamera();
			camera.setMode(260, 180, 24);
			camera.setQuality(0, 90);
			mic = Microphone.getMicrophone();
			
			video = new Video(camera.width, camera.height);
			video.x = 10;
			video.y = 20;
			video.attachCamera(camera);
			addChild(video);

			sendStream = new NetStream(nc);
			recordBtn.addEventListener(MouseEvent.CLICK, startRecord);
					
			player = new Video(camera.width, camera.height);
			player.x = 280;
			player.y = 20;
			addChild(player);

			receiveStream = new NetStream(nc);
			metaObject = new Object();
			receiveStream.client = metaObject;
			metaObject.onMetaData = getMeta;
			
			playBtn.addEventListener(MouseEvent.CLICK, startPlay);
		}
		
		private function getMeta(mdata:Object):void
		{
			for (var property:Object in mdata)
			{
				trace(property + " = " + mdata[property]);
			}
		}		
		
		private function startRecord(event:MouseEvent):void
		{
			if (sendStream)
			{
				recordBtn.label = "Стоп";
				recordBtn.removeEventListener(MouseEvent.CLICK, startRecord);
				recordBtn.addEventListener(MouseEvent.CLICK, stopRecord);
				
				sendStream.attachAudio(mic);
				sendStream.attachCamera(camera);
				sendStream.publish(recordTxt.text, "record");
			}
		}
		
		private function stopRecord(event:MouseEvent):void
		{
			sendStream.close();
			playTxt.text = recordTxt.text;
			recordBtn.label = "Запись";
			recordBtn.removeEventListener(MouseEvent.CLICK, stopRecord);
			recordBtn.addEventListener(MouseEvent.CLICK, startRecord);
		}

		private function startPlay(event:MouseEvent):void
		{
			if(receiveStream)
			{
				playBtn.label = "Стоп";
				player.attachNetStream(receiveStream);
				receiveStream.play(playTxt.text);
				
				playBtn.removeEventListener(MouseEvent.CLICK, startPlay);
				playBtn.addEventListener(MouseEvent.CLICK, stopPlay);
			}
		}

		private function stopPlay(event:MouseEvent):void
		{
			playBtn.label = "Показать";
			receiveStream.play(false);
			receiveStream.close();
			
			playBtn.removeEventListener(MouseEvent.CLICK, stopPlay);
			playBtn.addEventListener(MouseEvent.CLICK, startPlay);
		}


	}
}
Ответить с цитированием