일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- kotlin
- 정보처리기사 실기
- PETERICA
- 코틀린 코루틴의 정석
- kotlin spring
- 티스토리챌린지
- CloudWatch
- Pinpoint
- CKA 기출문제
- mysql 튜닝
- Java
- kotlin querydsl
- 정보처리기사 실기 기출문제
- AI
- APM
- 정보처리기사실기 기출문제
- MySQL
- Kubernetes
- Elasticsearch
- minikube
- Linux
- 오블완
- aws
- 기록으로 실력을 쌓자
- CKA
- kotlin coroutine
- Spring
- 공부
- IntelliJ
- AWS EKS
- Today
- Total
피터의 개발이야기
Transcoding, ffmpeg 기본 사용법 본문
ㅁ Transcoding이란?
transcoding은 하나의 인코딩을 다른 인코딩으로 직접 디지털-디지털로 변환하는 과정이다. 일반적으로 대상 장치가 지원하는 포맷으로 변환하기 위해 사용할 수 한다.(wiki사전)
동영상 트랜스코딩 작업이 필요한 경우는 원본 동영상의 코덱을 변경하거나, 영상 혹은 오디오 품질을 변경할 때, 영상 또는 음성에 효과를 추가하는 등의 경우가 있다.
ㅁ ffmpeg 기능
ㅇ 다양한 형식의 오디오/비디오 파일 변환
ㅇ 오디오/비디오 인코딩 및 디코딩
ㅇ 스트리밍
ㅇ 필터 적용 (크기 조정, 자르기 등)
ㅁ 설치
# mac
brew install ffmpeg
# Linux
sudo apt-get install ffmpeg
ㅁ 기본 사용법
# 비디오 포멧변경
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
# 비디오 크리 조정
ffmpeg -i input.mp4 -s 1280x720 output.mp4
# 비디오 자르기
ffmpeg -i input.mp4 -ss 00:00:30 -t 00:00:10 output.mp4
#오디오 추출
ffmpeg -i input.mp4 -vn -acodec copy output.aac
#해상도 변경
ffmpeg -i input.mp4 -s 1280x720 output.mp4
입력/출력 관련 옵션
-i: 입력 파일 지정
-y:출력 파일을 묻지 않고 덮어씀
-n:출력 파일이 이미 존재할 경우 덮어쓰지 않고 종료
마지막 인자: 출력 파일명
비디오 관련 옵션
-c:v 또는 -vcodec: 비디오 코덱을 지정
-b:v: 비디오 비트레이트를 설정
-r: 프레임 레이트를 설정
-s: 비디오 크기를 조절
-vn: 비디오 제거
오디오 관련 옵션
-c:a 또는 -acodec: 오디오 코덱을 지정
-b:a: 오디오 비트레이트를 설정
-ar: 오디오 샘플 레이트를 설정
-ac: 오디오 채널 수를 설정
-an: 오디오 제거
시간 관련 옵션
-ss: 시작 시간을 지정
-t: 지속 시간을 설정
필터 옵션
-vf: 비디오 필터를 적용
-af: 오디오 필터를 적용
-filter_complex: 복잡한 필터 체인을 적용
ㅁ Spring 기본 사용법
Spring에서 FFmpeg를 사용하여 동영상 썸네일을 생성 방법
ㅇ Java Spring 설정
net.bramp.ffmpeg:ffmpeg:0.6.2
라이브러리를 Gradle에 추가하여 FFmpeg와 FFprobe를 사용할 수 있도록 설정
ㅇ 썸네일 생성 코드 작성
FFmpeg ffmpeg = new FFmpeg("/path/to/ffmpeg");
FFprobe ffprobe = new FFprobe("/path/to/ffprobe");
FFmpegBuilder builder = new FFmpegBuilder()
.setInput("input.mp4")
.addOutput("thumbnail.jpg")
.setFrames(1)
.setVideoFilter("select='gte(n\\,10)'") // 10초 지점에서 캡처
.done();
FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
executor.createJob(builder).run();
이 코드는 동영상의 10초 지점에서 썸네일을 캡처하여 저장한다.
ㅁ ffmpeg Docker로 무설치 사용하기
docker run -it --rm \
--workdir /data \
-v $(pwd):/data \
linuxserver/ffmpeg:latest -ss 00:00:5.000 -i video.mp4 -c copy trimmed_video.mp4
ㅁ 함께 보면 좋은 사이트
ㅇ [Spring boot] FFmpeg로 영상 배속 설정하기
'개발이야기' 카테고리의 다른 글
훌륭한 개발 문화를 위해 RnR을 넘어선 협력의 힘, 품앗이 문화 (0) | 2024.12.06 |
---|---|
클라우드컴퓨팅서비스 보안 인증 제도란 (1) | 2024.11.11 |
[Network] SIP (Session Initiation Protocol)정리 (0) | 2024.10.30 |
Apache Hive란? (0) | 2024.10.29 |
금융분야 클라우드 환경 구축 시 준비사항 정리 (0) | 2024.10.24 |