1. FFmpeg란
- FFmpeg (www.ffmpeg.org) 은 비디오, 오디오, 이미지를 쉽게 인코딩 (Encoding), 디코딩 (Decoding), 먹싱 (Muxing), 디먹싱 (Demuxing) 할 수 있도록 도움을 주는 멀티미디어 프레임워크
- FFmpeg 홈페이지에서 FFmpeg을 소개
FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
It supports the most obscure ancient formats up to the cutting edge.
No matter if they were designed by some standards committee, the community or a corporation.
- 2000년 2월에 발표되고, 지속적으로 개발되고 있는 모든 디지털 영상, 음성에 대한 인코딩과 디코딩, 스트리밍이 가능한 오픈소스 프로젝트
- 거의 업계 표준으로 자리 잡아 유명한 대부분의 영상 관련 툴들은 다 사용
- ffmpeg은 libavcodec를 기반
- ffmpeg 제공하는 툴
ffmpeg 제공 툴 | 설명 |
ffmpeg | - 미디어 포맷 변환 도구 |
libavcodec | - 오디오/비디오 코덱 라이브러리 |
libavdevice | - 입출력 장치 제어 라이브러리 |
libavfilter | - 미디어 필터 라이브러리 |
libswscale | - 이미지 처리 라이브러리 |
libswresample | - 오디오 처리 라이브러리 |
libavformat | - 멀티미디어 컨테이너의 디먹서/먹서 라이브러리 |
ffserver | - 라이브 방송을 하는 멀티미디어 스트리밍 서버 |
- 곰player ,KMP , AV player, MX player 같은 것들이 ffmpeg을 사용하는데 ffmpeg은 Fabrice Bellard가 시작했고 지금은 마이클 니더마이어(Michael Niedermayer)가 이끌고 있음
- 사용은 실행 파일 형태나 lib형태로 자기 프로그램에서 사용
- ffmpeg의 기본구조
2. 인코딩(encoding)이란
- 문서의 용량을 줄이기 위하여 zip 프로그램 (예: 알집, 반디집, 빵집)을 사용해서 문서를 압축하는 것처럼 동영상이나 이미지의 용량을 줄이기 위해서 압축하는 과정을 의미
- 동영상은 일반 문서와 특성이 달라서 전용의 압축 알고리즘을 사용
- 국내에서 동영상 재생에 많이 사용하는 곰플레이어의 개발사에서 만든 곰인코더 등이 동영상을 인코딩하는 프로그램
3. 디코딩(decoding)이란
- 압축된 동영상을 재생하기 위하여 압축을 해제하는 과정을 디코딩이라고 함
- 일반적으로 동영상 재생 프로그램 (예: 곰플레이어)들은 모두 내부적으로 압축을 해제하고 압축이 해제된 영상 및 오디오 데이터를 재생 프로그램에서 직접 재생
- 국내에서 많이 사용하는 대표적인 동영상 재생 프로그램인 곰플레이어, KMP 플레이어, 다음과 네이버의 동영상 플레이어들이 내부적으로 FFmpeg을 사용하여 압축된 동영상의 압축을 해제한 후 압축이 해제된 데이터를 적절한 UI를 통해서 출력
- 최근에는 PC 환경 뿐만 아니라 아이폰과 안드로이드 폰의 거의 대부분의 동영상 재생 프로그램들이 FFmpeg을 사용
4. 먹싱(muxing)과 디먹싱(demuxing)이란
- 엔지니어링 분야에서 먹싱 (Muxing)이라는 단어는 여러 입력을 하나로 합치는 과정을 의미하고 디먹싱 (Demuxing)이라는 과정은 하나로 합쳐진 입력을 다시 여러 출력으로 만드는 것을 의미
- PC에서 다운로드를 받아서 보시는 동영상은 사실 여러 장의 정지 영상과 오디오가 하나의 파일로 (예: .avi, .mkv, *.mov) 먹싱되어 있는 것
- 먹싱되기 전에 정지 영상과 오디오는 아래의 그림과 같이 각각 인코딩 과정을 통해서 압축이 되어 있는 상태
- 먹싱된 동영상을 재생하기 위해서는 인코딩, 먹싱 과정과 반대로 먼저 디먹싱을 통해서 압축된 정지 영상과 압축된 오디오로 분리한 후 각각의 데이터를 디코딩해야
5. 왜 FFmpeg 인가?
- 영상 및 오디오를 압축하는 알고리즘에서는 수많은 종류가 존재
- 영상 및 오디오를 정상적으로 재생하라면 수 많은 압축 알고리즘 (디코딩 부분)을 모두 직접 구현해야 함 → FFmpeg은 오픈소스로 전 세계의 개발자들이 개발을 하기 때문에 수많은 종류의 영상 및 오디오 코덱 및 파일 포맷 등을 지원
- FFmpeg은 멀티미디어 계의 리눅스 → 리눅스가 더이상 선택이 아닌 필수인 것처럼 FFmpeg 역시 멀티미디어 파일을 다루는 데 있어서 더 이상 선택이 아니며 필수
참고 자료
'Media(미디어) > FFmpeg' 카테고리의 다른 글
FFMPEG 옵션 (0) | 2023.09.25 |
---|---|
CentOS 7에서 FFmpeg 설치 및 간단 테스트 (0) | 2023.09.25 |