자바 는 ffmpeg 를 사용 하여 동 영상 을 업로드 하 는 코드 추출 동 영상 캡 처 등 기능(코드 조작)을 실현 합 니 다.

ffmpeg 영상 채집 기능 은 영상 채집 카드 나 USB 카메라 의 이미 지 를 채집 할 수 있 을 뿐만 아니 라 스크린 녹화 도 할 수 있 으 며 RTSP 를 지원 하 는 스 트 리밍 서버 에 영상 흐름 을 RTP 방식 으로 전송 하여 생방송 응용 을 지원 합 니 다.ffmpeg 가 해석 할 수 있 는 형식 과 해석 할 수 없 는 형식 을 일일이 설명해 드 렸 습 니 다.구체 적 인 내용 은 자세 한 내용 을 따라 보 세 요.
1.지원 할 수 있 는 형식
ffmpeg 해석 가능 한 형식:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv 등)
2.지원 할 수 없 는 형식
ffmpeg 에서 해석 할 수 없 는 파일 형식(wmv 9,rm,rmvb 등)을 다른 도구(mencoder)로 avi(ffmpeg 에서 해석 할 수 있 는)형식 으로 변환 할 수 있 습 니 다.
인 스 턴 스 는 업로드 영상 을 flv 형식 으로 바 꾸 는 것 입 니 다.이 형식 은 ffmpeg 지원 이기 때문에 인 스 턴 스 에 ffmpeg 영상 처리 도구 가 필요 합 니 다.
ffmpeg 도 구 를 사용 하여 코드 를 바 꾸 기 전에 해 야 할 준비 작업:
1.ffmpeg 다운로드,다운로드 경로:
먼저 인터넷 주 소 를 엽 니 다http://ffmpeg.org/download.html#build-windows그리고 windows 에 대응 하 는 아이콘 을 클릭 한 다음'Windows Build'를 클릭 하여 다음 그림 2 의 화면 에 들 어 갑 니 다.
그림 1:

그림 2:

2)설치
압축 해제 후 파일 의 빈 디 렉 터 리 에 들 어가 면 해당 하 는.exe 파일 을 볼 수 있 습 니 다.환경 변수 path 에 bin 디 렉 터 리 를 추가 합 니 다.분점 으로 끝 나 는 것 을 주의 하 십시오.
설치 성공 여 부 를 검증 합 니 다:
cmd 명령 을 실행 하고 콘 솔 에 명령 을 입력 하 십시오:ffmpeg-version,결 과 는 다음 과 같 습 니 다:

설치 성공!
설치 에 성공 하면 코드 에서 참조 할 수 있 습 니 다.
비디오 코드 와 비디오 캡 처 코드 는 다음 과 같다.

public class VideoConvert {

 /**
  *     
  * @param ffmpegPath          
  * @param upFilePath             ,         
  * @param codcFilePath              
  * @param mediaPicPath       
  * @return
  * @throws Exception
  */
 public static boolean executeCodecs(String ffmpegPath, String upFilePath, String codcFilePath,String mediaPicPath) throws Exception {
  //     List            flv     
  List<String> convert = new ArrayList<String>();
  convert.add(ffmpegPath); //         
  convert.add("-i"); //     "-i",           
  convert.add(upFilePath); //                
  convert.add("-qscale");  //       
  convert.add("6");
  convert.add("-ab");  //      
  convert.add("64");
  convert.add("-ac");  //     
  convert.add("2");
  convert.add("-ar");  //         
  convert.add("22050");
  convert.add("-r");  //    
  convert.add("24");
  convert.add("-y"); //     "-y",              
  convert.add(codcFilePath);

  //     List                
  List<String> cutpic = new ArrayList<String>();
  cutpic.add(ffmpegPath);
  cutpic.add("-i");
  cutpic.add(upFilePath); //   (            flv       ,       flv  )
  cutpic.add("-y");
  cutpic.add("-f");
  cutpic.add("image2");
  cutpic.add("-ss"); //     "-ss",            
  cutpic.add("1"); //         1 
  cutpic.add("-t"); //     "-t",         
  cutpic.add("0.001"); //        1  
  cutpic.add("-s"); //     "-s",            
  cutpic.add("350*240"); //           350*240
  cutpic.add(mediaPicPath); //             

  boolean mark = true;
  ProcessBuilder builder = new ProcessBuilder();
  try {
   builder.command(convert);
   builder.redirectErrorStream(true);
   builder.start();
   
   builder.command(cutpic);
   builder.redirectErrorStream(true);
   //        true,           start()                           ,
   //         Process.getInputStream()     。                    
   builder.start();
  } catch (Exception e) {
   mark = false;
   System.out.println(e);
   e.printStackTrace();
  }
  return mark;
 }
}

