Вообщем только сегодня впервые начал разбираться с
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);
}
}
}