본문 바로가기

코딩

명령어로 영상, 오디오 및 이미지 추출하기

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
반응형