【问题标题】:improve quality of recorded video using Red5 media server and oflaDemo app使用 Red5 媒体服务器和 oflaDemo 应用程序提高录制视频的质量
【发布时间】:2012-01-21 07:13:50
【问题描述】:

我现在要做的是:

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() 用作 red5 样本的现成 flv 视频,它们播放完美..我录制的方式有问题吗?用相机?怎么了?有什么想法吗??

播放视频的代码是:

                     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");`

提前致谢!

【问题讨论】:

    标签: apache-flex video actionscript record red5


    【解决方案1】:
    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 以获得最佳质量,但这是您的选择。希望通过这些更改,您的质量将大大提高。此外,质量也取决于您的网络摄像头。

    【讨论】:

    • 好的,当我在录制时看到它时视频是完美的,但是当它被存储并且我尝试播放它时,它很糟糕!我不知道我做错了什么......起初它不播放我录制的所有视频,但其中的一小部分,并且像机器人一样移动而不是物理上录制...请参阅上面的编辑以查看我如何播放视频...
    • 我正在使用具有上述设置的两个不同的网络摄像头。结果取决于网络摄像头。
    • 只需将 setQuality 增加到 (65536,100) 并购买一个好的网络摄像头。更多我不知道
    • 也在 camera.setMode(640,480,30) .. 这里 640 x 480 是像素定义增加它们以获得更好的像素分辨率,30 是每秒帧速率.. 15 是实时流媒体的默认值.但主要取决于您的网络摄像头和像素分辨率。
    • 感谢您的回答,但问题是,尽管我在通过 red5 录制时看到一个非常好的视频,但录制的视频与我在显示时看到的不同,这是怎么回事?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多