Language/Java

[Java] exec와 ffmpeg 캡쳐를 이용한 동영상 썸네일 추출하기

do yeon 2015. 1. 30. 10:03
반응형

ffmpeg 설치 및 사용법 출처
[동영상변환, 펌] FFmpeg 라이브러리 사용하기

ffmpeg 동영상 thumbnail 추출

동영상 컷팅 & 썸네일 이미지 추출 ffmpeg

[Dos] windows 용 ffmpeg.exe 로 동영상 썸네일 추출하기

[팁] 자바 Runtime.exec()로 ffmpeg 실행시 에러 출력 스트림 주의

ffmpeg 를 사용한 동영상를 GIF로 인코딩






http://www.ffmpeg.org

http://ffmpeg.zeranoe.com/builds/ 에서 윈도우용 ffmpeg를 다운받고

압축을 풀면 이런구성으로 되어있습니다





사용법은 cmd 입력창에 ffmpeg 캡쳐 명령어를 입력하여 실행하는 구조입니다




// exec 메서드로 윈도우탐색기 열기 
Runtime run = Runtime.getRuntime(); 

try{ 
    run.exec("C:\\windows\\explorer.exe"); 
}catch(Exception e){ 
    System.out.println("error : "+ e.getMessage()); 
    e.printStackTrace(); 
} 




//exec 메서드를 이용하여 ffmpeg를 실행하기
Runtime run = Runtime.getRuntime();
String command = "C:\\ffmpeg\\bin\\ffmpeg.exe -i \""+videofile+"\" -ss 00:05:00 -vcodec png -vframes 1 \""+videofile+"_%2d.png\"";

try{
    run..exec("cmd.exe chcp 65001");  // cmd에서 한글문제로 썸네일이 만들어지지않을시 cmd창에서 utf-8로 변환하는 명령
    run..exec(command);
}catch(Exception e){
    System.out.println("error : "+e.getMessage());
    e.printStackTrace();
}	            

chcp 65001을 입력하여 변환했다 하더라도 

컴퓨터가 재부팅되고 cmd 창에서 chcp를 입력하면  

활성 코드 페이지: 949 로 다시 되돌아옴


ffmpeg -i 비디오파일 -ss 시간 -vcodec png -vframes 썸네일갯수 파일명_%d.png


-i = Input file name 

-ar = Audio sampling rate in Hz (audio sampling frequency. default = 44100 Hz) 

-ab = Audio bitrate in kbit/s (default = 64k) 

-an = Disable audio recording. 

-f = format (Force format) 

-s = Frame size (가로x세로) 

-t = 레코딩 시간 (hh:mm:ss[.xxx]) 

-ss = 이미지 캡쳐 시간 (hh:mm:ss, 초) 

-fs = 파일 사이즈 제한 

-vframes = 레코딩하는 비디오 프레임의 수 

-r = Frame Rate (Hz, Default=25)

%d = 증가하는 한자리 숫자

%%2d = 증가하는 두자리 숫자

%%3d = 증가하는 세자리 숫자 



기타 막혔던 부분

cmd 명령에서 한글경로를 인식 못하고 에러가 나서 아래 블로그를 참조하였다

CMD 에서 한글 출력하기

한글경로를 인식하더라도 공백을 인식못하는부분에서 막혀서 아래블로그를 참조하였다

빈칸 처리하기



cmd 창에서 직접입력시 결과화면








반응형