FFmpeg - Jetson Orin 实战部署
FFmpeg 是一套开源、跨平台、全能的音视频处理工具集由 C 语言开发免费开源LGPL/GPL 协议几乎所有音视频相关软件底层都依赖它FF Fast Forward快进mpeg 常见视频编码标准 MPEG四大核心组件ffmpeg命令行主程序最常用工具负责转码、剪辑、拼接、压缩、录屏、水印、格式转换等所有音视频操作。 示例简单命令把 mp4 转成 movffmpeg -i input.mp4 output.movffplay播放器极简命令行播放器不用装第三方播放器就能播放视频、音频。ffprobe媒体信息查看工具读取视频编码、分辨率、码率、时长、声道、字幕等元数据多用于自动化脚本分析媒体文件。libav系列库开发核心* 供程序员嵌入程序使用的底层库是 FFmpeg 的灵魂libavformat封装 / 解封装MP4、MKV、FLV、MOV 等容器格式libavcodec编码 / 解码器H.264、H.265、AV1、AAC、MP3 等libavfilter音视频滤镜裁剪、缩放、加水印、调色、降噪libavutil基础工具内存、时间、像素格式libswscale图像缩放、像素格式转换libswresample音频重采样、声道转换FFmpeg支持 Windows /macOS/ Linux / Android /iOS/ 嵌入式开发板树莓派、车载、边缘设备如 Orin无硬件绑定。可以实现格式互转视频压缩剪辑拼接音视频处理批量自动化。Jetson Orin FFmpeg 完整部署流程本地编译支持 NVMPI 硬件编解码硬件Jetson AGX Orin / Orin NX / Orin Nano系统JetPack 5.x/ 6.xL4T r35/r36已预装 CUDA、Jetson Multimedia API两种硬编方案nvmpiJetson 专属多路摄像头 / 低延迟首选推荐自动驾驶、多路推流nvenc/nvdec通用 GPU 硬件编解码PC/Orin 通用全程脚本化复制即可一键执行附验证、推流、C 调用示例一、环境前置检查# 查看L4T版本 cat /etc/nv_tegra_release # 查看CUDA nvcc -V # 多媒体API必须存在 ls /usr/src/jetson_multimedia_api/二、一键安装编译依赖sudo apt update sudo apt install -y build-essential yasm nasm cmake git wget unzip pkg-config \ libx264-dev libx265-dev libmp3lame-dev libpulse-dev libv4l-dev libnuma-dev \ libegl1-mesa-dev libtool三、安装 NVIDIA NVCODEC 头文件通用 nvenc/nvdec 支持git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git cd nv-codec-headers sudo make install cd ..四、编译 Jetson-NVMPI 底层库关键启用 Orin 硬件多媒体引擎git clone https://github.com/Keylost/jetson-ffmpeg.git cd jetson-ffmpeg mkdir build cd build cmake .. make -j$(nproc) sudo make install # 更新动态链接库 sudo ldconfig # 验证nvmpi是否安装成功 pkg-config --libs nvmpi # 输出 -L/usr/local/lib -lnvmpi 即为正常 cd ../../五、下载 FFmpeg 源码 打 Orin 硬件加速补丁FFmpeg 6.0 稳定版# 拉取FFmpeg 6.0 git clone git://source.ffmpeg.org/ffmpeg.git -b release/6.0 --depth1 cd ffmpeg # 下载对应nvmpi补丁 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 编译配置完整开启 Orin 硬件能力./configure \ --prefix/usr/local/ffmpeg-orin \ --enable-shared --enable-static \ --enable-gpl --enable-nonfree --enable-version3 \ # NVMPI Jetson专属硬编解码 --enable-nvmpi \ # 通用CUDA/NVENC/NVDEC --enable-cuda --enable-cuvid --enable-nvenc --enable-nvdec --enable-libnpp \ # 软件编码兜底 --enable-libx264 --enable-libx265 --enable-libmp3lame \ # 音频/滤镜 --enable-libpulse --enable-swresample --enable-swscale --enable-filter \ # V4L2摄像头采集 --enable-libv4l2 \ # CUDA路径 --extra-cflags-I/usr/local/cuda/include -I/usr/src/jetson_multimedia_api/include \ --extra-ldflags-L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu/tegra -lnvbuf_utils参数说明--enable-nvmpiOrin 硬件 H264/H265 硬编解码多路摄像头首选--enable-nvenc/nvdec标准 GPU 硬件编解码--prefix安装目录便于多版本隔离七、编译 安装# 多核编译nproc自动匹配CPU核心 make -j$(nproc) sudo make install八、系统环境配置永久生效1. 添加环境变量echo export PATH/usr/local/ffmpeg-orin/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/ffmpeg-orin/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc2. 系统全局动态链接sudo echo /usr/local/ffmpeg-orin/lib /etc/ld.so.conf.d/ffmpeg-orin.conf sudo ldconfig九、验证 FFmpeg 硬件加速是否生效1. 查看支持的硬件编解码器ffmpeg -encoders | grep nv ffmpeg -decoders | grep nv正常输出h264_nvmpi、hevc_nvmpiJetson 专属硬编h264_nvenc、hevc_nvenc、h264_cuvid2. 硬件转码测试NVMPI 硬解 硬编# 本地视频硬转码 ffmpeg -c:v h264_nvmpi -i test.mp4 -c:v hevc_nvmpi -b:v 4M out_h265.mp4 # 纯GPU解码加速 ffmpeg -hwaccel cuda -i test.mp4 -c copy output.mp4十、Orin 常用工程命令自动驾驶 / 多路摄像头场景1. V4L2 摄像头采集 NVMPI 硬编码本地保存ffmpeg -f v4l2 -s 1920x1080 -r 30 -i /dev/video0 \ -c:v h264_nvmpi -preset p4 -b:v 6M camera_rec.h2642. RTMP 低延迟推流多路摄像头主流方案ffmpeg -re -c:v h264_nvmpi -i camera_rec.h264 \ -c:v h264_nvmpi -b:v 4000k -f flv rtmp://xxx/live/stream3. 视频抽帧GPU 解码不占用 CPUffmpeg -hwaccel cuda -i input.mp4 -vf fps10 frame_%06d.jpg4. 多路视频拼接 硬件编码输出ffmpeg \ -hwaccel cuda -i cam1.mp4 \ -hwaccel cuda -i cam2.mp4 \ -filter_complex [0:v][1:v]hstack \ -c:v h264_nvmpi out_concat.mp4十一、C 调用 FFmpeg libav 示例最小可运行代码CMakeLists.txtcmake_minimum_required(VERSION 3.16) project(ffmpeg_orin_demo) set(CMAKE_CXX_STANDARD 17) # FFmpeg路径 set(FFMPEG_PREFIX /usr/local/ffmpeg-orin) include_directories(${FFMPEG_PREFIX}/include) link_directories(${FFMPEG_PREFIX}/lib) add_executable(demo main.cpp) target_link_libraries(demo avformat avcodec avutil swscale swresample avfilter -lnvmpi -lnvbuf_utils )main.cpp硬件解码读取视频帧#include iostream extern C { #include libavformat/avformat.h #include libavcodec/avcodec.h #include libavutil/hwaccel.h } int main() { av_register_all(); avformat_network_init(); AVFormatContext* fmt_ctx nullptr; if (avformat_open_input(fmt_ctx, test.mp4, nullptr, nullptr) 0) { std::cerr open file failed std::endl; return -1; } avformat_find_stream_info(fmt_ctx, nullptr); int v_stream_idx av_find_best_stream(fmt_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, nullptr, 0); AVStream* v_stream fmt_ctx-streams[v_stream_idx]; AVCodec* dec avcodec_find_decoder_by_name(h264_nvmpi); AVCodecContext* dec_ctx avcodec_alloc_context3(dec); avcodec_parameters_to_context(dec_ctx, v_stream-codecpar); // 开启Orin硬件解码 AVDictionary* opts nullptr; av_dict_set(opts, hwaccel, cuda, 0); avcodec_open2(dec_ctx, dec, opts); std::cout FFmpeg Orin 硬件解码器初始化成功 std::endl; // 释放资源 av_dict_free(opts); avcodec_free_context(dec_ctx); avformat_close_input(fmt_ctx); return 0; }十二、常见问题排错找不到 nvmpisudo ldconfig pkg-config --libs nvmpiconfigure 提示 cuda 头文件缺失export PATH/usr/local/cuda/bin:$PATH运行 ffmpeg 提示 libavxxx.so 找不到source ~/.bashrc sudo ldconfigOrin Nano 无 NVENCOrin Nano 仅支持 NVDEC 硬解编码只能用libx264软编码去掉--enable-nvmpi改用libx264。十三、打包部署离线部署到多台 Orin编译完成后打包安装目录拷贝到其他 Orin 设备# 打包 tar -zcvf ffmpeg-orin.tar.gz /usr/local/ffmpeg-orin # 目标设备解压 sudo tar -zxvf ffmpeg-orin.tar.gz -C /usr/local/ # 执行环境配置步骤八即可

