«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

VIDEOCUBE

FFmpeg 설치 해보자 - CentOS 6.3 본문

시스템

FFmpeg 설치 해보자 - CentOS 6.3

라떼청년 2018. 1. 4. 01:16



FFmpeg 이란 

ㄴ 위키 백과에 따르면 디지털 음성 스트림과 영상 스트림에 대해서 다양한 종류의 형태로 기록하고 변환하는 컴퓨터 프로그램이라 한다.

CLI 형태로 제공이 되며, 오픈소스 라이브러리로 구성이 된다.


공식 사이트는 다음과 같다.

ㄴ http://ffmpeg.org 


FFmpeg 을 설치해보자. 

ㄴ http://ffmpeg.org/download.html

각 OS 에 맞게 이미 빌드된 버전을 다운로드 받을 수 있으며, 


Git 로 현재 개발중인 버전 또는 여러 다양한 버전을 가진 소스를 귀하의 시스템에서 빌드 할 수 있도록 지원하고 있다


후자를 선택해보겠다.


작업 폴더를 만들기 위해 다음과 같이 폴더를 생성하자


mkdir ~/ffmpeg_sources

cd ~/ffmpeg_source


FFMPEG Download

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


다운로드 하고 있는동안 다음 FFMPEG  에 대한 라이브러리에 대해서 설명하고자 한다.


지원하는 라이브러리는 다음과 같다

libavutil 

ㄴ 멀티미디어 프로그래밍을 지원하는 유틸리티 라이브러리입니다. 

ㄴ 안전한 휴대용 문자열 함수, 난수 생성기, 데이터 구조, 추가 수학 함수, 암호화 및 멀티미디어 관련 기능 (예 : 픽셀 및 샘플 형식의 열거 형)이 포함되어 있습니다.

libswscale

ㄴ 최적화 된 이미지 크기 조정 및 색상 공간 및 픽셀 형식 변환 작업을 수행합니다. 

ㄴ Rescaling : 비디오 크기를 변경하는 프로세스입니다. 몇 가지 재조정 옵션과 알고리즘을 사용할 수 있습니다. 이것은 대개 손실 프로세스입니다. 

ㄴ 픽셀 포맷 변환 : 이미지 YUV420P에서 RGB24로 변환 된 이미지 형식과 색상 공간을 변환하는 프로세스입니다. 

libswresample

ㄴ 최적화 된 오디오 리샘플링, 리 매트릭스 및 샘플 포맷 변환 작업을 수행합니다.

ㄴ 리샘플링 (Resampling) : 예를 들어 44100Hz에서 8000Hz의 높은 샘플 속도와 같이 오디오 속도를 변경하는 과정입니다. .

ㄴ 포맷 변환 : 샘플의 유형을 변환하는 프로세스입니다 (예 : 16 비트 부호있는 샘플에서 부호없는 8 비트 또는 부동 샘플로 변환). 

ㄴ Rematrixing : 채널 레이아웃을 스테레오에서 모노로 변경하는 과정입니다. 

libavcodec

ㄴ 일반적인 인코딩 / 디코딩 프레임 워크를 제공하며 오디오, 비디오 및 자막 스트림 용 다중 디코더 및 인코더 및 여러 비트 스트림 필터를 포함합니다.

libavformat

ㄴ 오디오, 비디오 및 자막 스트림을 멀티플렉싱 및 디 멀티플렉싱 (다중화 및 디 멀티플렉싱)하는 일반 프레임 워크를 제공합니다. 

ㄴ 멀티미디어 컨테이너 포맷을위한 멀티플렉서 및 디멀티플렉터를 포함합니다.

ㄴ 미디어 자원에 액세스하기위한 여러 입출력 프로토콜을 지원합니다.

libavdevice

ㄴ 일반적인 멀티미디어 입 / 출력 장치에서 잡아 내고 렌더링 할 수있는 일반 프레임 워크를 제공하며 Video4Linux2, VfW, DShow 및 ALSA를 비롯한 여러 입출력 장치를 지원합니다.

libavfilter

ㄴ 여러 필터, 소스 및 싱크를 포함하는 일반적인 오디오 / 비디오 필터링 프레임 워크를 제공합니다.


다운로드를 다 받았다면 ffmpeg 폴더를 들어가보자

git branch -a


* master

  remotes/origin/HEAD -> origin/master

  remotes/origin/master

  remotes/origin/oldabi

  remotes/origin/release/0.10

  remotes/origin/release/0.11

  remotes/origin/release/0.5

  remotes/origin/release/0.6

  remotes/origin/release/0.7

  remotes/origin/release/0.8

  remotes/origin/release/0.9

  remotes/origin/release/1.0

  remotes/origin/release/1.1

  remotes/origin/release/1.2

  remotes/origin/release/2.0

  remotes/origin/release/2.1

  remotes/origin/release/2.2

  remotes/origin/release/2.3

  remotes/origin/release/2.4

  remotes/origin/release/2.5

  remotes/origin/release/2.6

  remotes/origin/release/2.7

  remotes/origin/release/2.8

  remotes/origin/release/3.0

  remotes/origin/release/3.1

  remotes/origin/release/3.2

  remotes/origin/release/3.3

  remotes/origin/release/3.4

