安装依赖项(其中一些已经存在)

安装依赖项(其中一些已经存在)

你好,Serverfault 的朋友们,

我花了大约两天时间尝试在运行 Amazon Linux AMI 的 AWS EC2 实例上安装带有依赖项的 FFMPEG。我过去曾在 Ubuntu 和 Fedora 系统上安装过 FFMPEG,没有任何问题,并且读过据说在 Red Hat/Fedora 上安装成功的说明。我按照许多教程和论坛文章进行了操作,但还没有成功。据我所知,主要问题如下:

  1. amazon linux(与 red-hat/centos 最相似)yum 存储库没有可用的 ffmpeg。我找到了更新存储库以包含所需软件包的说明,但添加这些存储库会导致 yum 无法更新软件包。(此外,我读过一些关于将 redhat/centos 存储库添加到 amazon linux 的警示故事,这让我相信这可能是一个坏主意)

https://forums.aws.amazon.com/thread.jspa?messageID=229166

  1. 我尝试过一种更复杂的方法,即下载源 tarball、编译和安装,但由于缺少依赖项和其他错误,这种方法总是失败。

回到我的问题:有人在 Amazon Linux 上成功安装了 FFMPEG 吗?是否存在根本的不兼容性?如果有人能分享在 amazon linux 上安装 ffmpeg 的具体说明,我将不胜感激。任何其他见解/经验也将不胜感激。

提前致谢,奥利弗

答案1

嗯,直接的答案是否定的,但正确的答案是我可以

如果在编译过程中缺少依赖项,您只需找到它们并编译它们,然后重试。如果您真的很想尝试一下,您可以使用所有这些依赖项制作自己的包。

这并没有什么根本的不兼容性,只是有一些艰难的经历。

答案2

在 Fedora 或 RHEL 上我使用原子力荧光探针安装 ffmpeg。我不确定这对 Amazon Linux 的效果如何。最糟糕的情况是,您需要手动下载所有 RPM,然后在本地重建它们,这应该比尝试自己构建所有 ffmpeg deps 更简单。而且,您可以将 RPM 放入本地存储库或其他地方。

关于 yum 软件包更新问题,您需要在 .repo 文件中仅包含 ffmpeg 及其依赖的软件包。这样 yum 就不会从该 repo 中拉取其他软件包。您还可以设置 yum 优先级。

答案3

对我来说最简单的方法是安装静态构建http://johnvansickle.com/ffmpeg/

只需解压并运行 ./ffmpeg

答案4

仅供参考,这是我最近尝试从源代码编译 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 工具包安装帮助。

对于初始编译,我相信你需要降级到 CUDA 工具包 10.1(至少截至 2020-04-08),从下载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

NV 编解码器标头,NVENC 所需

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

libx265

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

libfdk_aac

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

libvpx

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

ffmpeg 本身

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

相关内容