728x90
반응형
환경 : Ubuntu v24.04
소프트웨어 : ffmpeg v6.1.1
동영상 파일에서 영상+오디오 추출하기
특정 시간부터 지정 시간 동안 추출하기 (예, 30초 부터 1분 동안)
ffmpeg -ss 00:00:30 -t 00:01:00 -i input.mp4 -c copy output_clip.mp4
특정 시간부터 특정 시간 까지 추출하기 (예, 1분 부터 2분 30초 까지)
'-t' 파라미터를 사용해서 길이를 지정할 수 있음.
ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c copy output_clip.mp4
"""
-ss 00:01:00 : 1분부터 시작
-to 00:02:30 : 2분 30초까지 (절대 시간)
-i input.mp4 : 입력 파일
-c copy : 오디오와 비디오 모두 재인코딩 없이 복사 (속도 빠르고 화질 무손실)
output_clip.mp4 : 결과 출력 파일
"""
인풋 동영상 파라미터를 시간 파라미터 '-ss' 앞에 두면 재인코딩이 되서 결과가 매우 느리게 나옴.
하지만 시작 시간과 종료 시간이 매우 정확하게 커팅됨.
'-c:v', '-c:a' 파라미터를 필히 지정해야 함.
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c:v libx264 -c:a aac output_clip.mp4
동영상 파일에서 이미지 추출하기
전체 동영상 중 일정 시간 간격에 있는 이미지 추출하기
ffmpeg -i input.mp4 -vf fps=1 output_%03d.jpg
"""
fps=1 → 초당 1장
output_%03d.jpg → 3자리 번호로 저장
"""
ffmpeg -i input.mp4 -vf "fps=1/5" output_%03d.jpg
"""
5초 마다 1장씩 추출하기
Quatation Mark " " 필수
"""
ffmpeg -i input.mp4 -vf fps=2 output_%03d.png
"""
fps=2 → 초당 2프레임 추출 = 0.5초마다 1장
output_%03d.png → output_001.png, output_002.png 형식으로 저장
.png → 무손실 압축 포맷이므로 고화질 유지
"""
ffmpeg -i input.mp4 -vf "fps=1/60" output_%03d.png
"""
fps=1/60 → 60초(1분)마다 1장 추출
output_%03d.png → output_001.png, output_002.png ... 저장
.png → 고화질 무손실 이미지 포맷
"""
ffmpeg -i input.mp4 -vf "fps=1/60" -q:v 2 output_%03d.jpg
"""
-q:v 값이 작을수록 고화질 (1~3 사이 추천, 1이 최고 품질)
"""
* png 확장자를 사용할 경우 고화질로 추출됨
ffmpeg -i input.mp4 -vf fps=1 output_%03d.png
* 원본 해상도 유지해서 추출하기
ffmpeg -i input.mp4 -vf "fps=1,scale=iw:ih" output_%03d.png
"""
iw:ih → input width, input height (원본 해상도 유지)
"""
* 특정 해상도로 추출하기 (예, 1920*1080)
ffmpeg -i input.mp4 -vf "fps=1,scale=1920:1080" output_%03d.png
* 최대 품질 유지하기 (jpeg 으로 고화질 추출 방법)
ffmpeg -i input.mp4 -vf fps=1 -q:v 1 output_%03d.jpg
"""
이미지는 비트레이트나 코덱 옵션의 영향을 거의 안 받지만, JPEG로 저장하는 경우에는 -q:v(영상 퀄리티) 사용 가능:
-q:v 1은 최고 화질, -q:v 31은 최저 화질.
"""
특정 시간의 일정 시간 간격에 있는 이미지 추출하기
ffmpeg -ss 00:00:10 -to 00:00:20 -i input.mp4 -vf fps=2 output_%03d.png
"""
10초에서 20초 사이에 있는 동영상 중 0.5초 간격으로 이미지를 추출하기
-ss 00:00:10 → 시작 시간
-to 00:00:20 → 종료 시간
"""
오디오만 추출하기
특정구간의 오디오 추출하기
ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -q:a 0 -map a output.mp3
"""
-ss 00:01:00 → 1분부터 시작
-to 00:02:30 → 2분 30초까지 (절대 시간)
-i input.mp4 → 입력 파일 (비디오든 오디오든 상관없음)
-q:a 0 → 오디오 품질 최상 (MP3일 경우)
-map a → 오디오 스트림만 추출
output.mp3 → 결과 파일
"""
ffmpeg -ss 00:01:00 -t 00:01:30 -i input.mp4 -q:a 0 -map a output.mp3
"""
-t는 길이(duration) 이므로, 위 명령은 1분부터 1분 30초간 추출
"""
wav 로 추출하기
ffmpeg -ss 30 -t 15 -i input.mp4 -map a output.wav
"""
-ss 30 → 30초부터
-t 15 → 15초 길이
output.wav → 무손실 PCM 포맷
"""
원본 그대로 잘라내기 (빠르게, 인코딩 없이)
ffmpeg -ss 00:01:00 -to 00:02:00 -i input.mp4 -map a -c copy output.aac
"""
-c copy → 재인코딩 없이 그대로 추출 (빠르고 품질 손실 없음)
단, 이 방식은 구간 정확도가 약간 떨어질 수 있음 (-ss가 입력 전에 오면 더욱 빠르지만 약간 부정확할 수 있음)
"""728x90
반응형
'코딩' 카테고리의 다른 글
| django, HTMX, Alpine, Tailwind (0) | 2025.06.26 |
|---|---|
| django-vite - HTMX, Alpine.js and TailwindCSS Plugin Installation (0) | 2025.06.26 |
| 'vite' 및 'django createproject' (0) | 2025.06.21 |
| django 프로젝트 자동화 도구; Fabric (0) | 2025.06.21 |
| Django and Alpine.js - Introduction to Alpine.js (2) | 2025.02.07 |