프로그램/JAVA

[FFMPEG] Windows 10에서 동영상 화질, 확장자 등 변경하기 (JAVA)

프뚜 2022. 8. 24. 23:37
728x90
반응형
SMALL

안녕하세요!

프뚜(프로그래머 뚜)입니다!

 

[개발 환경]

 - OS: windows 10 64bit

 - JAVA: 11

 

 

동영상을 컨트롤할 수 있는 FFMPEG가 있습니다. 이번엔 JAVA에서 사용한다고 되어있지만 실제로는 FFMPEG가 제공하는 exe를 통해 동영상을 컨트롤 합니다. windows 10에서 사용할 수 있는 exe를 다운받고 JAVA에서 명령어를 실행하면 동영상 컨트롤을 할 수 있습니다.

 

 

1. FFMPEG 파일 다운로드하기 (링크)

Windows builds from gyan.dev를 클릭하기

 

 

2. 이동된 페이지에서 .7z 파일 다운받기 (링크)

ffmpeg-git-full.7z을 다운받기

 

 

3. 받은 파일을 열어보기 (알집은 .7z을 지원하지 않기 떄문에 반디집을 설치하시면 좋습니다.)

/bin/ffmpeg.exe, ffplay.exe, ffprobe.exe 파일을 압축 해제하기

3개의 파일을 압축해제 합니다.

 

 

4. Spring Framework > build.gradle > jar 파일 추가

implementation('net.bramp.ffmpeg:ffmpeg:0.7.0')

exe와 jar파일 추가가 된다면 설치파일은 끝났습니다.

 

 

5. 동영상 사이즈 변경하기 (화질 변경)

// 2022.08.24[프뚜]: ffmpeg.exe 경로 지정
FFmpeg ffmpeg = new FFmpeg("D:\\ffmpeg\\bin\\ffmpeg");

// 2022.08.24[프뚜]: ffprobe.exe 경로 지정
FFprobe ffprobe = new FFprobe("D:\\ffmpeg\\bin\\ffprobe");

// 2022.08.24[프뚜]: 동영상 파일(mp4) 경로
String originFilePath = "D:\\ffmpeg\\";

FFmpegBuilder builder = new FFmpegBuilder()
    .setInput(originFilePath + "1.mp4") // 2022.08.24[프뚜]: 파일 경로
    .overrideOutputFiles(true) // 2022.08.24[프뚜]: 파일 덮어씌기
    .addOutput(originFilePath + "2.mp4") // 2022.08.24[프뚜]: 생성되는 파일
    .setVideoWidth(640)
    .setVideoHeight(480)
    .done();

FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
executor.createJob(builder).run();

1.mp4(1080p) 파일을 2.mp4(480p)로 변경하겠습니다.

 

 

6. 화질 변경 소스 실행하기

1080p(1.2GB) 파일을 변경하는 시간은 63초 걸렸습니다.

 

 

7. mp4 파일을 m3u8 파일로 변환하기 (스트리밍할 때 사용함)

FFmpegBuilder builder = new FFmpegBuilder()
        .overrideOutputFiles(true) 
        .setInput(originFilePath + "1.mp4")
        .addOutput("D:\\ffmpeg\\test.m3u8") 
        .setVideoWidth(640)
        .setVideoHeight(480)
        .addExtraArgs("-profile:v", "baseline")
        .addExtraArgs("-level", "3.0") 
        .addExtraArgs("-start_number", "0") 
        .addExtraArgs("-hls_time", "10") 
        .addExtraArgs("-hls_list_size", "0") 
        .addExtraArgs("-f", "hls")
        .done();

 

 

해당 프로젝트는 gitlab에 제공되고 있습니다. (포스팅 제목과 Git History는 1:1 매칭입니다.)
https://github.com/JeongSeongSoo/spring-tistory.git

 

GitHub - JeongSeongSoo/spring-tistory

Contribute to JeongSeongSoo/spring-tistory development by creating an account on GitHub.

github.com


궁금하신 부분 또는 문제가 생긴 부분에 대해서 댓글 남겨주시면 빠르고 정확한 답변드리겠습니다.

728x90
반응형
LIST