ffmpeg 컴파일 설치

예전에도 언급한 것이지만 ffmpeg를 컨테이너에서 컴파일해서 사용하고 싶었다. CUDA와 관련되어 어려번 삽질한 경험이 있어서 한 번에 할 수 있는 방법을 찾아 보았다. 예전보다 AI가 응답을 잘 해주기 때문에 개발자용 컨테이너가 있는 것을 알게 되었다. 그래서 다음과 같은 방법을 시도했다.

호스트에 CUDA 최신 버전을 설치한다.

CUDA Toolkit 과 Driver를 설치한다. 난 proprietary kernel module 를 이용했다.

CUDA와 관련된 것들이 있는 컨테이너를 이용한다. 하다보니 ubuntu 22.04 를 선택했는데 24.04를 선택했어도 잘 될 것 같다.

4번째 줄의 옵션을 저렇게 하지 않으면, 인코딩 할 때에 오류가 생긴다.

docker run --gpus all \
  -it --name ffmpeg \
  --restart always \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  nvidia/cuda:12.9.1-devel-ubuntu22.04
echo 'Acquire::http::Proxy "http://rcc01.work:3142";' > /etc/apt/apt.conf
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 
apt-get -y update && apt-get -y upgrade
apt-get -y install apt-utils	build-essential	git	nasm	pkg-config	libx264-dev	libx265-dev	libnuma-dev	libpostproc-dev	libass-dev	fontconfig	libavcodec-dev	libavformat-dev	software-properties-common

다음 방법으로 ffmpeg를 설치한다.

ffnvcodec 설치한다.

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

cd nv-codec-headers
sudo make install
cd –    

ffmpeg를 다운 받는다.

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/

./configure는 다음을 것으로 한다.

./configure --enable-nonfree --enable-cuda --enable-cuvid --enable-nvenc --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared --enable-gpl --enable-libx264 --enable-libx265 --enable-libass --enable-fontconfig
echo '/usr/local/lib' >> /etc/ld.so.conf
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64' >> ~/.bashrc
make -j 6
make install