🗓️ 2023. 09. 02
⏱️ 6

ffmpeg 1부 - 소개 및 설치

ffmpeg과 친구들

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를 입력하면 마지막 줄에 겁나 빠른 오디오와 비디오 인코더라고 출력된다.

ffmpeg가 여러 라이브러리로 구성돼있는 걸 확인할 수 있다.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

더 많은 옵션은 공식 문서에서 확인할 수 있다.

기본 단축키

입력키기능
MMute (음소거)
SpacePause (일시 정지)
F / Double ClickFull Screen (전체 화면)
0볼륨 업
9볼륨 다운
W사이클모드
S(일시 정지 상태에서) 1프레임씩 앞으로 이동
← / →10초씩 앞뒤로 이동
↑ / ↓1분씩 앞뒤로 이동
ESC종료
돌아가기
© 2024 VERYCOSY.