0. 개발 환경

  • OS : Windows 10 64bit
  • VS : Visual Studio 2010 (최신 버전도 상관없음)

 

1. 라이브러리 설치

가장 먼저, FFmpeg 홈페이지에 들어가 라이브러리를 다운받아야 합니다.

 

ffmpeg.org/download.html

 

Download FFmpeg

If you find FFmpeg useful, you are welcome to contribute by donating. More downloading options Git Repositories Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available. Releases Approximately every 6

ffmpeg.org

여기서 헷갈렸던게 빌드되어 있는 라이브러리 파일이 보이지 않아 cygwin으로 컴파일 시도하고, 에러 원인 찾고 아주 난리난리였네요... 😂😂😂

 

특히 많은 블로그 글에서 zeranoe라는 사이트를 통해 라이브러리를 다운받던데, 해당 사이트는 서비스 중단되어 있고 다른 사이트가 있어서 더 헷갈렸습니다.

 

어찌어찌 잘 찾아보니 빌드된 파일이 있길래 ㅎㅎ; 정리해서 올립니다.

 

링크를 타고 들어가면 위와 같은 화면이 뜹니다.

 

여기서 빨간색 테두리를 친 링크를 누릅니다.

 

그러면 FFmpeg의 자동 빌드 파일을 다운받을 수 있는 깃허브 페이지로 이동하게 됩니다.

 

빌드 항목 중 빨간색 테두리를 친 shared 파일 중 하나를 선택하면 되는데, 둘의 차이는 gpl/lgpl 라이선스 차이이니 본인이 잘 판단하시면 됩니다.

 

gpl은 프로그램 소스코드의 공개 의무를 가지게 되고, lgpl은 동적 라이브러리를 참조하는 경우 프로그램 소스코드는 공개하지 않고 FFmpeg의 소스코드만 공개하면 됩니다.

 

저는 일단 gpl로 했었으나 lgpl로 변경할 예정입니다.

 

원하는 위치에 압축 파일을 해제하면 위와 같은 디렉토리 구조가 나타납니다.

 

lib에는 .lib 파일이, include에는 .h 파일이, bin에는 .dll 파일이 들어있습니다.

 

디렉토리 이름은 VS에서 설정하기 쉽게 간단한 이름으로 수정하시는게 좋습니다.

 

2. VS 프로젝트 설정

FFmpeg을 사용할 새 프로젝트를 생성합니다.

 

사진에는 이름에 'test'라고 써져 있는데 실제로는 'Decoder'로 생성했으니 참고해주길 바랍니다.

 

빌드를 빠르게 하기 위해 미리 컴파일된 헤더도 추가해줍니다.

 

생성이 완료되면 위와 같은 프로젝트 구조를 확인할 수 있을 겁니다.

 

이제 라이브러리 경로를 설정해주기 위해 프로젝트를 우클릭하고 속성 페이지를 엽니다.

 

구성 속성 > VC++ 디렉터리 항목을 클릭합니다.

 

여기서

 

  • 포함 디렉터리 : "FFmpeg 설치 경로\include"
  • 라이브러리 디렉터리 : "FFmpeg 설치 경로\lib"

와 같이 경로를 입력해줍니다.

 

그리고 프로젝트를 빌드하고 바로 실행할 수 있도록 구성 속성 > 디버깅 항목 중 환경 속성 값에 "FFmpeg 설치 경로\bin"을 설정해줍니다.

 

(2020-09-29 추가) ~

 

위와 같이 설정을 해도 '확인할 수 없는 외부 참조입니다.' 에러가 뜨는 경우

 

이는 FFMPEG과 플랫폼이 맞지 않아 발생하는 문제입니다.

 

Visual Studio 디버깅 버튼 옆의 플랫폼 메뉴에서 '구성 관리자...'을 클릭합니다.

 

저는 먼저 작업을 진행해서 'x64' 항목이 있지만, 보통은 'Win32'만 존재합니다.

 

활성 솔루션 플랫폼을 누르면 보이는 '<새로 만들기...>' 항목을 클릭합니다.

 

그러면 Visual Studio가 알아서 x64 플랫폼 정보를 입력해줍니다.

 

확인을 클릭해 x64 플랫폼을 만들 해당 플랫폼을 활성화합니다.

 

이제 빌드가 쨘! 😋

~ (2020-09-29 추가)

3. 컴파일

FFmpeg 로그를 출력하는 간단한 예제를 통해 설치가 정상적으로 이뤄졌는지 확인해보겠습니다.

 

stdafx.h

 

Decoder.cpp

 

헤더 파일과 메인 cpp 파일에 위와 같이 코드를 작성한 뒤 프로그램을 실행하면 아래와 같이 출력이 되어야 합니다.

 

 

4. VS 2010 추가 설정

 

만약 VS 2010을 사용하신다면, common.h에서 inttypes.h를 찾을 수 없다는 오류가 뜰 겁니다. 🤨

 

사실 FFmpeg이 지원하는(빌드 가능한) VS 버전이 2013부터인데, VS 2010에는 inttypes.h이 포함되어 있지 않아 발생하는 문제입니다.

 

이를 해결하기 위해 inttypes.h 파일을 따로 다운로드 받습니다.

 

code.google.com/archive/p/msinttypes/

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

다운로드 받은 압축 파일을 보면 헤더 파일이 두 가지가 있을텐데, 하나는 이미 VS 2010에 포함되어 있으므로 inttypes.h만 "ffmpeg 설치 경로/include/libavutil"에 복사해 넣어줍니다.

 

그리고 같은 경로의 common.h 헤더 파일을 열고 아래와 같이 코드를 수정합니다.

 

#include <inttypes.h>

->

#include "inttypes.h"

 

이 상태로 프로젝트를 실행하면 정상적으로 수행되는 것을 확인할 수 있습니다.


WRITTEN BY
pf1999
프로그래밍 도중 삽질하다가 해결한 내용 공유용 블로그

,