macOS 환경에서 작성된 글입니다.
ffmpeg란?
ffmpeg는 멀티미디어 파일과 스트림을 다룰 때 사용하는 오픈소스 프레임워크다.
2000년도에 시작한 프로젝트임에도 여전히 발전하고 있으며 커뮤니티 또한 활발한 편이다.
유튜브나 아이튠즈같은 미디어 플랫폼, VLC 같은 미디어 플레이어, 미디어 에디터(편집기), 모바일 앱 등에서 널리널리 쓰인다.
명칭의 유래는 FF + MPEG인데, FF는 Fast Forward의 준말이고 MPEG는 멀티미디어의 표준을 개발하는 그룹인 Moving Picture Experts Group에서 따왔다.
특징
- 트랜스코딩과 스트리밍에 있어 거의 만능에 가깝다.
(Scale, Clip, Overlay, Mix, Stream, Resample, Concact, Transcode 등등 다재다능하다.) - C언어로 작성되어 겁나 빠르다.
- 사용법이 유연해 개념이 익숙해지면 배우기 쉽다.
- 코덱, 포맷, 프로토콜, 디바이스 등을 광범위하게 지원하기 때문에 트랜스코딩 엔진으로서 이상적인 선택을 할 수 있게 해준다.
설치
어떤 OS에서도 official build가 없다.
그래서 설치법이 2가지로 나뉘는데,
- 소스 코드와 빌드에 포함할 라이브러리를 선택해 직접 빌드하여 수동 설치
- apt나 homebrew같은 패키지 매니저로 pre-built 패키지 설치
손수 빌드할 이유가 꼭 있는 게 아니라면 패키지 매니저를 이용하면 쉽게 설치할 수 있다.
# macOS
brew install ffmpeg
# Ubuntu
sudo apt update && sudo apt install ffmpeg
ffmpeg
Hyper fast Audio and Video encoder
커맨드 라인에서 ffmpeg
를 입력하면 마지막 줄에 겁나 빠른 오디오와 비디오 인코더라고 출력된다.
위 결과에서도 확인할 수 있는 대표적인 라이브러리들은 다음과 같다.
- libavcodec - ffmpeg가 지원하는 모든 인/디코더
- libavformat - 다양한 컨테이너 포맷을 처리하기 위한 모든 muxer, demuxer
- libavfliter - 비디오/오디오을 수정하기 위한 필터
- libavdevice - 일부 입출력장치 지원
ffmpeg를 설치하면 ffprobe와 ffplay라는 유용한 툴도 함께 설치된다.
아주 단순한 툴들이기 때문에 이 친구들을 먼저 훑고나서 ffmpeg를 더 알아보자.
ffprobe
Simple multimedia streams analyzer
커맨드 라인에서 ffprobe
를 입력하면 마지막 줄에 간단한 멀티미디어 스트림 분석기라고 출력된다.
파일이 디스크에 저장돼있지 않더라도 http 링크가 있으면 분석할 수 있다.
옵션 예시
# 파일 포맷과 비디오 스트림만 분석하여 json 형태로 출력
ffprobe -v error seagull.mp4 -show_format -show_streams -print_format json -select_streams v
# 비디오 스트림의 구성 요소 중에 key가 codec_name인 값을 wrapper와 key값을 표시하지 않고 출력
ffprobe -v error seagull.mp4 -select_streams v -show_entries stream=codec_name -print_format default=noprint_wrappers=1:nokey=1
# http url로 분석
ffprobe https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4
더 많은 옵션은 공식 문서에서 확인할 수 있다.
ffplay
Simple media player
커맨드 라인에서 ffplay
를 입력하면 마지막 줄에 간단한 미디어 플레이어라고 출력된다.
'미디어 플레이어'이기 때문에 영상, 음성, 이미지 모두 재생 가능하다.
ffprobe와 마찬가지로 파일이 디스크에 저장돼있지 않더라도 http 링크가 있으면 재생할 수 있다.
옵션 예시
# 너비 600, 높이는 자동 조정, 화면 위치는 윗쪽 0 & 왼쪽 0, 플레이어 테두리없이, 2회 반복으로 재생
ffplay -v error bullfinch.mp4 -x 600 -top 0 -left 0 -noborder -loop 2
# 오디오 파형을 보여주는 모드로 재생
ffplay -v error bullfinch.mp4 -showmode waves
# 오디오를 제외한 비디오만 전체 화면으로 재생
ffplay -v error bullfinch.mp4 -an -fs
더 많은 옵션은 공식 문서에서 확인할 수 있다.
기본 단축키
입력키 | 기능 |
---|---|
M | Mute (음소거) |
Space | Pause (일시 정지) |
F / Double Click | Full Screen (전체 화면) |
0 | 볼륨 업 |
9 | 볼륨 다운 |
W | 사이클모드 |
S | (일시 정지 상태에서) 1프레임씩 앞으로 이동 |
← / → | 10초씩 앞뒤로 이동 |
↑ / ↓ | 1분씩 앞뒤로 이동 |
ESC | 종료 |