본문 바로가기

Java & SpringFramework

Jcodec 이용해서 비디오파일 썸네일 만들기

Source


private static void getImageFromFrame(File videoFile) {

String fileName = videoFile.getAbsolutePath();

String baseName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.lastIndexOf("."));

String savePath = fileName.substring(0, fileName.lastIndexOf("\\"));


double frameNumber = 0d;

try {

SeekableByteChannel bc = NIOUtils.readableFileChannel(videoFile);

MP4Demuxer dm = new MP4Demuxer(bc);

DemuxerTrack vt = dm.getVideoTrack();

frameNumber = vt.getMeta().getTotalDuration() / 5.0;

System.out.println(vt.getMeta().getTotalDuration());

System.out.println(frameNumber);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}


try {

Picture frame = FrameGrab.getNativeFrame(new File(fileName), frameNumber);

BufferedImage img = AWTUtil.toBufferedImage(frame);

File pngFile = new File(savePath + "/" + baseName + ".png");

if (!pngFile.exists()) {

pngFile.createNewFile();

}

ImageIO.write(img, "png", pngFile);

} catch (IOException e) {

e.printStackTrace();

} catch (JCodecException e) {

e.printStackTrace();

}


}



Main


public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Videos\\두견\\Good Luck.mp4");

App.getImageFromFrame(file);

}



pom.xml



<dependency>

<groupId>org.jcodec</groupId>

<artifactId>jcodec</artifactId>

<version>0.1.9</version>

</dependency>

<dependency>

<groupId>org.jcodec</groupId>

<artifactId>jcodec-javase</artifactId>

<version>0.1.9</version>

</dependency>