![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
Доброго!
Решил немного побаловаться с вебкой, набросал простенький код, что бы подключиться к вебке, но появилась проблема, аир выводит изображение в крайне паршивом качестве, реально камера может намного больше (в других приложениях, хоть тот же скайп, качество видео значительно лучше), в чём может быть проблема? Добавлено через 3 минуты ещё вопрос, как поминаю, одним аиром не обойтись, если я хочу записывать видео? Добавлено через 14 минут с первым вопросом разобрался, ответ тут ищем setMode |
|
|||||
|
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
Цитата:
Устанавливаешь, запускаешь. Вот код "шпионской " флэшки. import flash.media.*; import flash.net.*; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.ActivityEvent; var mic:Microphone = Microphone.getMicrophone(); var cam:Camera = Camera.getCamera(); cam.setMotionLevel(25,5000); cam.setMode(320,240,30,false); cam.addEventListener(ActivityEvent.ACTIVITY,hMotion,false,0,true); //mic.setLoopBack(true); var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, hNS,false,0,true); var ns:NetStream; //reconnect(); var video:Video=new Video(stage.stageWidth,stage.stageHeight); addChild(video); addChild(log_tf); log_tf.text=""; video.attachCamera(cam); function hMotion(e:ActivityEvent):void { if (e.activating) { log("camera on"); if (!nc.connected) reconnect(); } else { log("camera off"); if (nc.connected) nc.close(); } } function reconnect():void { if (nc.connected) nc.close(); nc.connect("rtmp://127.0.0.1"); } function hNS(e:NetStatusEvent):void{ log(e.info.code); switch(e.info.code){ case "NetConnection.Connect.Success": hConnect(); break; case "NetConnection.Connect.Closed": break; } } function hConnect():void { ns=new NetStream(nc); // add a listener so we know when our stuff is ready for recording ns.addEventListener(NetStatusEvent.NET_STATUS, hNS,false,0,true); ns.client={onMetaData:function(e) {trace("metadata:",e);trace(ns.bufferTime);}}; ns.attachAudio(mic); ns.attachCamera(cam); var date:Date=new Date(); var h=date.getHours(); var m=date.getMinutes(); var s=date.getSeconds(); var d=date.getDay(); var mo=date.getMonth(); if (h<10) h="0"+h; if (m<10) m="0"+m; if (s<10) s="0"+s; if (d<10) d="0"+d; if (mo<10) mo="0"+mo; ns.publish(h+"-"+m+"-"+s+"_"+d+"_"+mo+"_"+date.getFullYear(), 'record'); } function log(s:String):void { log_tf.appendText(((log_tf.text.length==0)?"":"\n")+s); log_tf.scrollV=log_tf.numLines; } Флэшка ждет пока вебка не заметит движение.Как заметила - начинается запись. Готовые flv складываются в папочки с соответствующими датами где-то внутри red5 upd:Чувствительность камеры выставляется тут Последний раз редактировалось undefined; 24.04.2015 в 10:59. |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
Спасибо за отзывы!
Я не очень силён в AS3, переделал код, что бы работал в FD, но вот щас столкнулся с проблемой, наверно простой Цитата:
package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.media.*; import flash.net.*; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.ActivityEvent; [SWF(width="800",height="600",frameRate="60",backgroundColor="0x1B1B1B")] public class Main extends Sprite { var mic:Microphone = Microphone.getMicrophone(); var cam:Camera = Camera.getCamera(); var nc:NetConnection = new NetConnection(); var ns:NetStream; var log_tf:log_tf_mc = new log_tf_mc(); public function Main() { cam.setMotionLevel(25, 5000); cam.setMode(320, 240, 30, false); cam.addEventListener(ActivityEvent.ACTIVITY, hMotion, false, 0, true); nc.addEventListener(NetStatusEvent.NET_STATUS, hNS, false, 0, true); var video:Video = new Video(stage.stageWidth, stage.stageHeight); addChild(video); addChild(log_tf); log_tf.text = ""; video.attachCamera(cam); } function hMotion(e:ActivityEvent):void { if (e.activating) { log("camera on"); if (!nc.connected) reconnect(); } else { log("camera off"); if (nc.connected) nc.close(); } } function reconnect():void { if (nc.connected) nc.close(); nc.connect("rtmp://127.0.0.1"); } function hNS(e:NetStatusEvent):void { log(e.info.code); switch (e.info.code) { case "NetConnection.Connect.Success": hConnect(); break; case "NetConnection.Connect.Closed": break; } } function hConnect():void { ns = new NetStream(nc); // add a listener so we know when our stuff is ready for recording ns.addEventListener(NetStatusEvent.NET_STATUS, hNS, false, 0, true); ns.client = {onMetaData: function(e) { trace("metadata:", e); trace(ns.bufferTime); }}; ns.attachAudio(mic); ns.attachCamera(cam); var date:Date = new Date(); var h = date.getHours(); var m = date.getMinutes(); var s = date.getSeconds(); var d = date.getDay(); var mo = date.getMonth(); if (h < 10) h = "0" + h; if (m < 10) m = "0" + m; if (s < 10) s = "0" + s; if (d < 10) d = "0" + d; if (mo < 10) mo = "0" + mo; ns.publish(h + "-" + m + "-" + s + "_" + d + "_" + mo + "_" + date.getFullYear(), 'record'); } function log(s:String):void { log_tf.appendText(((log_tf.text.length == 0) ? "" : "\n") + s); log_tf.scrollV = log_tf.numLines; } } } |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
так ты добавляешь не само текстовое поле, а мувиклип с текстовым полем, у него естественно нет методов текстФилда.Попробуй так:
в объявлениях верни И дальше в самом начале функции Main: Ток проследи чтоб внутри мувиклипа log_tf_mc тектовое поле было единственным ребенком. Если опять не заведется - убирай нах все упоминания о log_tf и меняй функцию log на |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|