Заполнение файлов фиктивными данными во время прерывания видео (и восстановления видео) - PullRequest
0 голосов
/ 19 июня 2019

Я снимаю видео с веб-камеры и одновременно отображаю в приложении TornadoFX и сохраняю в файл. Я хочу рассказать о случае сбоя соединения с веб-камерой (в настоящее время я отключаю промежуточную программу веб-камеры в качестве теста).

videoCapture и videoWriter вызываются каждые 10 циклов animationTimer для получения видео со скоростью 1 кадр / с, а новый видеофайл сохраняется каждые 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 будет лучшей, но приоритет заключается в том, чтобы повторно подключить видеопоток, когда я снова подключаю веб-камеру)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...