当前位置: 首页 > news >正文

Jetson Docker 编译 FFmpeg 支持硬解nvmpi和cuvid

0 设备和docker信息

设备为NVIDIA Jetson Xavier NX,jetpack版本为 5.1.1 [L4T 35.3.1]
使用的docker镜像为nvcr.io/nvidia/l4t-ml:r35.2.1-py3,详见https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml

使用下列命令拉取镜像:

sudo docker pull nvcr.io/nvidia/l4t-ml:r35.2.1-py3

使用下列命令启动镜像:

sudo docker run --runtime nvidia -it nvcr.io/nvidia/l4t-ml:r35.2.1-py3

1. 编译x264、x265

APT安装

apt update
apt install libx264-dev libx265-dev

或者按照下面的步骤从源码编译

x264

git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --prefix=/usr/local --enable-pic --enable-shared
make -j6
make install

x265

git clone https://github.com/videolan/x265.git
cd x265/build/linux
./make-Makefiles.bash
make -j6
make install

2. nvmpi硬解支持

git clone https://github.com/Keylost/jetson-ffmpeg.git
cd jetson-ffmpeg
mkdir build
cd build
cmake ..
make -j6
make install
ldconfig

3. cuda cuvid硬解支持

git clone https://github.com/FFmpeg/nv-codec-headers.git
cd nv-codec-headers
make install

4. 一些依赖

此镜像中缺少pkg-config,会使得ffmpeg的configure过程报错"ERROR: XXXX not found using pkg-config"。

apt update
apt install libnuma-dev pkg-config

5. 编译ffmpeg

git clone git://source.ffmpeg.org/ffmpeg.git -b release/6.0 --depth=1
cd ffmpeg
wget -O ffmpeg_nvmpi.patch https://github.com/Keylost/jetson-ffmpeg/raw/master/ffmpeg_patches/ffmpeg6.0_nvmpi.patch
git apply ffmpeg_nvmpi.patch./configure --enable-static --enable-shared --enable-nvmpi --enable-gpl --enable-cuda --enable-cuvid --enable-libx264 --enable-libx265 --prefix=/usr/local/ffmpegmake -j6
make install

添加环境变量

export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH

可以将上述环境变量写入 ~/.bashrc

6. 验证

ffmpeg -codecs

在这里插入图片描述

如果出现
libavdevice.so.58: cannot open shared object file: No such file or directory
或者
ffmpeg: symbol lookup error: ffmpeg: undefined symbol: avio_protocol_get_class, version LIBAVFORMAT_58

新建下面的文件

vim /etc/ld.so.conf.d/ffmpeg.conf 

在ffmpeg.conf 文件中写入

/usr/local/ffmpeg/lib

然后

ldconfig

参考资料

  1. jetson agx xavier ffmpeg源码编译支持cuda 编解码h265推拉流
  2. jocover/jetson-ffmpeg
  3. rtmp和http-flv推流及rtsp-server 区别及搭建提示
http://www.lryc.cn/news/103171.html

相关文章:

  • 某某某小说app接口抓包分析
  • 开发一个RISC-V上的操作系统(四)—— 内存管理
  • 区块链:可验证随机函数
  • Flask中flask-session
  • react-Native init初始化项目报错”TypeError: cli.init is not a function“
  • 【gitlib】linux系统rpm安装gitlib最新版本
  • iOS开发-检查版本更新与强制更新控制
  • 自动化运维工具——Ansible
  • W2NER详解
  • ElementUI tabs标签页样式改造美化
  • 出海周报|Temu在美状告shein、ChatGPT安卓版上线、小红书回应闪退
  • 2023年7月26日 单例模式
  • [ 容器 ] Docker 安全及日志管理
  • 游游的排列构造
  • 拯救者Y9000K无线Wi-Fi有时不稳定?该如何解决?
  • 【业务功能篇59】Springboot + Spring Security 权限管理 【下篇】
  • 性能优化 - 前端性能监控和性能指标计算方式
  • git stash clear清空本地暂存代码
  • 消防应急照明设置要求在炼钢车间电气室的应用
  • element 表单验证 深层验证绑定
  • brew 换镜像网站
  • WIZnet W5500-EVB-Pico 静态IP配置教程(二)
  • R语言无法调用stats.dll的问题解决方案[补充]
  • 无线蓝牙耳机有什么推荐?怎么选择适合自己的耳机?七款蓝牙耳机分享
  • 【数据分析专栏之Python篇】四、pandas介绍
  • 《算法竞赛·快冲300题》每日一题:“最小生成树”
  • mysql的主键选择
  • Eureka 学习笔记1:服务端实例缓存
  • vue : 无法加载文件 C:\Users\86182\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。
  • FLinkCDC读取MySQl时间戳时区相关问题解决汇总