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

news2024/9/23 13:25:20

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/ffmpeg

make -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.coloradmin.cn/o/818186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows查看 jar包进程号指令

1 打开cmd 2 : 9898 jar包对应的端口号 netstat -aon|findstr 9898 3 :打开任务管理器 根据搜索出的23700 找到对应进程

【C++】STL——vector的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

文章目录 1.模拟实现vector1.1构造函数1.2迭代器1.3运算符重载1.4扩容函数1.5增删查改 1.模拟实现vector vector使用文章 1.1构造函数 析构函数 在C中,vector是一个动态数组容器,可以根据需要自动调整大小。vector类提供了几个不同的构造函数来创建和初…

gradle项目上传项目依赖到远程仓库

gradle项目上传项目依赖到远程仓库 第一步:在需要上传的项目的bulid.gradle下添加maven插件,并配置连接远程仓库的信息以及项目的三要素信息,如下所示 dependencies {implementation org.mapstruct:mapstruct:1.4.2.Final } apply plugin: …

Linux - make/Makefifile

0.背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需…

【Spring】Spring之循环依赖底层源码解析

什么是循环依赖 A依赖了B,B依赖了A。 示例: // A依赖了B class A{public B b; }// B依赖了A class B{public A a; }其实,循环依赖并不是问题,因为对象之间相互依赖是很正常的事情。示例: A a new A(); B b new B…

5分钟快手入门laravel邮件通知

第一步: 生成一个邮件发送对象 php artisan make:mail TestMail 第二步: 编辑.env 添加/修改(没有的key则添加) MAIL_DRIVERsmtp MAIL_HOSTsmtp.163.com (这里用163邮箱) MAIL_PORT25 (163邮箱…

Bug记录: CUDA error_ device-side assert triggered

Bug记录: CUDA error: device-side assert triggered 在接触AIGC算法的过程中偶尔会遇到这样的bug:RuntimeError: CUDA error: device-side assert triggered return torch._C._cuda_synchronize() RuntimeError: CUDA error: device-side assert trig…

Qt实现引导界面UITour

介绍 最近做了一款键鼠自动化,想第一次安装打开后搞一个引导界面,找了好多资料没啥参考,偶然发现qt有引导界面如下图。 Qt整挺好,但是未找到源码,真的不想手撸,无奈实在找不到,下图是仿照qt实现…

在Vue中使用深度选择器定制Element Plus组件样式

介绍: 在Vue.js开发中,我们经常使用Element Plus作为UI组件库,它提供了丰富的组件供我们使用。然而,有时候我们希望对Element Plus的组件样式进行一些定制,比如调整字体大小、改变颜色等。在这篇博客中,我…

【GitOps系列】如何实施金丝雀发布?

文章目录 前言金丝雀发布概述金丝雀实战创建生产环境 部署金丝雀环境配置金丝雀策略金丝雀发布自动化创建 Rollout 对象创建 Service 和 Ingress 对象访问生产环境金丝雀发布自动化 访问 Argo Rollout Dashboard自动化原理结语 前言 蓝绿发布是一种通过资源冗余来换取回滚效率的…

关于jar文件反编译

最近在搞tck测试,想要将其日志转换成apdu脚本,结果出现默认输出最大长度不足,输出被省略现象。 软件log出现的错误信息 ... Output overflow: JavaTest Harness has limited the test output to the text to that at the beginning and the…

stable-diffusion-webui 启动服务,卡在浏览器loading中, 重定向解决

最新的code,按步骤安装,趟完pip和github的坑,终于启动服务 然后悲催的卡在浏览器这一步,一直在loading,折腾一下午,尝试可能有效的步骤,也许最后一步才有用: 1. 启动IIS服务 2. 配…

Java课题笔记~Maven基础

2、Maven 基础 2.1 Maven安装与配置 下载安装 配置:修改安装目录/conf/settings.xml 本地仓库:存放的是下载的jar包 中央仓库:要从哪个网站去下载jar包 - 阿里云的仓库 2.2 创建Maven项目

爬虫006_python中的运算符_算术运算符_赋值运算符_复合赋值运算符_比较运算符_逻辑运算符_逻辑运算符性能提升---python工作笔记024

首先看加减乘除 然后看这里的 // 是取整数部分,不是四舍五入 然后%这个是取余数 然后**是,几次方那种 指数

游游的排列构造

示例1 输入 5 2 输出 3 1 5 2 4 示例2 输入 5 3 输出 2 1 4 3 5 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N1e55; int n,k; int main(){scanf("%d%d",&n,&k);int xn-k1;int yn-k;int f1;for(int i1;i&l…

八大排序算法--希尔排序(动图理解)

目录 希尔排序 概念 算法思路 动画演示 代码如下 复杂度分析 时间复杂度测试 运行结果 完整代码 创作不易&#xff0c;如果本篇博客对您有一定的帮助&#xff0c;大家记得留言点赞哦。 希尔排序 概念 希尔排序是插入排序的一种&#xff0c;是对直接插入排序的优化。其…

Docker基础命令(一)

Docker使用1 一、运行终端 打开终端&#xff0c;输入docker images &#xff0c;如果运行正常&#xff0c;表示docker已经可以在本电脑上使用了 二、docker常用命令 指令说明docker images查看已下载的镜像docker rmi 镜像名称:标签名删除已下载的镜像docker search 镜像从官…

Python3.9.17配置openssl

下载python3.9.17和openssl3.1.1的安装包 wget https://www.python.org/ftp/python/3.9.17/Python-3.11.4.tgz wget https://www.openssl.org/source/openssl-3.1.1.tar.gz# 解压 tar -xzf openssl-3.1.1.tar.gz tar -xzf Python-3.9.17.tgz 1、安装openssl cd openssl-3.1.…

手机/平板电脑作为pc电脑扩展屏——Splashtop Wired XDisplay使用教程

Splashtop Wired XDisplay使用教程 写在前面这个软件能做什么软件安装开始使用如何拓展屏幕Wired XDisplay 找不到第二个屏幕或点击扩展没反应怎么办&#xff1f;Wired XDisplay扩展屏黑屏怎么办 写在前面 一直想买一个扩展屏&#xff0c;但实际需求使用的次数并不是很多。所以…

js全端支持的深拷贝structuredClone

Jul 7, 2023 经过一年半的试用&#xff0c;structuredClone转正了&#xff0c;全端可以正式使用。 https://developer.mozilla.org/en-US/docs/Web/API/structuredClone