我的电脑上有一块 Nvidia GPU,我想将它与 ffmpeg 一起使用,以便利用硬件功能更快地转换视频文件。在 Nvidia 的文档 (ttps://developer.nvidia.com/ffmpeg) 中,据说我们必须重新编译 ffmpeg 才能获得对 CUDA 的支持。我使用的是 Linux(基于 Debian,Ubuntu)。首先,我执行了“sudo apt remove”,然后我找到了存储库并执行了以下操作:
sudo ./configure --enable-cuda-nvcc --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-libass
sudo make -j 4
sudo make install
这确实与 CUDA 配合得很好,但事实是,并非所有免费编解码器都受支持-(一个例子是 CUDA)。所以我做了:
sudo ./configure --enable-cuda-nvcc --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-libass
sudo make uninstall
sudo make clean
./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --extra-libs="-lpthread -lm" --bindir="$HOME/bin" --enable-gpl --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-cuda-nvcc --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
sudo make -j 4
sudo make install
问题是,当我运行 ffmpeg 命令时,出现此错误:
maxime@maxime-X756UWK:~/ffmpeg_sources$ ffmpeg
bash: /usr/local/bin/ffmpeg: 没有该类型的文件或档案
翻译为“没有此类文件或文件夹”。
以下是“type”命令的结果:
maxime@maxime-X756UWK:/usr/bin$ 类型 ffmpeg ffmpeg
已修复 (/usr/local/bin/ffmpeg)
翻译为“ffmpeg 已散列(/usr/local/bin/ffmpeg)”
我尝试使用 apt 安装 ffmpeg,安装成功,但我无法运行该程序......
你能帮我解决这个问题吗?
提前谢谢。
答案1
您--bindir="$HOME/bin"
在 ffmpeg 中使用了configure
,因此您的ffmpeg
可执行文件位于 中~/bin
,而不是 中/usr/local/bin
。这通常不是问题(例如,Ubuntu 的~/bin
默认位置是PATH
),但哈希表尚未更新。这是一种比较罕见的情况,当安装、执行、卸载、重新安装按特定顺序进行时会发生这种情况,这就是为什么FFmpeg 维基建议hash
安装后使用该命令。
要解决此问题,您有多种选择:
- 尝试运行
hash -d ffmpeg
。 - 或者退出并重新登录。
- 或者,如果您喜欢该位置,
ffmpeg
则从移动~/bin/
到。/usr/local/bin