현재 Master 버전으로 선택되어 있으며 다양한 버전을 선택할 수 있다.


설치를 진행 해보자

참고 ) https://trac.ffmpeg.org/wiki/CompilationGuide/Centos


Dependencies 설치

yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel




NASM 설치 ( Assembler )

cd ~/ffmpeg_sources
curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.13.02/nasm-2.13.02.tar.bz2
tar xjvf nasm-2.13.02.tar.bz2
cd nasm-2.13.02
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install


Yasm 설치 ( Assembler )

cd ~/ffmpeg_sources
curl -O -L http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install


libx264 설치 ( Video Encoder )

cd ~/ffmpeg_sources
git clone --depth 1 http://git.videolan.org/git/x264
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install

Warning: If you get Found no assembler. Minimum version is nasm-2.13 or similar after running ./configure then the outdated nasm package from the repo is installed. Run yum remove nasm && hash -r and x264 will then use your newly compiled nasm instead.

만약에 assembler 가 설치 되어 있지 않거나 2.13 이하 버전이 설치 되어 있는 경우 yum 으로 nasm 을 지우고 hash -r 하면 새로 설치된 nasm 으로 컴파일 할 수 있다.

H.264 video encoder.


libx265 설치 ( Video Encoder )

cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install


x265 x264 는 GPL 버전으로 빌드 옵션에 GPL 을 허용해야 한다

--enable-gpl --enable-libx264 --enable-libx265

H.265/HEVC video encoder.


libfdk_aac 설치 ( Audio Encoder )

cd ~/ffmpeg_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

AAC 는 GPL 버전으로 빌드 옵션에 GPL 을 허용해야 한다

--enable-gpl --enable-nonfree --enable-libfdk_aac

AAC audio encoder.


libmp3lame 설치 ( Audio Encoder )

cd ~/ffmpeg_sources
curl -O -L http://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install

--enable-libmp3lame

MP3 audio encoder.


libopus 설치 ( Audio Encoder/Decoder )

cd ~/ffmpeg_sources
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz
tar xzvf opus-1.2.1.tar.gz
cd opus-1.2.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

--enable-libopus

Opus audio decoder and encoder.


libogg 설치 ( vorbis 를 위한 설치 )

cd ~/ffmpeg_sources
curl -O -L http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.gz
tar xzvf libogg-1.3.3.tar.gz
cd libogg-1.3.3
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

Ogg bitstream library


libvorbis 설치 ( Audio Encoder )

cd ~/ffmpeg_sources
curl -O -L http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
tar xzvf libvorbis-1.3.5.tar.gz
cd libvorbis-1.3.5
./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
make
make install

--enable-libvorbis

Vorbis audio encoder. Requires libogg


libvpx 설치 ( Video Encoder )

cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install

--enable-libvpx

VP8/VP9 video encoder and decoder.


~/ffmpeg_build 에 필요한 라이브러리는 전부 설치되었다


FFmpeg 을 설치해 보자

cd ~/ffmpeg_sources
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs=-lpthread \
  --extra-libs=-lm \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libfdk_aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree
make
make install
hash -r


CPU 에 맞게 make 에 옵션을 지정하여 좀더 빠르게 진행도 가능하다. 

이 부분은 추후에 진행 하고자 하고 오늘은 여기까지 ~ 후 우 


root@linux-01:/root> ffmpeg

ffmpeg version N-89674-g57d0c24132 Copyright (c) 2000-2018 the FFmpeg developers

  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)

  configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/root/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree

  libavutil      56.  7.100 / 56.  7.100

  libavcodec     58.  9.100 / 58.  9.100

  libavformat    58.  3.100 / 58.  3.100

  libavdevice    58.  0.100 / 58.  0.100

  libavfilter     7.  8.100 /  7.  8.100

  libswscale      5.  0.101 /  5.  0.101

  libswresample   3.  0.101 /  3.  0.101

  libpostproc    55.  0.100 / 55.  0.100

Hyper fast Audio and Video encoder

usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...


반응형

'시스템' 카테고리의 다른 글

CentOS 6 Yum repository update  (0) 2021.03.18
Window10 WSL 로 Ubuntu 설치하기  (0) 2019.01.08
메일 서버를 이용해 메일을 보내보자  (0) 2017.12.16
Python 서버 구축하기 [CGIHTTPServer]  (0) 2017.12.03
Nginx 설치하기  (0) 2017.11.25
Comments