相关新闻

如何在命令行中高效管理GB级科研数据?zenodo-upload终极解决方案

如何在命令行中高效管理GB级科研数据?zenodo-upload终极解决方案

如何在命令行中高效管理GB级科研数据?zenodo-upload终极解决方案 【免费下载链接】zenodo-upload upload big files to Zenodo using cURL, jq and bash 项目地址: https://gitcode.com/gh_mirrors/ze/zenodo-upload 对于需要处理大量科研数据的开发者和研究…

2026/7/10 11:06:47阅读更多 →
当可访问性审计遇上 AI:设计系统 WCAG 合规的自动化检查流水线

当可访问性审计遇上 AI:设计系统 WCAG 合规的自动化检查流水线

当可访问性审计遇上 AI:设计系统 WCAG 合规的自动化检查流水线 一、深度引言与场景痛点 WCAG 合规检查是设计系统的法律审计——每条规范(对比度 4.5:1、焦点可见、文字可读、交互可达)都需要逐一验证。手动审计覆盖 80 个组件的合规性需要…

2026/7/10 11:01:46阅读更多 →
Google Play接入与Firebase参数耦合实战指南

Google Play接入与Firebase参数耦合实战指南

1. 项目概述:为什么“Google Play接入/出参”值得单独写四篇? 做海外游戏发行的同行应该都踩过这个坑:App在本地测试一切正常,一上Google Play就卡在登录、支付回调失败、崩溃率飙升,或者更隐蔽的——数据打点全丢、推…

