我现在所做的是:
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");`
提前致谢!
答案 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协议,则意味着一切都应该是实时的。因此,如果带宽较低,帧将被丢弃。