使用Red5媒体服务器和oflaDemo应用程序提高录制视频的质量

时间:2011-12-15 15:41:54

标签: flex video actionscript record red5

我现在所做的是:

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()并且所显示的视频并不像我预期的那样。 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 个答案:

答案 0 :(得分:2)

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);中的

你可以做100以获得最佳质量,但这是你的选择。希望随着这些变化,你的质量将得到很大提高。质量也取决于您的网络摄像头。

答案 1 :(得分:0)

问题可能是带宽。尝试安装带宽限制器,然后尝试录制。你将有一个非常糟糕的palyback。 如果您有高速连接,那么一切都会好的。 如果您使用RTMP协议,则意味着一切都应该是实时的。因此,如果带宽较低,帧将被丢弃。