サムネイルとしてビデオフレームの傍受の実際の開発

まず、需要の背景

   我々は(サムネイル)図のカバーをアップロードしたファイルなどのビデオからフレームをインターセプトする必要があります

 

第二に、瓶の導入

   1.maven下で導入

      < - スタート:!ビデオは、画像フレームを取得します - >

      <依存>
         <groupIdを> org.bytedeco </ groupIdを>
         <たartifactId> javacv </たartifactId>
         <バージョン> 1.4.3 </バージョン>
      </依存関係>

      <依存>
         <groupIdを> org.bytedeco.javacpp-プリセット</ groupIdを>
         <たartifactId> FFmpegのプラットフォーム</たartifactId>
         <バージョン> 4.0.2-1.4.3 </バージョン>
      </依存関係>
      <! -エンド:ビデオ画像フレームを取得- >
   2.gradle下で導入

   / *開始:ビデオ・フレーム* /の取得画像
grab_video_1 = [ ":javacv:org.bytedeco 1.4.3"]
grab_video_2 = [「org.bytedeco.javacpp-プリセット:FFmpegのプラットフォーム:4.0.2-1.4。 3「]
/ *終了:ビデオは入手額縁* /
   依存関係{
      grab_video_1、grab_video_2をコンパイル
   } 

3つのツール
1つのガイドパッケージ
      輸入org.bytedeco.javacv.FFmpegFrameGrabber。
      輸入org.bytedeco.javacv.Frame。
      輸入org.bytedeco.javacv.Java2DFrameConverter。
      輸入javax.imageio.ImageIO;
      輸入java.awt.image.BufferedImage。
      java.util.UUIDインポート;
      java.io.Fileのインポート; 
2.コード
    / ** 
    *エキスピクチャー:フレームを指定します
    *
    * @param filePathにビデオファイルのアドレス
    * @param TEMPPATH一時ファイルのアドレス
    * /
    パブリック文字列grabImg(文字列filePathに、文字列のTEMPPATH){

    IF(StringUtils.isBlank(filePathに)){
    nullを返します。
    }

    TEMPFILE =新しい新しいファイル(filePathに)をファイル;
    IF {(tempFile.exists()!)
    nullを返す;
    }

    //パス最後に取得したサムネイル
    文字列appointFramePicture = "";
    //オブジェクトフレーム
    フレームフレーム=ヌル;
    / /識別:最初のいくつかのフレームは、
    フラグ= 0のint;

    試み{
    //ビデオファイルを取得します。
    =新しい新しいFFmpegFrameGrabber fFmpegFrameGrabber FFmpegFrameGrabber(filePathに);
    fFmpegFrameGrabber.start();

    //フレームの合計数を取得
    int型= fFmpegFrameGrabber.getLengthInFrames FTP();

    ながら、(フラグに<= FTP){
    フレームfFmpegFrameGrabber.grabImage =();

    //について第五のビデオフレームが処理され
    た場合(フラグにフレーム!= NULL && == 5){
    //画像ファイルパス
    appointFramePicture = TEMPPATH + File.separator + UUID.randomUUID( )のtoString()+ "_" + String.valueOf( 旗で)+ ".JPG";

    //ファイルストレージオブジェクト
    ファイル出力=新しいファイル(appointFramePicture) 。
    ImageIO.write(frameToBufferedImage(フレーム)、 "JPG"、出力)。

    ブレーク;
    }
    フラグ++。
    }
    fFmpegFrameGrabber.stop()。
    fFmpegFrameGrabber.close();
    }キャッチ(例外e){
    e.printStackTrace();
    }
    appointFramePictureを返します。
    }

    パブリック静的たBufferedImage frameToBufferedImage(フレーム枠){
    //创建のBufferedImage对象
    Java2DFrameConverterコンバータ=新しいJava2DFrameConverter()。
    たBufferedImageのBufferedImage = converter.getBufferedImage(フレーム)。
    BufferedImageを返します。
    }

おすすめ

転載: www.cnblogs.com/it-szp/p/11642121.html