FFmpeg - 개발역사와 기본 빌드 (1)

imtaejong·2020년 4월 19일
0

FFmpeg Filter

목록 보기
1/2
post-thumbnail

FFmpeg


FFmpeg?

  • ffmpeg은 빨리감기의 약자인 FF(Fast-Forward)와 mpeg (비디오 표준 그룹)의 합성어입니다.
  • ffmpeg 로고에 표시되어 있는 지그재그 모양은 mpeg 코덱에서 사용하는 엔트로피 인코딩 방식을 표현한 것이라고 합니다. (세상에..)

누가 만들었나?

  • Fabrice Bellard라는 프랑스 출신의 개발자가 만들었고 이 사람은 QEMU, ARM기반의 C Compiler인 Tiny C Compiler와 같은 소프트웨어도 개발했습니다.

  • 그 후 Michael Niedermayer 라는 개발자가 약 11년간 개발을 주도했다고 해요 (2015년까지)

  • 그리고 2014년에 구글 개발자 2명(Mateusz Jurczyk, Gynvael Coldwind)이 퍼지 테스트를 통해 약 1,000개의 버그를 수정했다고 발표합니다.

  • 이런거 개발하는 들 머리속이 너무 궁금함.. -.-


언제 개발했나?

  • 최초 Release는 2000년 12월 20일에 이뤄졌습니다. (첫 커밋 메세지를 보시라..)

어디서 사용하고 있나?

  • 알려진 바로는 Blender, VLC, M Player, Google Chrome 등에서 사용하고 있습니다.
  • 이들이 사용 하는 부분은 정확하게는 libavcodec, libavformat, 그리고 명령행 도구인 libav의 도구를 사용하고 있는 것으로 알려져있습니다.

    libavcodec은 오디오와 비디오 코덱 인코더 및 디코더를 포함하고 있는 라이브러리 입니다.
    libavformat은 멀티미디어 컨테이너 포멧을 위한 먹서와 디먹서를 포함하고 있는 라이브러리 입니다.


무엇을 만드나?

  • ffmpeg은 비디오 및 오디오를 포함한 다양한 멀티미디어 파일, 실시간 스트림을 처리하기 위해 다양한 라이브러리를(외부 라이브러리 포함) 제공합니다.
  • 무료 오픈 소스 프로젝트이지만, 일부 외부 라이브러리는 non-free 입니다.

    기본이니 기술 얘기는 짧게
    무료가 아닌 라이브러리를 쓸 때는 build 과정에서 -configure --enable-nonfree 옵션을 활성화 해 줘야 합니다. 이 경우 결과물로 나온 바이너리 파일 및 라이브러리를 재배포해서는 안됩니다.


어떻게쓰나?

  • FFmpeg team에서s는 ffmpeg git을 통해 권장합니다.
  • git을 통한 빌드 외에도 https://ffmpeg.org/releases/ 사이트에서 원하는 버전을 scp 혹은 rsync와 같은 방법으로 내려받은 후 빌드를 진행 할 수도 있습니다.

# Ubuntu 기준으로 간략하게 설명드리겠습니다.
# 여기서는 간단하게만 알아보고 더 많은 빌드 방법은 차근차근 업데이트 하겠습니다.
# 원하는 패키지나 빌드 방법이 있으시다면 댓글로 알려주세요. 아는 범위 내에서 설명드리겠습니다 :)

# 빌드를 위해 ffmpeg 프로젝트를 git으로부터 clone 합니다.
$ git clone https://github.com/FFmpeg/FFmpeg.git
$ cd ./FFmpeg

# 원하는 버전을 확인합니다.
$ git tag -l
...
n3.2.4
n3.2.5
n3.2.6
n3.2.7
n3.2.8
n3.2.9
n3.3
n3.3-dev
n3.3.1
n3.3.2
n3.3.3
n3.3.4
n3.3.5
n3.3.6
n3.3.7
n3.3.8
n3.3.9
n3.4
n3.4-dev
n3.4.1
n3.4.2
n3.4.3
n3.4.4
n3.4.5
n3.4.6
n3.4.7
n3.5-dev
n4.0
n4.0.1
...

# 빌드 할 버전으로 checkout 합니다.
$ git checkout tags/n4.0.1

# 빌드를 해봅니다.
./configure
sudo make install -j`nproc`

Trouble Shooting

  • git clone을 해오는 과정에서 습관적으로 --depth=1을 추가하는 경우가 있습니다. 이 경우 최근 커밋만 클론해오므로 빼야합니다.

0개의 댓글