Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   низкое качество видео с вебки (http://www.flasher.ru/forum/showthread.php?t=210704)

neonoviiwolf 24.04.2015 03:42

низкое качество видео с вебки
 
Доброго!
Решил немного побаловаться с вебкой, набросал простенький код, что бы подключиться к вебке, но появилась проблема, аир выводит изображение в крайне паршивом качестве, реально камера может намного больше (в других приложениях, хоть тот же скайп, качество видео значительно лучше), в чём может быть проблема?

Добавлено через 3 минуты
ещё вопрос, как поминаю, одним аиром не обойтись, если я хочу записывать видео?

Добавлено через 14 минут
с первым вопросом разобрался, ответ тут ищем setMode

caseyryan 24.04.2015 08:00

http://www.joristimmerman.be/wordpre...flv-using-air/

undefined 24.04.2015 10:15

Цитата:

ещё вопрос, как поминаю, одним аиром не обойтись, если я хочу записывать видео?
Да, понадобится еще какой-нибудь сервер(можно на локалхосте).Например этот
Устанавливаешь, запускаешь. Вот код "шпионской " флэшки.
Код AS3:

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;
}

log_tf - обычное текстовое поле для логирования (должно уже лежать на сцене).Ну и red5 должен уже стоять на локалхосте.
Флэшка ждет пока вебка не заметит движение.Как заметила - начинается запись. Готовые flv складываются в папочки с соответствующими датами где-то внутри red5
upd:Чувствительность камеры выставляется тут
Код AS3:

cam.setMotionLevel(25,5000);


neonoviiwolf 27.04.2015 02:24

Спасибо за отзывы!
Я не очень силён в AS3, переделал код, что бы работал в FD, но вот щас столкнулся с проблемой, наверно простой
Цитата:

log_tf - обычное текстовое поле для логирования (должно уже лежать на сцене)
а в FD это как сделать? Ну я могу во флеш проф выгрузить библиотеку swc, а что нужно в эту библиотеку запихнуть? Я вон ради интереса выгрузил простой мувик с таким именем, вроде даж как-то стартует, но сразу виснет, а FD ругается на "exception, information=TypeError: Error #1006: appendText is not a function." Помогите плиз
Код AS3:

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;
                }
        }
}


undefined 27.04.2015 11:34

так ты добавляешь не само текстовое поле, а мувиклип с текстовым полем, у него естественно нет методов текстФилда.Попробуй так:
в объявлениях верни
Код AS3:

var log_tf:TextField;

И дальше в самом начале функции Main:
Код AS3:

var mc:log_tf_mc = new log_tf_mc();
log_tf=mc.getChildAt(0) as TextField;

Ток проследи чтоб внутри мувиклипа log_tf_mc тектовое поле было единственным ребенком.
Если опять не заведется - убирай нах все упоминания о log_tf и меняй функцию log на
Код AS1/AS2:

function log(s:String):void
{
trace(s);
}



Часовой пояс GMT +4, время: 10:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.