자바 는 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 이 동 영상 을 업로드 하 는 디 코딩 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.