2016-05-11 29 views
-2

アップロードされたファイルのサムネイルを数日間作成しようとしましたが、無駄になりました。私はXuggler、FFMpegFrameGrabber、およびいくつかの他のランダムなコードを試してみたが、どれもうまくいかないようだ。ビデオから1つのフレームをキャプチャするのは簡単な作業です。私はこれをどのようにすることができるか知っていますか?アップロードした動画ファイルのサムネイルを取得するにはどうすればよいですか?

+0

希望://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高速軽量ビデオサムネイル。

+0

Java? – Tometoyou

+0

これはコマンドラインツールです。 Javaコードでコマンドを実行する必要があります。 java上でコマンドを実行するには:http://stackoverflow.com/questions/8496494/running-command-line-in-java –

0

あなたは達人で使うhumble-videoXuggle-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

1

io.humbleを使って簡単な例を書いてビデオ画像を作成しました。しかし、スカラクラスです。あなたはそれを確認し、あなたが好きなようにJavaのバージョンに変更することができます。私はビデオのthumnailsを作成するためにFFMpegFrameGrabberを使用して、このJavaコードを使用している https://github.com/LeoWolfLai/io.humble-example/blob/master/io.humble-example.scala

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(); 
    } 
} 

は見てみましょう。やってみて。

Mavenの依存関係:この答えはyou.http役立つ

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

これは受け入れられる回答である必要があります – FourtyTwo

関連する問題