2016-05-11 3 views
-2

Я пытался создать миниатюру для загруженного файла в течение нескольких дней безрезультатно. Я пробовал Xuggler, FFMpegFrameGrabber и некоторые другие случайные коды, и ни одна из них не работает. Это должно быть тривиальной задачей для захвата одного кадра из видео. Кто-нибудь знает, как я могу это сделать?Как получить миниатюру загруженного видеофайла?

+0

надежда этот ответ поможет you.http: //stackoverflow.com/questions/3450203/are-there-any-java-library-for-thumbnails-generation –

+0

@khAn это только для изображений? Или вы можете использовать те же методы в видеофайле? – Tometoyou

+0

проверьте этот, http: //stackoverflow.com/questions/48179/video-thumbnails-in-java –

ответ

0

ffmpegthumbnailer быстрый и легкий видео thumbnailer.

+0

Как использовать это с Ява? – Tometoyou

+0

Это инструмент командной строки. Вы должны выполнить команду в своем Java-коде. Чтобы выполнить команду в java, прочитайте: http://stackoverflow.com/questions/8496494/running-command-line-in-java –

0

Вы можете использовать humble-video (Xuggle-xuggler sucesor)

Использование с мавена:

<project> 
    ... 
    <dependencies> 
    ... 
    <dependency> 
     <groupId>io.humble</groupId> 
     <artifactId>humble-video-all</artifactId> 
     <version>0.2.1</version> 
    </dependency> 
    </dependencies> 
</project> 

Там нет примера со смиренным-видео, но я предполагаю, что это похоже на Xuggler, посмотрите на DecodeAndCaptureFrames.java

+0

Кажется, это не работает! – Tometoyou

+0

Что вы сделали? – vzamanillo

2
package com.tape.controller; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import javax.imageio.ImageIO; 
import org.bytedeco.javacv.FFmpegFrameGrabber; 
import org.bytedeco.javacv.OpenCVFrameGrabber; 

public class VideoThumbTaker { 

    protected String ffmpegApp; 

    public VideoThumbTaker(String ffmpegApp) 
    { 
     this.ffmpegApp = ffmpegApp; 
    } 

    public void getThumb(String videoFilename, String thumbFilename, int width, int height,int hour, int min, float sec) 
     throws IOException, InterruptedException 
    { 
     ProcessBuilder processBuilder = new ProcessBuilder(ffmpegApp, "-y", "-i", videoFilename, "-vframes", "1", 
    "-ss", hour + ":" + min + ":" + sec, "-f", "mjpeg", "-s", width + "*" + height, "-an", thumbFilename); 
     Process process = processBuilder.start(); 
     InputStream stderr = process.getErrorStream(); 
     InputStreamReader isr = new InputStreamReader(stderr); 
     BufferedReader br = new BufferedReader(isr); 
     String line; 
     while ((line = br.readLine()) != null); 
     process.waitFor(); 
    } 

    public static void main(String[] args) throws Exception, IOException 
    { 
     FFmpegFrameGrabber g = new FFmpegFrameGrabber("C:\\JavaEE\\New Project\\tape\\src\\main\\webapp\\web-resources\\videos\\vid.mp4"); 
     g.setFormat("mp4"); 
     g.start(); 

     for (int i = 0 ; i < 50 ; i++) { 
      ImageIO.write(g.grab().getBufferedImage(), "png", new File("C:\\JavaEE\\New Project\\tape\\src\\main\\webapp\\web-resources\\thumbnails\\video-frame-" + System.currentTimeMillis() + ".png")); 
     } 

     g.stop(); 
    } 
} 

Я использовал этот Java-код с помощью FFMpegFrameGrabber создать thumnails из видео. Попробуйте.

Maven зависимостей:

<dependency> 
    <groupId>org.bytedeco</groupId> 
    <artifactId>javacv</artifactId> 
    <version>0.8</version> 
</dependency> 
+0

Это должен быть принятый ответ – FourtyTwo

Смежные вопросы