улучшить качество записанного видео с помощью медиа-сервера Red5 и приложения oflaDemo - PullRequest
2 голосов
/ 15 декабря 2011

что я делаю сейчас:

cam = Camera.getCamera();   // Get default camera. 
mic = Microphone.getMicrophone();   // Get the microphone
cam.setMode(800, 600, 25);
cam.setQuality(0,90);
videoDisplay.attachCamera(cam);

и когда пользователь нажимает кнопку для записи, я делаю следующее:

private function netStatusHandler(e:NetStatusEvent):void  {    
            var code:String = e.info.code;              

            Alert.show("code = " + code);   
            if(code == "NetConnection.Connect.Success"){  //in case of recording...

                ns = new NetStream(nc); 
                ns.attachCamera(cam);
                ns.attachAudio(mic);

                ns.publish( "file1", "record" );

            }    
            else{    
                trace(code);   
            }  
        }

        private function start_rec():void{
            nc = new NetConnection();
            nc.connect("rtmp://localhost/oflaDemo");
            nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
        }

, но качество записи ужасное... я использую тот же код, что и выше, чтобы воспроизвести видео вместо ns.publish, я делаю ns.play (), и показанное видео не соответствует ожиданиям, хотя, когда я ns.play (), готовые FLV-видео, используемые в качестве примеровred5 они играют идеально ... что-то не так с тем, как я записываю?с камерой?что не так?любая идея ??

Код для воспроизведения видео:

                     var nsClient:Object = {};
            nsClient.onMetaData = ns_onMetaData;

            nc = new NetConnection();
            nc.connect(null);
            ns = new NetStream(nc);
            ns.client = nsClient;

            video = new Video(myVid.width,myVid.height);
            video.attachNetStream(ns);
            video.smoothing=true;
            myVid.addChild(video);

            ns.play("http://localhost:5080/oflaDemo/recordings/file1.flv");`

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011
camera = Camera.getCamera();
mic = Microphone.getMicrophone();
mic.setLoopBack(false); 
mic.setUseEchoSuppression(true);
camera.setMode(640,480,30);
camera.setQuality(65536,90);

в camera.setQuality(65536,90); U может сделать 100 для лучшего качества, однако это ваш выбор.Надеемся, что с этими изменениями качество будет значительно улучшено.Также качество зависит от вашей веб-камеры тоже.

0 голосов
/ 08 мая 2012

Возможно, проблема в пропускной способности. Попробуйте установить ограничитель пропускной способности, а затем попробуйте запись. У вас будет очень плохой минус. Если у вас высокоскоростное соединение, все будет хорошо. Если вы используете протокол RTMP, то это означает, что все должно быть в режиме реального времени. Поэтому, если пропускная способность низкая, кадры будут отброшены.

...