비디오 코드 와 캡 처 가 필요 한 위치 에서 이 방법 을 호출 하면 된다.
주의:
함수 에 전 달 된 fmeg 의 경 로 는 빈/ffmpeg.exe 에 써 야 함수 에서 ffmpeg 도 구 를 정상적으로 시작 할 수 있 습 니 다.
함수 에 전 달 된 원본 비디오 파일 경로,인 코딩 된 비디오 파일 경로,비디오 캡 처 된 파일 경 로 는 모두 파일 이름 에 기록 해 야 합 니 다.
비디오 코드 나 비디오 캡 처 만 필요 하 다 면 서로 다른 함수 에 다음 과 같이 쓸 수 있 습 니 다.
비디오 형식 변환:

/**
  *     
  * @param ffmpegPath          
  * @param upFilePath             ,         
  * @param codcFilePath              
  * @return
  * @throws Exception
  */
 public static boolean executeCodecs(String ffmpegPath, String upFilePath, String codcFilePath) throws Exception {
  //     List            flv     
  List<String> convert = new ArrayList<String>();
  convert.add(ffmpegPath); //         
  convert.add("-i"); //     "-i",           
  convert.add(upFilePath); //                
  convert.add("-qscale");  //       
  convert.add("6");
  convert.add("-ab");  //      
  convert.add("64");
  convert.add("-ac");  //     
  convert.add("2");
  convert.add("-ar");  //         
  convert.add("22050");
  convert.add("-r");  //    
  convert.add("24");
  convert.add("-y"); //     "-y",              
  convert.add(codcFilePath);
  boolean mark = true;
  ProcessBuilder builder = new ProcessBuilder();
  try {
   builder.command(convert);
   builder.redirectErrorStream(true);
   builder.start();
  } catch (Exception e) {
   mark = false;
   e.printStackTrace();
  }
  return mark;
 }

비디오 캡 처:

 /**
  * 
  * @param ffmpegPath          
  * @param upFilePath          
  * @param mediaPicPath             
  * @param width       
  * @param height      
  * @return
  */
 public static boolean screenImage(String ffmpegPath, String upFilePath, String mediaPicPath, String width, String height) {
  //     List                
  List<String> cutpic = new ArrayList<String>();
  cutpic.add(ffmpegPath);
  cutpic.add("-i");
  cutpic.add(upFilePath); //          
  cutpic.add("-y");
  cutpic.add("-f");
  cutpic.add("image2");
  cutpic.add("-ss"); //     "-ss",            
  cutpic.add("1"); //         17 
  cutpic.add("-t"); //     "-t",         
  cutpic.add("0.001"); //        1  
  cutpic.add("-s"); //     "-s",            
  cutpic.add(width + "*" + height); //           350*240
  cutpic.add(mediaPicPath); //             
  ProcessBuilder builder = new ProcessBuilder();
  try {
   builder.command(cutpic);
   builder.redirectErrorStream(true);
   builder.start();
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  }
  return true;
 }
 
총결산
자바 가 ffmpeg 를 사용 하여 동 영상 을 업로드 하 는 디 코딩 추출 동 영상 캡 처 등 기능(코드 조작)을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 ffmpeg 이 동 영상 을 업로드 하 는 디 코딩 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기