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

Jetson NX FFmpeg硬件编解码实现

最近在用Jetson Xavier NX板子做视频处理,但是CPU进行视频编解码,效率比较地下。

于是便考虑用硬解码来对视频进行处理。

通过jtop查看,发现板子是支持 NVENC硬件编解码的。

1、下载源码

因为需要对ffmpeg进行打补丁修改,因此需要编译两份源码

1.1、编译jetson-ffmpeg

1)、下载jetson-ffmpeg (https://github.com/Keylost/jetson-ffmpeg) 源码

2)、 编译jetson-ffmpeg

下载后,依次执行如下命令进行编译

cd jetson-ffmpeg
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

1.2、编译ffmpeg

1)、下载ffmpeg源码

本博文 以 4.2版本为例

git clone git://source.ffmpeg.org/ffmpeg.git -b release/4.2 --depth=1

2)、下载patch补丁

网络上不少提示补丁地址

https://github.com/Keylost/jetson-ffmpeg/raw/master/ffmpeg_patches/ffmpeg4.2_nvmpi.patch

但是我执行,报错。

最后发现,在jetson-ffmpeg下面就有相应的patch版本

ll ffmpeg_patches/
total 116
drwxr-xr-x 2 root root  4096 10月 30 19:11 ./
drwxr-xr-x 8 root root  4096 10月 30 19:11 ../
-rw-r--r-- 1 root root 34433 10月 30 19:11 ffmpeg4.2_nvmpi.patch
-rw-r--r-- 1 root root 34216 10月 30 19:11 ffmpeg4.4_nvmpi.patch
-rw-r--r-- 1 root root 34497 10月 30 19:11 ffmpeg6.0_nvmpi.patch

将 对应的 ffmpeg4.2_nvmpi.patch 拷贝到ffmpeg目录下

3)、升级补丁

执行如下命令进行补丁升级4

git apply ffmpeg4.2_nvmpi.patch
ffmpeg4.2_nvmpi.patch:249: trailing whitespace.ffmpeg4.2_nvmpi.patch:271: trailing whitespace.ffmpeg4.2_nvmpi.patch:351: trailing whitespace.ffmpeg4.2_nvmpi.patch:353: trailing whitespace.ffmpeg4.2_nvmpi.patch:359: trailing whitespace.warning: squelched 21 whitespace errors
warning: 26 lines add whitespace errors.

4)、编译ffmpeg

配置

mkdir build
cd build/
../configure --prefix=../ffmpeg_install

编译

make
make install

编译完成。

2、测试

执行如下命令,即可以使用硬编码

ffmpeg -c:v h264_nvmpi  -rtsp_transport tcp -i rtsp -hls_time 10 -hls_list_size 1 -hls_flags delete_segments -f hls index.m3u8

运行jtop 查看

已经调动了硬编码与硬解码

http://www.lryc.cn/news/217954.html

相关文章:

  • 5.2用队列实现栈(LC225-E)
  • 项目上线前发现严重Bug怎么办?
  • 【WPF系列】- Application详解
  • 常见的内置方法:__call__,__getitem__,__iter__,__next__
  • python用cv2画图(line, rectangle, text等)
  • 解决方案中word中分页符的使用
  • ubuntu20.04下apache启用php7.4-fpm
  • 在 CentOS 服务器上部署 JAR 文件到 Docker 容器
  • vector类模拟实现(c++)(学习笔记)
  • Redis Sentinel 哨兵模式
  • 实用篇-MQ消息队列
  • springboot打包时依赖jar和项目jar分开打包;jar包瘦身
  • 嵌入式系统的元素
  • 提升ChatGPT答案质量和准确性的方法Prompt engineering实用的prompt灵感和技巧
  • [Machine Learning] Learning with Noisy Labels
  • 集简云slack(自建)无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • Idea 对容器中的 Java 程序断点远程调试
  • vscode设置保存后,自动格式化代码
  • datagrip出现 java.net.ConnectException: Connection refused: connect.
  • Docker 安装ELK7.7.1
  • 决策树算法
  • maven之pom文件详解
  • 深度学习之基于Python+OpenCV+dlib的考生信息人脸识别系统(GUI界面)
  • 创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解
  • BIOS开发笔记 - HDA Audio
  • C语言——选择排序
  • vue详细安装教程
  • Java 正则表达式字符篇
  • shell脚本代码混淆
  • 【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路(更新中)