dar*_*rox 3 linux gpu ffmpeg mp4box ubuntu
我有大约 1400 个.mp4视频文件,我必须重新编码所有内容才能使用mp4box在DASH 中转换它
CPU:英特尔® 酷睿™ i7-6700 四核 Skylake
GPU:GeForce® GTX 1080
内存:64GB
Ubuntu 18.04
运行后:apt-get install ffmpeg,我无法使用-c:v h264_nvenc,出现如下错误:未知编码器“h264_nvenc”
我阅读了网络上的所有指南以在我的服务器上正确安装 nvidia 编解码器,但旧指南不适用于我的服务器。
你能帮我找到一种新的、正确的安装方法吗?
谢谢你。
Den*_*gai 11
在您的情况下,您需要从源代码构建 FFmpeg。使用下面显示的示例。有关您可以使用支持 NVENC 的当前一代 NVIDIA GPU 实现的受支持和可用的硬件加速功能,请参阅此答案。
对于构建:
在 Ubuntu 18.04LTS 上使用 NVENC 和所有可用的基于 CUDA 的过滤器构建 FFmpeg:
构建平台:Ubuntu 18.04LTS
目标:生成一个 FFmpeg 构建,它可以在 Ubuntu 18.04LTS+ 上利用 NVENC 和所有可用的基于 CUDA 的过滤器。构建将以/opt.
确保平台是最新的:
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade
首先安装基线依赖项(包括 OpenCL 头文件+)
sudo apt-get -y install autoconf automake build-essential libass-dev \
libtool libssl-dev \
pkg-config texinfo zlib1g-dev cmake mercurial libbz2-dev rtmpdump librtmp-dev libunistring2 libunistring-dev opencl-headers ocl-icd-*
Run Code Online (Sandbox Code Playgroud)
创建工作区:
sudo mkdir -p /opt/ffmpeg
mkdir -p ~/ffmpeg_sources
Run Code Online (Sandbox Code Playgroud)
安装 CUDA 10 SDK:
确保您拥有最新的驱动程序:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update && sudo apt-get -y upgrade
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 18.04LTS 桌面上,这对于当前的设备驱动程序来说应该足够了:
sudo apt-get install nvidia-kernel-source-430 nvidia-driver-430
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 18.04LTS 服务器系统上,这将执行以下操作:
sudo apt install nvidia-headless-430 nvidia-utils-430 libnvidia-common-430 libnvidia-encode-430 libnvidia-decode-430 libnvidia-fbc1-430
Run Code Online (Sandbox Code Playgroud)
我们将设备驱动程序保持为最新版本,以便通过ffnvcodec驱动程序版本检查。首先确认最新的驱动程序版本是明智的。通过在此处检查存储库来执行此操作:https : //launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
首先获取 SDK 二进制安装程序:
cd ~/ffmpeg_sources
wget -c -v -nc https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.168_418.67_linux.run
chmod +x ./cuda_10.1.168_418.67_linux.run
./cuda_10.1.168_418.67_linux.run
Run Code Online (Sandbox Code Playgroud)
您会发现我们正在使用二进制安装程序。这对于那些使用无头系统(没有 X)的人来说最有用,因为它将安装 CUDA 而不会引入不必要的依赖项。
您也可以使用 NVIDIA 为 Ubuntu 提供的官方 CUDA 存储库,但我不推荐它,因为它包含了很多不必要的包。
确认 CUDA 库的库配置文件也存在并具有正确的设置:
/etc/ld.so.conf.d/cuda.conf
内容应该是:
/usr/local/cuda/lib64
完成后,加载新配置:
sudo ldconfig -vvvv
现在,为 CUDA 设置环境变量:
编辑/etc/environment文件并附加以下内容:
CUDA_HOME=/usr/local/cuda
Run Code Online (Sandbox Code Playgroud)
现在,在 PATH 变量中添加以下内容:
/usr/local/cuda/bin:/opt/ffmpeg/bin
Run Code Online (Sandbox Code Playgroud)
完成后,请记住源文件:
source /etc/environment
Run Code Online (Sandbox Code Playgroud)
然后继续。
关于 NVENC 启用:
请注意,对包含第三方标头的更改会影响新版本,此问题已通过以下方式修复:
/usr/local/cuda/bin:/opt/ffmpeg/bin
Run Code Online (Sandbox Code Playgroud)
构建一个可用的 FFmpeg 二进制文件,前缀为 /opt/ffmpeg:
根据需要包括额外的组件:
(一种)。构建和部署 nasm: Nasm是 x264 和 FFmpeg 使用的 x86 优化的汇编程序。强烈推荐,否则您生成的构建可能会很慢。
请注意,我们现在已经从 Yasm 切换到 nasm,因为这是 x265、x264 等正在采用的当前汇编程序。
cd ~/ffmpeg_sources
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
tar xzvf nasm-2.14.02.tar.gz
cd nasm-2.14.02
./configure --prefix="/opt/ffmpeg_build" --bindir="/opt/ffmpeg/bin"
make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
make -j$(nproc) distclean
Run Code Online (Sandbox Code Playgroud)
(b)。静态构建和部署 libx264:该库提供 H.264 视频编码器。有关更多信息和使用示例,请参阅H.264 编码指南。这需要 ffmpeg 配置为--enable-gpl --enable-libx264.
cd ~/ffmpeg_sources
git clone http://git.videolan.org/git/x264.git
cd x264/
PATH="/opt/ffmpeg/bin:$PATH" ./configure --prefix="/opt/ffmpeg_build" --enable-static --enable-shared
PATH="/opt/ffmpeg/bin:$PATH" make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install VERBOSE=1
make -j$(nproc) distclean
Run Code Online (Sandbox Code Playgroud)
(C )。构建和配置 libx265:该库提供 H.265/HEVC 视频编码器。有关更多信息和使用示例,请参阅H.265 编码指南。
cd ~/ffmpeg_sources
git clone https://bitbucket.org/multicoreware/x265_git.git
cd ~/ffmpeg_sources/x265/build/linux
PATH="/opt/ffmpeg/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install VERBOSE=1
make -j$(nproc) clean VERBOSE=1
Run Code Online (Sandbox Code Playgroud)
(d)。构建和部署 libfdk-aac 库:这提供了一个 AAC 音频编码器。有关更多信息和使用示例,请参阅AAC 音频编码指南。这需要使用 ffmpeg 进行配置--enable-libfdk-aac(--enable-nonfree如果您还包含了--enable-gpl)。
cd ~/ffmpeg_sources
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --prefix="/opt/ffmpeg_build" --disable-shared
make -j$(nproc)
sudo make -j$(nproc) install
make -j$(nproc) distclean
Run Code Online (Sandbox Code Playgroud)
(e)。构建和配置 libvpx:
cd ~/ffmpeg_sources
git clone https://github.com/webmproject/libvpx
cd libvpx
./configure --prefix="/opt/ffmpeg_build" --enable-runtime-cpu-detect --enable-vp9 --enable-vp8 \
--enable-postproc --enable-vp9-postproc --enable-multi-res-encoding --enable-webm-io --enable-better-hw-compatibility --enable-vp9-highbitdepth --enable-onthefly-bitpacking --enable-realtime-only --cpu=native --as=nasm
time make -j$(nproc)
sudo time make -j$(nproc) install
time make clean -j$(nproc)
time make distclean
Run Code Online (Sandbox Code Playgroud)
(F)。构建 LibVorbis:
cd ~/ffmpeg_sources
git clone https://github.com/xiph/vorbis.git
cd vorbis
autoreconf -ivf
./configure --enable-static --prefix="/opt/ffmpeg_build"
time make -j$(nproc)
sudo make -j$(nproc) install
time make clean -j$(nproc)
time make distclean
Run Code Online (Sandbox Code Playgroud)
现在将新的库路径添加/opt/ffmpeg_build/lib到您的 ldconfig:
source /etc/environment
Run Code Online (Sandbox Code Playgroud)
然后运行:
cd ~/ffmpeg_sources
git clone https://github.com/FFmpeg/nv-codec-headers
cd nv-codec-headers
make
sudo make install PREFIX="/opt/ffmpeg_build"
Run Code Online (Sandbox Code Playgroud)
然后继续。
(G)。构建 FFmpeg:
cd ~/ffmpeg_sources
git clone https://github.com/FFmpeg/FFmpeg -b master
cd FFmpeg
PATH="/opt/ffmpeg/bin:$PATH" PKG_CONFIG_PATH="/opt/ffmpeg_build/lib/pkgconfig" ./configure \
--pkg-config-flags="--static" \
--prefix="/opt/ffmpeg" \
--bindir="/opt/ffmpeg/bin" \
--extra-cflags="-I/opt/ffmpeg_build/include" \
--extra-ldflags="-L/opt/ffmpeg_build/lib" \
--enable-cuda-nvcc \
--enable-cuvid \
--enable-libnpp \
--extra-cflags="-I/usr/local/cuda/include/" \
--extra-ldflags=-L/usr/local/cuda/lib64/ \
--enable-nvenc \
--enable-libass \
--disable-debug \
--enable-libvorbis \
--enable-libvpx \
--enable-opencl \
--enable-gpl \
--cpu=native \
--enable-libfdk-aac \
--enable-libx264 \
--enable-libx265 \
--enable-openssl \
--enable-librtmp \
--extra-libs="-lpthread -lm -lz" \
--enable-nonfree
PATH="/opt/ffmpeg/bin:$PATH" make -j$(nproc)
make -j$(nproc) install
make -j$(nproc) distclean
hash -r
Run Code Online (Sandbox Code Playgroud)
由于我们添加/opt/ffmpeg/bin到系统路径中,所以可以直接调用FFmpeg。
| 归档时间: |
|
| 查看次数: |
16571 次 |
| 最近记录: |