2019년 12월 8일

동영상에서 썸네일 이미지 추출하기 (Extract image from a video using java)

JCodec 를 이용하면 아주 편리하게 동영상의 특정 프레임으로부터 이미지를 추출할 수 있다. pom.xml 파일에 아래와 같이 라이브러리를 추가하여 이미지 추출을 위한 AWT(BufferedImage)와 함께 사용이 가능하다.

 

    org.jcodec
    jcodec
    0.2.3


    org.jcodec
    jcodec-javase
    0.2.3
 
동영상의 특정 프레임에서 이미지를 추출하는 것은 아주 간단하다. 여기에서는 0 번째 프레임에서 이미지를 추출하여 썸네일로 사용하도록 했다.
 
package tests;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.jcodec.api.FrameGrab;
import org.jcodec.api.JCodecException;
import org.jcodec.common.model.Picture;
import org.jcodec.scale.AWTUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Mp4Test {

 private Logger log = LoggerFactory.getLogger(getClass().getName());
 private static final String IMAGE_PNG_FORMAT = "png";

 /**
  * 
  * 
  * @param source mp4 file.
  * @param thumbnail
  * @return
  * @throws IOException
  * @throws JCodecException
  */
 public File getThumbnail(File source, File thumbnail) throws IOException, JCodecException {

  log.debug("extracting thumbnail from video");
  int frameNumber = 0;
   
  Picture picture = FrameGrab.getFrameFromFile(source, frameNumber);

  BufferedImage bufferedImage = AWTUtil.toBufferedImage(picture);
  ImageIO.write(bufferedImage, IMAGE_PNG_FORMAT, thumbnail);
  return thumbnail; 
 }
}


참고자료

jcodec - a pure java implementation of video/audio codecs.

댓글 없음:

댓글 쓰기