val converter = new Java2DFrameConverter
`def extractAVI(rawDrivePath: String): List[String] = {
var errorList: List[String] = List.empty
FileUtils.listFiles(new File(rawDrivePath), new SuffixFileFilter(".avi"), TrueFileFilter.INSTANCE)
.asScala.toList.foreach(aviFile => {
var grabber: FFmpegFrameGrabber = null
var aviStream: InputStream = null
var isFailedExtraction: Boolean = false
try {
LOGGER.info(s"--------inside try----------${aviFile.getAbsolutePath} {}",aviFile.length())
aviStream = new FileInputStream(aviFile.getAbsolutePath)
LOGGER.info("--------create grabber----------{}",aviStream!= null)
grabber = new FFmpegFrameGrabber(aviStream)
LOGGER.info("--------created grabber extraction of drives----------{}",grabber)
try {
grabber.start()
}
catch{
case z: Throwable =>LOGGER.error("Exceptions found in grabber start {}",z.getStackTrace)
}
LOGGER.info("--------start grabber of drives----------")
var count: Int = 1
for (frame <- Iterator.continually(grabber.grabImage()).takeWhile(_ != null)) {
ImageIO.write(converter.convert(frame), "jpg", new File(aviFile.getParent, "capture-" + count + ".jpg"))
count += 1
}
grabber.stop()
} catch {
case ex: Exception => {
//LOGGER.info(s"Error while extracting images for ${aviFile.getAbsolutePath} {}", ex)
errorList :+= s"${aviFile.getAbsolutePath.replace(rawDrivePath, "")} -> ${ex.getMessage}"
isFailedExtraction = true
LOGGER.info("last inside catch")
}
} finally {
// Close the video file
LOGGER.info("inside finally ")
if (grabber != null)
grabber.release()
if (aviStream != null)
aviStream.close()
if (aviFile.exists() && !isFailedExtraction) {
LOGGER.debug(s"Deleting ${aviFile.getAbsolutePath}")
FileUtils.deleteQuietly(aviFile)
}
}
}
введите описание изображения здесь
на этом изображении я получаю сообщение об ошибке, когда я собираюсь запустить grabber.start () на моем локальном компьютере, он работает абсолютно нормально во время сонар-сканера при выполнении теста выдается исключение, которое прикреплено к изображению.
ОШИБКА: возникает, когда я запускаю граббер (grabber.start () в коде)
Фатальная ошибка обнаружена Java Среда выполнения: # # SIGSEGV (0xb) при pc = 0x000000000000dc56, pid = 447, tid = 0x00007f45200a3b10 Исключение в потоке "Thread-8" java .io.EOFException в java .io.ObjectInputStream $ BlockData (ObjectInputStream. java: 2960) в java .io.ObjectInputStream.readObject0 (ObjectInputStream. java: 1540) в java .io.ObjectInputStream.readObject (ObjectInputStream. java: 431) в