在视频中断期间用伪数据填充文件(并重新建立视频)

时间:2019-06-18 22:19:58

标签: java opencv timer

我正在拍摄网络摄像头视频,同时在TornadoFX应用上显示并保存到文件。我想解决网络摄像头连接断开的问题(我目前正在拔掉网络摄像头中间程序作为测试)。

animationTimer的每10个周期都会调用一次videoCapture和videoWriter以获得1fps的视频,并且每200个animationTimer周期会保存一个新的视频文件。插入网络摄像头,一切正常。

if (t % 10 == 0L) {
    try {
        videoWriter.write(image)
        Core.addWeighted(image, 0.3, meanColor, 0.7, 0.0, meanColor)
        g2dRGB.drawImage(CvUtil.mat2Image(image), 0.0, 0.0) //draw image
    } catch (cve : Exception) {
        videoWriter.write(Mat()) //write filler empty Mat() to file
        g2dRGB.drawImage(CvUtil.mat2Image(Mat()), 0.0, 0.0) //draw camera image
        videoCapture.release() //close to reopen
        videoCapture.open(0) //reopen video stream
    }
}
if (t % 500 == 0L && t>0) {
    videoWriter.release()
    videoWriter.open("D:\\videoOutputTest$fileCount.avi",...))
    fileCount++
}
t++

捕获一般性异常后,当我拔下网络摄像头时,应用程序崩溃了。 除了将当前文件填充到第200个周期之前的最后一个网络摄像头图像(很好,但我希望使用例如计时器t的时间参考图片)之外,此刻不再生成和填充新文件。 实时流将无限期地显示最后一个图像(同样,最好以时间t为参考,但当我重新插入网络摄像头时,优先级是重新连接视频流)

0 个答案:

没有答案