Привет, друзья Serverfault,
Я пытаюсь установить FFMPEG с зависимостями на инстансе AWS EC2, на котором запущен Amazon Linux AMI, примерно через два дня. Я без проблем устанавливал FFMPEG в системах Ubuntu и Fedora в прошлом и прочитал, как сообщается, успешные инструкции по установке в Red Hat / Fedora. Я следил за рядом руководств и статей на форумах, чтобы сделать это, но пока мне не повезло. Насколько я могу судить, основные проблемы следующие:
(https://forums.aws.amazon.com/thread.jspa?messageID=229166)
На мой вопрос: кто-нибудь успешно установил FFMPEG на Amazon Linux? Есть принципиальная несовместимость? Если бы кто-нибудь мог поделиться конкретными инструкциями по установке ffmpeg на amazon linux, я был бы очень признателен. Любые другие идеи / опыт также будут оценены.
Заранее спасибо, Оливер
В Fedora или RHEL я использую ATRPMS для установки ffmpeg. Я не уверен, насколько хорошо это будет работать для Amazon Linux. В худшем случае вам придется вытащить все RPM вручную, а затем перестроить их локально, что должно быть проще, чем пытаться построить все зависимости ffmpeg самостоятельно. И у вас будут RPM, которые вы можете поместить в свое локальное репо или что-то еще.
Что касается проблемы с обновлением пакета yum, вам нужно включить только ffmpeg и пакеты, от которых он зависит, в файле .repo. Это предотвратит загрузку yum других пакетов из этого репо. Вы также можете установить приоритеты yum.
Что ж, прямой ответ - нет, но правильный ответ - Я могу.
Если во время компиляции у вас отсутствуют зависимости, вам просто нужно найти их и скомпилировать, а затем повторить попытку. Если вам действительно нравится, вы можете создать свой собственный пакет из всех этих зависимостей.
В этом нет принципиальной несовместимости, просто немного тяжелого опыта.
FWIW, вот мой опыт попытки скомпилировать ffmpeg из исходников, когда мне недавно пришлось его попробовать.
Общее ffmpeg
руководство по компиляции пришло из https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
Дополнен информацией от https://developer.nvidia.com/ffmpeg для поддержки NVENC, а также https://www.linode.com/docs/platform/linode-gpu/getting-started-with-gpu/ для помощи по установке CUDA toolkit.
Я считаю, что для первоначальной компиляции вам необходимо перейти на CUDA toolkit 10.1 (по крайней мере, с 08.04.2020), загрузить с https://developer.nvidia.com/cuda-toolkit-archive - перейдите на страницу загрузки и воспользуйтесь инструкциями при выборе Linux/x84_64/CentOS/8/runfile (local)
установить. Но тогда для запуска ffmpeg вам нужно будет обновить его до 10.2 (или, по крайней мере, обновить драйвер, хотя я этого не пробовал), иначе при кодировании с использованием NVENC вы получите ошибку вроде:
[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
мне проще всего было установить статическую сборку из http://johnvansickle.com/ffmpeg/
Просто распакуйте и запустите ./ffmpeg