基于ffmpeg库,在AGX上编译jetsonFFmpeg库带有硬件加速的h264_nvmpi视频编解码器

以下预装版本是ffmpeg4.2.11!!!!!

1、安装yasm:
复制代码
​wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

tar xvzf yasm-1.3.0.tar.gz

cd yasm-1.3.0

./configure

make

make install

yasm --version
2、安装nasm(2.13以上版本)
复制代码
​wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2

tar xvf nasm-2.14.02.tar.bz2

cd nasm-2.14.02

./configure

make 

make install

nasm --version
3、安装其他依赖(如果自己安装了就不用安装了)

检查是否安装(如果安装了会有输出)

复制代码
cmake --version

未安装:

复制代码
apt install cmake -y
4、编译x264(只编译静态库)

x264下载地址:
http://ftp.videolan.org/pub/videolan/x264/snapshots/

选择好下载的版本后,可以离线下载好,也可以wget在线下载,下方的命令需要对应你安装的文件名:

复制代码
wget http://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191024-2245-stable.tar.bz2

tar xvf x264-snapshot-20191024-2245-stable.tar.bz2

cd x264-snapshot-20191024-2245-stable

./configure --enable-static --prefix=../x264 --enable-pic 

make -j16

make install

4、验证
x264 --version

看到输出版本号代表安装成功

5、编译安装ffmpeg

ffmpeg下载地址:Download FFmpeg

复制代码
1、解压
tar -zxvf ffmpeg-4.2.tar.gz
 
2、配置(记得修改输出路径)
./configure --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --prefix=/home/nvidia/ffmpeg --enable-version3 --enable-postproc --enable-pthreads --enable-static --enable-libx264
 
3、编译&安装
make -j8 && sudo make install
 
4、配置环境变量(永久配置)
vim ~/.bashrc
#  将下面内容写入,路径按照2、配置中prefix的绝对路径填写
export PATH=/home/nvidia/ffmpeg/bin:$PATH
export LD_LIBRARY_PATH=/home/nvidia/ffmpeg/lib/
#  刷新配置
source ~/.bashrc
 
5、验证
ffmpeg --version

出现配置信息即安装成功

复制代码
(py38) nvidia@xl:~$ ffmpeg
ffmpeg version 2ec7f8e Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
  configuration: --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --prefix=/home/nvidia/ffmpeg --enable-version3 --enable-postproc --enable-pthreads --enable-static --enable-libx264
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
 
Use -h to get full help or, even better, run 'man ffmpeg'
6、编译安装jetson-ffmpeg
复制代码
1、编译与安装库
git clone https://github.com/Keylost/jetson-ffmpeg.git
如果因为网络原因无法clone,则离线下载后拷贝过来
(https://github.com/Keylost/jetson-ffmpeg/archive/refs/heads/master.zip)

cd jetson-ffmpeg
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
 
2、打补丁并构建ffmpeg
git clone https://gitee.com/mirrors/ffmpeg.git -b release/4.2 --depth=1
(如果clone缓慢,直接用上面下载好的ffmpeg源码包,版本需一致)
 
3、获取与系统相匹配的补丁
拷贝ffmpeg_patches文件夹下的ffmpeg4.2_nvmpi.patch补丁文件到ffmpeg源码包内
 
4、应用对应ffmpeg版本的补丁
cd ffmpeg
git apply ../ffmpeg4.2_nvmpi.patch

####---------------------------------------------------------#####
#如果应用不成功,jetson-ffmpeg项目提供了一个自动补丁脚本,可以避免手动操作:
# 回到 jetson-ffmpeg 根目录
cd ~/Downloads/jetsonffmpeg/jetson-ffmpeg
chmod +x ffpatch.sh
# 使用补丁脚本(会自动处理路径问题)
./ffpatch.sh ./build/ffmpeg

返回以下代表应用补丁成功:
./build/ffmpeg/configure is successfully patched!
./build/ffmpeg/libavcodec/Makefile is successfully patched!
./build/ffmpeg/libavcodec/allcodecs.c is successfully patched!
Success!
####---------------------------------------------------------#####

5、进入 FFmpeg 源码目录​
cd ./build/ffmpeg
 
6、配置文件(记得修改输出路径)
./configure \
  --enable-shared \
  --enable-swscale \
  --enable-gpl \
  --enable-nonfree \
  --enable-pic \
  --prefix=../jetsonffmpeg \
  --enable-version3 \
  --enable-postproc \
  --enable-pthreads \
  --enable-static \
  --enable-libx264 \
  --enable-nvmpi
 
7、编译及安装
make -j$(nproc)
sudo make install

8、配置环境变量(永久配置)
vim ~/.bashrc
#将下面内容写入,路径按照改成install后生成的jetsonffmpeg的绝对路径填写
export PATH=/home/nvidia/ffmpeg/bin:$PATH
export LD_LIBRARY_PATH=/home/nvidia/ffmpeg/lib/
#刷新配置
source ~/.bashrc
​​#更新动态链接库缓存​
sudo ldconfig
 
8、验证
ffmpeg -version
相关推荐
阿里巴啦1 天前
python+yt-dlp开源项目,支持 YouTube, Bilibili, TikTok/抖音,快手 等多个平台的视频/音频/字幕下载/ai摘要等功能
python·ffmpeg·whisper·音视频·视频处理·ai摘要·音视频转录
TSINGSEE2 天前
国标GB28181视频质量诊断:EasyGBS服务插件EasyVQD快速识别花屏、蓝屏、画面冻结抖动
人工智能·音视频·实时音视频·视频编解码·视频质量诊断·花屏检测·画面抖动
来鸟 鸣间2 天前
linux下ffmpeg源码编译
linux·运维·ffmpeg
Echo_NGC22372 天前
【FFmpeg使用指南】Part 2:滤镜图架构与信号处理
架构·ffmpeg·音视频·信号处理
Echo_NGC22372 天前
【FFmpeg使用指南】Part 1:核心架构与媒体流处理
ffmpeg·音视频·媒体·视频
ssxueyi2 天前
用 Claude Code 从零开发自己的Direct3D 硬件加速播放器
ffmpeg·ai编程·directx·视频播放器·从零开始·claude code·csdn征文活动
Yan_uuu2 天前
ubuntu18.04 安装 x264、ffmpeg、nv-codec-hearers 支持GPU硬件加速
c++·图像处理·ubuntu·ffmpeg
runner365.git3 天前
做一个基于ffmpeg的AI Agent智能体
人工智能·ffmpeg·大模型
彷徨而立3 天前
【FFmpeg】理解 av_packet_from_data 和 av_packet_unref 接口
ffmpeg
runner365.git3 天前
ffmpeg8.0合入whisper,语音识别模型终于进入ffmpeg
ffmpeg·whisper·语音识别