2026/7/10 11:01:46阅读更多 →
Claude Code 回复完成?让鼠标告诉你

Claude Code 回复完成?让鼠标告诉你

不只是提示音——用 RGB 鼠标做 Claude Code 的状态指示灯用 Claude Code 写代码时,经常切到其他窗口等回复。切回来早了打断推理,切晚了浪费时间。它自带的提示音一闪而过,很容易错过。我直接把桌面上那只吃灰的罗技 G102 改成了**物理状态灯…

2026/7/10 13:12:18阅读更多 →
食品经营许可证识别API接入详解:字段解析与curl示例

食品经营许可证识别API接入详解:字段解析与curl示例

适用场景 食品经营许可证是从事食品销售和餐饮服务的法定资质证件。在企业准入审核、供应商合规验证、平台商家入驻等业务中,人工录入证照信息效率低且易出错。通过API自动化识别证件上的关键字段,可以将业务处理时间从分钟级缩短到秒级,同时…

2026/7/10 13:12:18阅读更多 →
Claude Fable 5新功能全量实测报告(含27项基准对比数据):API延迟下降41%,上下文窗口突破200K tokens

Claude Fable 5新功能全量实测报告(含27项基准对比数据):API延迟下降41%,上下文窗口突破200K tokens

更多请点击: https://kaifayun.com 第一章:Claude Fable 5 发布背景与核心演进路径 Anthropic 在2024年第三季度正式发布 Claude Fable 5,标志着其从通用大语言模型向“可验证推理型智能体”范式的战略性跃迁。该版本并非简单参数量堆叠&…

2026/7/10 13:12:18阅读更多 →
ORB-SLAM2 从理论到代码实现(九):LocalMapping 程序详解

ORB-SLAM2 从理论到代码实现(九):LocalMapping 程序详解

1. 流程图 LocalMapping线程负责对新加入的KeyFrames和MapPoints筛选融合,剔除冗余的KeyFrames和MapPoints,维护稳定的KeyFrame集合,传给后续的LoopClosing线程。 主要的功能点在: 处理新的关键帧ProcessNewKeyFrame() 剔除不合格…

2026/7/10 13:12:18阅读更多 →
Jupyter notebook修改文件的默认工作路径的方法!!!

Jupyter notebook修改文件的默认工作路径的方法!!!

https://cloud.tencent.com/developer/article/2499452

2026/7/10 13:12:18阅读更多 →
HBM技术如何解决AI计算内存瓶颈:从原理到实践

HBM技术如何解决AI计算内存瓶颈:从原理到实践

在AI技术快速发展的今天,很多开发者都曾遇到过这样的困惑:明明配置了强大的GPU,但在运行大模型时性能提升却不明显,甚至出现瓶颈。这背后的核心问题往往不是计算能力不足,而是内存带宽成为了系统瓶颈。HBM(…

2026/7/10 13:07:17阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/9 9:45:20阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →