Я использую org.bytedeco.javacv. {FFmpegFrameGrabber, Java2DFrameConverter} для преобразования видео .avi в исключение .jpeg, прикрепленное к изображению - PullRequest
0 голосов
/ 20 марта 2020
 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) в

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