영상 변환, 실시간 스트리밍, 화면 녹화, 오디오 추출 등 멀티미디어 관련 개발을 하다 보면 가장 많이 접하게 되는 기술이 FFmpeg입니다.
FFmpeg는 다양한 오디오·비디오 포맷을 처리할 수 있는 오픈소스 멀티미디어 프레임워크로, 인코딩·디코딩·변환·스트리밍·필터링 등 거의 모든 미디어 처리 기능을 제공합니다.
FFmpeg란?
FFmpeg는 "Fast Forward MPEG"의 약자로, 멀티미디어 데이터 처리에 특화된 오픈소스 프로젝트입니다. 비디오와 오디오의 기록(Recording), 변환(Transcoding), 스트리밍(Streaming), 필터링(Filtering), 재생(Playback)을 지원합니다.
특히 다음과 같은 작업에 널리 사용됩니다.
- 동영상 포맷 변환
- 영상 압축
- 오디오 추출
- 라이브 스트리밍
- 화면 녹화
- CCTV 영상 처리
- 영상 편집 자동화
- AI 영상 분석 전처리
FFmpeg의 특징
1. 강력한 포맷 지원
FFmpeg는 최신 포맷부터 오래된 레거시 포맷까지 광범위하게 지원합니다. 다양한 코덱과 컨테이너를 처리할 수 있도록 설계되었습니다.
예시:
- MP4
- AVI
- MKV
- MOV
- FLV
- MPEG
- H.264
- H.265(HEVC)
- AAC
- MP3
2. 크로스 플랫폼 지원
다양한 운영체제에서 동작합니다.
- Windows
- Linux
- macOS
- BSD
- Solaris
3. 오픈소스
무료로 사용할 수 있으며 소스코드 공개를 통해 지속적으로 발전하고 있습니다.
FFmpeg 아키텍처
FFmpeg는 여러 라이브러리로 구성됩니다.
| 라이브러리 | 역할 |
| libavcodec | 오디오/비디오 인코딩·디코딩 |
| libavformat | 컨테이너 포맷 처리 |
| libavfilter | 필터 적용 |
| libavdevice | 카메라·마이크 장치 입출력 |
| libswscale | 영상 크기 변경 및 색상 변환 |
| libswresample | 오디오 리샘플링 |
주요 도구
ffmpeg
가장 대표적인 명령행 도구입니다.
ffmpeg -i input.mp4 output.avi
ffprobe
미디어 파일 정보를 분석합니다.
ffprobe video.mp4
- 해상도
- 비트레이트
- 프레임률
- 코덱 정보
ffplay
가벼운 미디어 플레이어입니다.
FFmpeg가 수행하는 작업
영상 변환
ffmpeg -i input.avi output.mp4
오디오 추출
ffmpeg -i input.avi output.mp4
영상 크기 변경
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
해상도를 변경합니다.
라이브 스트리
ffmpeg -re -i input.mp4 -f flv rtmp://server/live
WebRTC와 FFmpeg의 관계
많은 개발자가 FFmpeg와 WebRTC를 함께 사용합니다.
카메라
↓
FFmpeg
↓
인코딩(H.264)
↓
WebRTC
↓
브라우저
일반적으로:
- FFmpeg → 미디어 가공 및 인코딩
- WebRTC → 실시간 전송
역할을 담당합니다
DirectShow와 FFmpeg 비교
| 목적 | Windows 미디어 파이프라인 | 미디어 처리 엔진 |
| 플랫폼 | Windows 중심 | 멀티 플랫폼 |
| 포맷 지원 | OS 의존 | 매우 광범위 |
| 스트리밍 | 가능 | 강력 |
| 개발 난이도 | COM 기반 | CLI 및 API 제공 |
FFmpeg가 많이 사용되는 분야
스트리밍 서비스
- YouTube
- 라이브 방송 플랫폼
- IPTV
CCTV/영상보안
- 영상 저장
- 포맷 변환
- 실시간 송출
AI 영상 분석
- 프레임 추출
- 객체 탐지 전처리
- 영상 데이터셋 생성
영상 편집 자동화
- 자막 삽입
- 워터마크 삽입
- 썸네일 생성
FFmpeg의 장점과 단점
장점
- 무료 오픈소스
- 강력한 포맷 지원
- 뛰어난 성능
- 자동화에 최적화
- 다양한 개발 언어와 연동 가능
단점
- 명령어가 복잡함
- 초보자의 진입장벽이 높음
- 옵션이 매우 많아 학습 필요
결론
FFmpeg는 사실상 멀티미디어 업계의 표준 도구라고 할 수 있습니다. 영상 변환부터 스트리밍, 캡처, AI 전처리까지 대부분의 미디어 처리 기능을 제공하며, DirectShow가 장치 제어 중심이라면 FFmpeg는 "미디어 데이터 처리의 핵심 엔진" 역할을 담당합니다. WebRTC, DirectShow, GStreamer 등과 함께 사용되며 현대 영상 서비스 구축에서 빠질 수 없는 기술입니다.
'Programming > ETC' 카테고리의 다른 글
| LiveKit 소개: 음성 채팅 서비스를 위한 최신 WebRTC 플랫폼 (0) | 2026.08.11 |
|---|---|
| Windows 에 WSL2로 Docker 엔진 설치 하는 방법? (0) | 2026.07.15 |
| DirectShow란? Windows 멀티미디어 처리의 핵심 기술 정리 (1) | 2026.07.10 |
| InfluxDB2 설치 (0) | 2026.07.07 |
| [VB.NET] 간단한 시리얼(RS232) 통신 (0) | 2025.11.14 |