Server Fault Asked by Oliver Holmberg on November 4, 2021
Hello Serverfault friends,
I am about two days into attempting to install FFMPEG with dependencies on an AWS EC2 instance running the Amazon Linux AMI. I’ve installed FFMPEG on Ubuntu and Fedora systems with no problems in the past, and have read reportedly successful instructions on installing on Red Hat/Fedora. I have followed a number of tutorials and forum articles to do so, but have had no luck yet. As far as I can tell, the main problems are as followed:
(https://forums.aws.amazon.com/thread.jspa?messageID=229166)
On to my question: Has anyone successfully installed FFMPEG on Amazon Linux? Is there a fundamental incompatibility? If anyone could share specific instructions on installing ffmpeg on amazon linux I would be greatly appreciative. Any other insights/experiences would also be appreciated.
Thanks in advance,
Oliver
FWIW, here was my experience with trying to compile ffmpeg from source when I had to try it recently.
General ffmpeg
compilation guidelines came from https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
Enhanced with infos from https://developer.nvidia.com/ffmpeg for NVENC support and also https://www.linode.com/docs/platform/linode-gpu/getting-started-with-gpu/ for CUDA toolkit installation help.
For initial compilation, I believe you need to downgrade to CUDA toolkit 10.1 (at least as of 2020-04-08), download from https://developer.nvidia.com/cuda-toolkit-archive - go to the download page and use the instructions when selecting Linux/x84_64/CentOS/8/runfile (local)
to install. But then for running ffmpeg you'll need to upgrade back to 10.2 (or at least upgrade the driver, I didn't try this though), otherwise when encoding using NVENC you'll get an error like:
[h264_nvenc @ 0x41d4080] Driver does not support the required nvenc API version. Required: 9.1 Found: 9.0
[h264_nvenc @ 0x41d4080] The minimum required Nvidia driver for nvenc is 435.21 or newer
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
sudo yum install autoconf automake bzip2 bzip2-devel cmake
freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel
mkdir ~/ffmpeg_sources
cd ~/ffmpeg_sources &&
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 &&
tar xjvf nasm-2.14.02.tar.bz2 &&
cd nasm-2.14.02 &&
./autogen.sh &&
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &&
make &&
make install
cd ~/ffmpeg_sources &&
curl -O -L https://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
cd ~/ffmpeg_sources &&
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git &&
cd nv-codec-headers &&
sudo make install
cd ~/ffmpeg_sources &&
git clone --depth 1 https://code.videolan.org/videolan/x264.git &&
cd x264 &&
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static &&
make &&
make install
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
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
#libmp3lame
cd ~/ffmpeg_sources &&
curl -O -L https://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
cd ~/ffmpeg_sources &&
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz &&
tar xzvf opus-1.3.1.tar.gz &&
cd opus-1.3.1 &&
./configure --prefix="$HOME/ffmpeg_build" --disable-shared &&
make &&
make install
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
cd ~/ffmpeg_sources &&
curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 &&
tar xjvf ffmpeg-snapshot.tar.bz2 &&
cd ffmpeg &&
# Extra pkgconfig path comes from https://superuser.com/questions/1299064/error-cuvid-requested-but-not-all-dependencies-are-satisfied-cuda-ffnvcodec
PATH="$HOME/bin:$PATH"
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig:/usr/local/lib/pkgconfig/"
./configure
--prefix="$HOME/ffmpeg_build"
--pkg-config-flags="--static"
--extra-libs=-lpthread
--extra-libs=-lm
--bindir="$HOME/bin"
--enable-gpl
--enable-libfdk_aac
--enable-libfreetype
--enable-libmp3lame
--enable-libopus
--enable-libvpx
--enable-libx264
--enable-libx265
--enable-nonfree
--enable-libfdk_aac
--enable-libmp3lame
--enable-libopus
--enable-libvpx
--enable-cuda-nvcc
--enable-cuvid
--enable-nvenc
--enable-libnpp
--extra-cflags="-I$HOME/ffmpeg_build/include -I/usr/local/cuda/include"
--extra-ldflags="-L$HOME/ffmpeg_build/lib -L/usr/local/cuda/lib64" &&
make -j 10 &&
make install &&
hash -d ./ffmpeg
Answered by HerbCSO on November 4, 2021
easiest for me was to install a static build from http://johnvansickle.com/ffmpeg/
Just unpack and run ./ffmpeg
Answered by Marvin Hoffmann on November 4, 2021
On Fedora or RHEL I use ATRPMS to install ffmpeg. I'm not sure how well that'll work for Amazon Linux. Worst case is you'd pull down all the RPMs manually and then rebuild them locally which should be simpler than trying to build all the ffmpeg deps yourself. And you'd have RPMs you can put in your local repo or whatever.
In regards to the yum package update problem you will want to only include ffmpeg and the packages it depends on in the .repo file. This will keep yum from pulling in other packages from that repo. You can also set yum priorities as well.
Answered by kashani on November 4, 2021
Well, the direct answer is no, but the correct answer is I can.
When you have missing dependencies during compile, you just need to hunt those down and compile them, then try again. If you're feeling really fancy, you can make your own package out of all those dependencies.
There is no fundamental incompatibility about it, just a bit of hard experience.
Answered by Jeff Ferland on November 4, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP