썸네일로 비디오 프레임의 가로 채기의 실제 개발

수요 우선, 배경

   우리는 (썸네일)도 커버를 업로드 파일로 비디오에서 프레임을 차단해야

 

항아리의 둘째, 도입

   1.maven 아래에 소개

      <- 시작 :! 비디오 화상 프레임을 획득 ->

      <의존성>
         <의 groupId> org.bytedeco </의 groupId>
         <artifactId를> javacv </ artifactId를>
         <version>은 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 컴파일
   } 

세 가지 도구
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 비디오 파일 주소
    파라미터 : tempPath 임시 파일 주소
    * /
    공공 문자열 grabImg (문자열적인 filePath, 문자열 temppath) {

    IF (StringUtils.isBlank (적인 filePath)) {
    는 null;
    }

    TEMPFILE = 새로운 새로운 파일 (파일 경로를) 파일;
    IF {(tempFile.exists ()!)
    는 null을;
    }

    // 경로 마지막으로 획득 한 썸네일
    문자열 appointFramePicture = "";
    // 개체 프레임
    프레임 프레임 = NULL을;
    / / 식별 : 처음 몇 프레임
    깃발 = 0에서 int로,

    은 try {
    // 가져 오기 비디오 파일
    = 새 새 FFmpegFrameGrabber fFmpegFrameGrabber FFmpegFrameGrabber (적인 filePath);
    fFmpegFrameGrabber.start은 ();

    // 프레임의 총 수를 가져옵니다
    INT = fFmpegFrameGrabber.getLengthInFrames FTP를 ();

    그동안을 (플래그 <= FTP) {
    프레임 fFmpegFrameGrabber.grabImage = ();

    //위한 다섯 번째 비디오 프레임이 처리 된
    IF (프레임! = NULL을 && 플래그 ==. 5) {
    // 이미지 파일 경로
    appointFramePicture = tempPath + Win32 시스템 + UUID.randomUUID ( ). toString () + "_"+ 한 String.valueOf을 ( + ".JPG") 플래그;

    // 파일 저장 오브젝트
    파일 출력 = 새로운 파일 (appointFramePicture) ;
    ImageIO.write (frameToBufferedImage (프레임), "JPG", 출력);

    단절;
    }
    플래그 ++;
    }
    fFmpegFrameGrabber.stop ();
    fFmpegFrameGrabber.close ();
    } 캐치 (예외 전자) {
    e.printStackTrace ();
    }
    appointFramePicture를 반환;
    }

    공용 static BufferedImage의 frameToBufferedImage (프레임 프레임) {
    //创建BufferedImage의对象
    Java2DFrameConverter 변환기 = 새로운 Java2DFrameConverter ();
    BufferedImage의 BufferedImage의 converter.getBufferedImage = (프레임);
    BufferedImage를 반환;
    }

추천

출처www.cnblogs.com/it-szp/p/11642121.html