VIDEOCUBE
FFmpeg 분석 (2) - 빌드 본문
현 게시된 글은 FFMpeg 에 게시된 글은 MinGW, MSYS을 사용하지 않고, WSL 을 이용한 윈도우 빌드를 기반으로 작성되었습니다.
1. 준비하기
1) WSL 을 설치 하도록 합니다. 자세한 내용은 다음 글을 참조하여 주시면 됩니다.
Window10 WSL 로 Ubuntu 설치하기 (tistory.com)
2) Visual Studio 설치하기
필자는 기존 OBS Studio 빌드를 해봄으로서 Visual Studio 2019가 설치 되어 있습니다.
OBS Studio 분석 (1) - 준비 (tistory.com)
3) FFmpeg 소스 다운로드 하기
https://ffmpeg.org/download.html
필자는 Source Code 를 Git 으로 연결하여 설정하였습니다.
Git 에 연결하는 SourceTree 등을 이용하여, 윈도우 환경에서 소스를 받게 되면,
configure 파일 등에 개행이 추가 되는 경우가 생기므로, 빌드 시 많은 애로 사항이 발생이 됩니다.
되도록이면, ubuntu WSL 을 이용하여, Git 으로 Clone 해 주시기 바랍니다.
필자는 D:\develop\ffmpeg 에 clone 을 하였으며, clone 시 https 인증서 문제로 연결이 되지 않는다면,
https > http 로 하거나,
git clone http://git.ffmpeg.org/ffmpeg.git ffmpeg
http.sslVerify 를 False 로 설정 후 연결하시면 됩니다.
git config --global http.sslVerify false
최초 받은 소스는 master 에서 직접 받아온 버전이기 때문에 버전 선택 후 checkout 을 하도록 합니다.
git checkout release/6.1
필자는 현재 2023 11월 10일 FFmpeg 6.1 "Heaviside" 버전으로 빌드를 진행하려 합니다.
4) FFmpeg 소스 빌드 하기
위 소스까지 모두 준비를 마쳤으면, 현재 사용한 WSL (Ubuntu) 를 닫고,
윈도우 시작 버튼을 눌러 Visual Studio 2019 폴더에서 Developer PowerShell for VS 2019 를 눌러
관리자 모드로 실행합니다.
위와 같은 창이 나타나면 다음 명령어를 실행합니다.
wsl
위 명령어를 실행 하게 되면 다음과 같은 화면을 보게 됩니다.
FFmpeg 소스가 있는 디렉토리로 이동을 합니다.
필자는 D:/develop/ffmpeg 에 있으므로 다음과 같이 입력합니다.
cd /mnt/d/develop/ffmpeg
해당 폴더로 이동이 되었다면, 다음 명령어를 입력하도록 합니다.
./configure \
--toolchain=msvc \
--arch=x86_64 \
--enable-yasm \
--disable-x86asm \
--enable-asm \
--enable-shared \
--enable-w32threads \
--disable-doc \
--disable-static \
--prefix=/mnt/d/ffmpeg/
위 명령어를 실행하였을 때, 에러가 발생을 한다면, Git 으로 소스를 받을 때, 개행이 자동으로 추가 되는 경우가 있어 발생이 될 수 있으니, 만약 개행이 존재 한다면 WSL 환경에서 다시 받으시거나, 개행을 없애야 합니다.
개행의 문제는 configure 파일 뿐만아니라, 빌드 시에 사용되는 compat/windows 에 사용되는 스크립트 모두 개행이 추가 되어 빌드에 영향을 받을 수 있으니 꼭 리눅스 환경에서 연결하여 작업하시길 권합니다.
위 명령어를 실행하게 되면 현재 정의된 설정 정보 및 디코더, 인코더 등 실행 가능한 정보가 출력이 되며 완료가 됩니다.
물론 다음 내용은 빌드에는 구지 문제가 없으나, 글자가 깨져 노출이 될 수 있으므로
vi config.h
를 하여
#define CC_IDENT 부분을 영문으로 변경 해 주시면 됩니다.
make
make install
make 를 진행 하게 되면, 여러 경고 메세지를 확인 할 수 있는데, 무시 하고 진행하면 됩니다.
상당히 오랜 시간동안 빌드를 진행하게 됩니다.
후 make install 을 하게 되면
--prefix=/mnt/d/ffmpeg/
prefix 에 지정된 폴더로 파일이 생성됩니다
bin 폴더에는 각종 라이브러리와 ffmpeg, ffprobe 실행 파일이 있습니다.
include 폴더에는 각종 라이브러리의 header 파일이 있습니다.
lib 폴더에는 pkgconfig 와 def 파일이 있습니다.
- 주의 : linux 에서 build 를 진행하였기 때문에 pkgconfig 의 경우 linux 경로로 적용되어 있습니다.
사용에 유의 해 주세요
preset 정보 와 활용 예제 파일이 있습니다.
다음은 위 내용이 정상적으로 빌드가 되었는지, 빌드가 된 라이브러리를 다른 프로젝트에서 활용하는 방법을
기술하도록 하겠습니다.
'분석' 카테고리의 다른 글
FFmpeg 분석 (1) - 이해 (0) | 2023.12.31 |
---|---|
OBS Studio 분석 (3) - 구조 (0) | 2021.03.08 |
OBS Studio 분석 (2) - 빌드 (1) | 2021.03.02 |
OBS Studio 분석 (1) - 준비 (1) | 2021.02.21 |
[MPEG TS] 구조 분석 (0) | 2018.01.02 |