В статье говорится о том, как в операционной системе CentOS 7 установить ffmpeg с основными внешними библиотеками кодеков и запустить трансляцию видеороликов в локальной сети
- устанавливаем пакеты, необходимые для скачивания и компиляции дистрибутивов
- yum install bzip2 git gcc libtool automake autoconf gcc-c++ freetype-devel mercurial cmake
- в папке /etc/yum.repos.d создаем файл nasm.repo следующего содержания
-
[nasm]
name=The Netwide Assembler
baseurl=http://www.nasm.us/pub/nasm/stable/linux/
enabled=1
gpgcheck=0[nasm-testing]
name=The Netwide Assembler (release candidate builds)
baseurl=http://www.nasm.us/pub/nasm/testing/linux/
enabled=0
gpgcheck=0[nasm-snapshot]
name=The Netwide Assembler (daily snapshot builds)
baseurl=http://www.nasm.us/pub/nasm/snapshots/latest/linux/
enabled=0
gpgcheck=0 - устанавливаем nasm
- yum install nasm
- скачиваем дистрибутив ffmpeg и помещаем его в папку /root/ffmpeg
-
curl -L http://ffmpeg.org/releases/ffmpeg-3.4.tar.bz2 | tar xj -C /root
mv /root/ffmpeg-3.4 /root/ffmpeg - скачиваем дистрибутив библиотеки libx264 и выполняем установку
-
git clone --depth 1 http://git.videolan.org/git/x264 /root/ffmpeg/x264
cd /root/ffmpeg/x264
PKG_CONFIG_PATH="/opt/ffmpeg/lib/pkgconfig" ./configure --prefix="/opt/ffmpeg" --enable-static
make
make install - скачиваем дистрибутив библиотеки libfdk_aac и выполняем установку
-
git clone --depth 1 https://github.com/mstorsjo/fdk-aac /root/ffmpeg/fdk-aac
cd /root/ffmpeg/fdk-aac
./autogen.sh
PKG_CONFIG_PATH="/opt/ffmpeg/lib/pkgconfig" ./configure --prefix="/opt/ffmpeg" --disable-shared
make
make install - скачиваем дистрибутив библиотеки libmp3lame и выполняем установку
-
curl -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz | tar xz -C /root/ffmpeg
mv /root/ffmpeg/lame-3.100 /root/ffmpeg/lame
cd /root/ffmpeg/lame
./configure --prefix="/opt/ffmpeg" --disable-shared --enable-nasm
make
make install - скачиваем дистрибутив библиотеки libx265 и выполняем установку
-
cd /root/ffmpeg
hg clone https://bitbucket.org/multicoreware/x265
cd /root/ffmpeg/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/ffmpeg" -DENABLE_SHARED:bool=off ../../source
make
make install - скачиваем дистрибутив библиотеки libogg и выполняем установку
-
curl -L http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.gz | tar xz -C /root/ffmpeg
mv /root/ffmpeg/libogg-1.3.3 /root/ffmpeg/libogg
cd /root/ffmpeg/libogg
./configure --prefix="/opt/ffmpeg" --disable-shared
make
make install - скачиваем дистрибутив библиотеки libvorbis и выполняем установку
-
curl -L http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz | tar xz -C /root/ffmpeg
mv /root/ffmpeg/libvorbis-1.3.5 /root/ffmpeg/libvorbis
cd /root/ffmpeg/libvorbis
./configure --prefix="/opt/ffmpeg" --with-ogg="/opt/ffmpeg" --disable-shared
make
make install - скачиваем дистрибутив библиотеки libopus и выполняем установку
-
curl -L https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz | tar xz -C /root/ffmpeg
mv /root/ffmpeg/opus-1.2.1 /root/ffmpeg/opus
cd /root/ffmpeg/opus
./configure --prefix="/opt/ffmpeg" --disable-shared
make - скачиваем дистрибутив библиотеки libvpx и выполняем установку
-
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git /root/ffmpeg/libvpx
cd /root/ffmpeg/libvpx
./configure --prefix="/opt/ffmpeg" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm
make
make install - выполняем установку ffmpeg
-
cd /root/ffmpeg
PKG_CONFIG_PATH="/opt/ffmpeg/lib/pkgconfig" ./configure --prefix="/opt/ffmpeg" --extra-cflags="-I/opt/ffmpeg/include" --extra-ldflags="-L/opt/ffmpeg/lib -ldl" --pkg-config-flags="--static" --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libx264 --enable-nonfree --enable-libmp3lame --enable-libx265 --enable-libopus --enable-libvorbis --enable-libvpx
make
make install - для запуска трансляции файла выполняем следующую команду
- /opt/ffmpeg/bin/ffmpeg -re -i /root/1.mp4 -vcodec copy -acodec copy -f mpegts udp://239.116.29.1:23790
- Замечание: на момент написания статьи наиболее стабильно просмотр трансляций осуществлялся в программе SMPlayer и когда при этом видео и аудио в транслируемых файлах были сжаты с использованием кодеков AVC и AAC соответственно
- извлечь определенную часть файла можно командой
- /opt/ffmpeg/bin/ffmpeg -i src.mp4 -ss 00:10:00 -to 00:15:00 -vcodec copy -acodec copy dst.mp4