我正在CS5中构建一个网络摄像头录制应用程序,我对录制的flv有一些看似随机的问题。目前,我正在使用标准的_netstream.publish(“movieName”,“record”)命令向Wowza Media Server发布流。关于此的一切工作正常,我可以播放文件,但有时在视频的开头或结尾有3到4秒的暂停。将有一个静止的帧,时间将设置为0,然后捕捉到4.我已经探索了带宽选项,我已经大大降低了分辨率和质量,它似乎没有任何影响,其余的视频将顺利播放。这是我目前的相机和麦克风设置。
_cam.setMode(160, 120, 30, false);
_cam.setQuality(0, 88);
_cam.setKeyFrameInterval(30);
_mic.rate = 11;
我也在关闭发布流
之前刷新缓冲区 _netstream.publish('null');
相机初始化/停用会导致滞后吗?
非常感谢任何帮助。如果您需要更多详细信息,请与我们联系
答案 0 :(得分:0)
我相信这与Flash插件本身初始化和显示相机的方式有关。
如果您设置了一个简单的测试来尝试设置和取消设置视频流:
var cam:Camera = Camera.getCamera();
var webcam:Video = new Video(500, 375);
addChild(webcam);
var isPaused:Boolean = false;
function showWebcam():void {
if (!isPaused) {
cam = null;
} else {
cam = Camera.getCamera();
}
webcam.attachCamera(cam);
isPaused = !isPaused;
}
pausingButton.addEventListener(MouseEvent.CLICK, showWebcam);
当它在两种状态之间切换时,你会注意到一个明确的停顿。
从我所看到的情况来看,每当我用视频对象调用attachCamera()
时,调用该方法时Flash Player本身(包括所有补间,交互,所有内容)都会有明显的暂停,甚至如果我附加的对象是null
。
四秒似乎是一个过度延迟,但我注意到输入/视频渲染越大,并且在视频对象上设置smoothing = true
会影响延迟的长度。
至于解决方案;我不确定是否有一个可以通过纯ActionScript实现,因为延迟似乎取决于Flash Player本身如何初始化和呈现实时视频对象。