728x90
반응형
SMALL
안녕하세요!
프뚜(프로그래머 뚜)입니다!
[개발 환경]
- OS: windows 10 64bit
- JAVA: 11
동영상을 컨트롤할 수 있는 FFMPEG가 있습니다. 이번엔 JAVA에서 사용한다고 되어있지만 실제로는 FFMPEG가 제공하는 exe를 통해 동영상을 컨트롤 합니다. windows 10에서 사용할 수 있는 exe를 다운받고 JAVA에서 명령어를 실행하면 동영상 컨트롤을 할 수 있습니다.
Windows builds from gyan.dev를 클릭하기
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
궁금하신 부분 또는 문제가 생긴 부분에 대해서 댓글 남겨주시면 빠르고 정확한 답변드리겠습니다.
728x90
반응형
LIST
'프로그램 > JAVA' 카테고리의 다른 글
[Spring] JAVA 파일 압축하기 (ZIP, ARCHIVE) (10) | 2022.09.02 |
---|---|
[Spring] JAVA 대용량 파일 다운로드 (4) | 2022.09.01 |
[JWT] 토큰 인증 및 payload 확인 (5) | 2021.11.24 |
[JWT] 토큰 환경 설정 및 생성 (0) | 2021.11.24 |
[Lombok] 롬복 설치 및 STS(Eclipse) 적용 (0) | 2021.07.19 |