rv1126交叉编译opencv+ffmpeg+x264

文章目录

  • 🌕交叉编译x264
    • 🌙创建build_x264.sh(放在下载的x264目录下)
    • 🌙编译过程
    • 🌙查看编译后的so文件是否是arm版的
  • 🌕下载编译ffmpeg
    • 🌙下载ffmpeg
    • 🌙创建编译脚本
    • 🌙创建ffmpeg编译路径
    • 🌙编写脚本内容
    • 🌙验证是否编译成功
  • 🌕交叉编译opencv4.5.3
  • 🌕注意事项
  • 🌕参考博客

🌕交叉编译x264

git clone https://code.videolan.org/videolan/x264.git
cd x264

🌙创建build_x264.sh(放在下载的x264目录下)

#!/bin/bash# 设置工具链路径
TOOLCHAIN_PATH=/bruce/RV1126/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
GCC_COMPILER=${TOOLCHAIN_PATH}/bin/arm-linux-gnueabihf# 设置x264安装路径
X264_INSTALL_DIR=/bruce/software/rv1126_install/x264# 配置交叉编译选项,直接指定 C 和 C++ 编译器
./configure --prefix=${X264_INSTALL_DIR} \--cross-prefix=${GCC_COMPILER}- \--cc=${GCC_COMPILER}-gcc \--cxx=${GCC_COMPILER}-g++ \--host=arm-linux \--enable-cross-compile \--enable-shared \--disable-static \--enable-pic \--extra-cflags="-g -I${TOOLCHAIN_PATH}/include" \--extra-ldflags="-L${TOOLCHAIN_PATH}/lib"# 编译并安装x264
make -j$(nproc)
make install

🌙编译过程

在这里插入图片描述

🌙查看编译后的so文件是否是arm版的

# 进入安装路径的lib
cd /bruce/software/rv1126_install/x264/lib

在这里插入图片描述

# 输入
file libx264.so.157

在这里插入图片描述

🌕下载编译ffmpeg

🌙下载ffmpeg

由于后续编译安装的是opencv-4.5.3,为了使ffmpeg 和opencv版本匹配,选择ffmpeg-4.1.3进行交叉编译安装。

下载FFmpeg源码
FFMPEG_VERSION=4.1.3

wget https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2
tar -xjf ffmpeg-${FFMPEG_VERSION}.tar.bz2
cd ffmpeg-${FFMPEG_VERSION}

🌙创建编译脚本

cd /bruce/software/source/ffmpeg-4.1.3
touch build_ffmpeg.sh

🌙创建ffmpeg编译路径

/bruce/software/rv1126_install/ffmpeg

🌙编写脚本内容

#!/bin/bash# 设置工具链路径
TOOLCHAIN_PATH=/bruce/RV1126/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
GCC_COMPILER=${TOOLCHAIN_PATH}/bin/arm-linux-gnueabihf# 设置x264安装路径
X264_INSTALL_DIR=/bruce/software/rv1126_install/x264# 设置FFmpeg安装路径
FFMPEG_INSTALL_DIR=/bruce/software/rv1126_install/ffmpeg# 配置交叉编译选项,直接指定 C 和 C++ 编译器
./configure --prefix=${FFMPEG_INSTALL_DIR} \--cc=${GCC_COMPILER}-gcc \--cxx=${GCC_COMPILER}-g++ \--target-os=linux \--arch=arm \--enable-cross-compile \--enable-shared \--disable-static \--disable-debug \--disable-doc \--enable-gpl \--enable-libx264 \--enable-pic \--extra-cflags="-I${X264_INSTALL_DIR}/include -I${TOOLCHAIN_PATH}/include" \--extra-ldflags="-L${X264_INSTALL_DIR}/lib -L${TOOLCHAIN_PATH}/lib" \--strip=${GCC_COMPILER}-strip# 编译并安装FFmpeg
make -j$(nproc)
make install# 清理
# cd ..
# rm -rf ffmpeg-${FFMPEG_VERSION}
# rm ffmpeg-${FFMPEG_VERSION}.tar.bz2echo "FFmpeg has been installed in ${FFMPEG_INSTALL_DIR}"

🌙验证是否编译成功

进入ffmpeg安装目录
cd uce/software/rv1126_install/ffmpeg/lib

在这里插入图片描述

验证得到的ffmpeg架构

file libavcodec.so.58.35.100

在这里插入图片描述

🌕交叉编译opencv4.5.3

opencv下载
可以去官网下载(或者采用git方法)opencv-4.5.3版本。

opencv_contrib下载
采用git方式下载opencv_contrib,后续需要进行一个版本验证。

#下载opencv_contrib
git clone https://github.com/opencv/opencv_contrib.git
#验证opencv_contrib对应的版本
git checkout 4.5.3

🌕注意事项

2025.1.23 编译带ffmpeg的Opencv一直失败
后来我退出docker,并把编译后的安装目录写为ffmpeg,而不是ffmpeg_4_5_3_rv1126,x264_rv1126。
然后就成功了。在使用时可以在代码中添加如下代码,看看编译好的Opencv是否支持ffmpeg:
std::cout << "OpenCV FFmpeg support: " << cv::getBuildInformation() << std::endl;

🌕参考博客

RV1126编译opencv+ffmpeg+x264_rv1126 编译opencv ffmpeg-CSDN博客

rv1126 交叉编译opencv+ffmpeg+x264与简单demo测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29525.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式 ARM Linux 系统构成(3):根文件系统(Root File System)

目录 一、根文件系统的原理与重要性 二、根文件系统的构成 2.1. 基本目录结构 2.2. 核心组件 2.3. 设备驱动 2.4. 网络工具和协议 2.5. 调试工具 三、根文件系统的制作方法 四、根文件系统的测试 五、构建根文件系统的关键技术 5.1. 最小化构建工具 5.2. 关键配置文…

Flowable 基本入门

flowable.7z官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 1、Flowable介绍 Flowable是BPMN的一个基于java的软件实现&#xff0c;不过Flowable不仅仅包括BPMN&#xff0c;还有DMN决策表和CMMN Case管理引擎&#xff0c;并且有自己的用户管理、微服务API等一系列功能&a…

如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能

作者&#xff1a;来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中&#xff0c;通过使用 LLM 生成的词汇&#xff0c;为搜索应用增强自动补全功能&#xff0c;实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能&#xff0c;它通过在用户输入时实…

【LTSPCIE】D触发器的搜索和使用

几乎没有D触发器的spice模型&#xff0c;不过LTSPICE里面自带一个D触发器 搜索&#xff1a;DFLOP 如下图&#xff08;这里必须吐槽一下LTSPICE的搜索功能&#xff0c;超级难用&#xff09; 但是接入电路后发现并不工作&#xff01;原因是还需要进行参数的设置。参考该篇文章L…

从零开始实现大语言模型(十四):高阶训练技巧

1. 前言 预训练大语言模型的流程与训练普通神经深度网络模型本质上并没有任何不同。可以使用深度学习实践中已经被证明非常有效的高阶训练技巧&#xff0c;优化大语言模型预训练流程&#xff0c;使大语言模型预训练效率更高&#xff0c;训练过程更稳定。 本文介绍深度学习领域…

鸿蒙HarmonyOS-Navagation基本用法

Navagation基本用法 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏&#xff0c;内容栏和公工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&am…

centos8更换阿里云yum源

1.centos8更换为阿里云yum源 2.更换阿里云Yum-centos8源 mv /etc/yum.repos.d/CentOS-Stream-BaseOS.repo /etc/yum.repos.d/CentOS-Stream-BaseOS.repo.backupcurl -o /etc/yum.repos.d/CentOS-Stream-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-8.repowget -O /et…

springboot-bug

spring boot :3.2.6该版本不与mybatis框架兼容&#xff0c;所以使用该版本时&#xff0c;请注意JDBC框架&#xff0c;要不然你会疑问&#xff0c;明明自己映射是对的&#xff0c;实体类是对的&#xff0c;各种东西都配好了&#xff0c;但就是报错&#xff0c;这是因为SpringBoo…

【HarmonyOS Next之旅】DevEco Studio使用指南(一)

目录 1 -> 工具简介 1.1 -> 概述 1.2 -> HarmonyOS应用/服务开发流程 1.2.1 -> 开发准备 1.2.2 -> 开发应用/服务 1.2.3 -> 运行、调试和测试应用/服务 1.2.4 -> 发布应用/服务 2 -> 工程介绍 2.1 -> APP包结构 2.2 -> 切换工程视图 …

2025网络安全工程师:软考新挑战与职业发展探析

网络安全工程师的崛起 随着信息技术的迅猛发展&#xff0c;网络安全问题日益凸显&#xff0c;网络安全工程师这一职业逐渐受到社会各界的广泛关注。特别是在2025年&#xff0c;随着各项网络安全法规的完善和实施&#xff0c;网络安全工程师的角色愈发重要。他们不仅是企业信息…

【SpringMVC】深入解析@ RequestMapping 注解的概念及使用和 MVC 介绍

Spring Web MVC入门 1. Spring Web MVC 什么是 Spring Web MVC&#xff1f; MVC官方文档介绍 Spring Web MVC是Spring框架中的一个用来做网站开发的部分&#xff0c;它是基于Servlet技术的。 虽然它的正式名字叫“Spring Web MVC”&#xff0c;但大家一般都简称它“SpringMVC”…

高效编程指南:PyCharm与DeepSeek的完美结合

DeepSeek接入Pycharm 前几天DeepSeek的充值窗口又悄悄的开放了&#xff0c;这也就意味着我们又可以丝滑的使用DeepSeek的API进行各种辅助性工作了。本文我们来聊聊如何在代码编辑器中使用DeepSeek自动生成代码。 注&#xff1a;本文适用于所有的JetBrains开发工具&#xff0c…

deepseek使用记录18——艺术的追问

一 好的&#xff0c;基于前面学习结果&#xff0c;再写一篇有艺术美的文章 《美的起义》 凌晨四点的茶摊在电子支付二维码下苏醒&#xff0c;蒸腾的水汽中浮动着八百年前建盏的釉色。老板娘把栀子花插在共享单车车筐里&#xff0c;花瓣的弧度与北宋汝窑青瓷的冰裂纹暗合&…

Docker参数,以及仓库搭建

一。Docker的构建参数 注释&#xff1a; 1.对于CMD&#xff0c;如果不想显示&#xff0c;而是使用交互界面&#xff1a;docker run -ti --rm --name test2 busybox:v5 sh 2.对于CMD&#xff0c;一个交互界面只可以使用一个&#xff0c;如果想多次使用CMD&#xff0c;则用ENTR…

并发编程——累加器

目录 1 AtomicLong 1.1 核心功能 1.2 实现原理&#xff1a; (1&#xff09;基于 Unsafe 的底层操作 (2) volatile字段的内存可见性 (3&#xff09;CAS 操作与 ABA 问题 1.3 性能分析 1.4 使用场景 2 LongAdder 核心设计原理 1 分段存储 2 分散更新策略 3.处理高竞…

10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 目录 第一篇&#xff1a;Avatar 组件基础概念与设计1. 组件概述2. 接口设计2.1 形状类型定义2.2 尺寸类型定义2.3 组件属性接口 3. 设计原则4. 使用…

天津大学02-深度解读DeepSeek:部署、使用、安全【文末附下载链接】

大模型风险与不当用例——价值观错位 大模型与人类价值观、期望之间的不一致而导致的安全问题&#xff0c;包含&#xff1a;• 社会偏见&#xff08;Social Bias&#xff09;LLM在生成文本时强化对特定社会群体的刻板印象&#xff0c;例如将穆斯林与恐怖主义关联&#xff0c;或…

C#程序加密与解密Demo程序示例

目录 一、加密程序功能介绍 1、加密用途 2、功能 3、程序说明 4、加密过程 5、授权的注册文件保存方式 二、加密程序使用步骤 1、步骤一 ​编辑2、步骤二 3、步骤三 4、步骤四 三、核心代码说明 1、获取电脑CPU 信息 2、获取硬盘卷标号 3、机器码生成 3、 生成…

《Python实战进阶》No14: 使用Dask处理大规模数据集

文章特色&#xff1a; 包含3个核心代码块&#xff0c;覆盖延迟计算、分块策略和云原生集成4个架构图/监控面板示意图的占位说明对比表格清晰展示技术选型差异实战案例包含从数据读取到机器学习的完整流水线扩展思考部分引入最新云原生技术实践 Dask 是一个灵活的开源库&#…

React + React-intl @3.xx + TypeScript

声明&#xff1a;此篇文章使用的版本是 "react-intl": "^3.12.0"。 因为react-intl3.xx版本相较于react-intl2.xx版本差别较大&#xff0c;有些API是break change, 所以这篇文章的实现方式&#xff0c;不适用于react-intl2.xx版本。 一: 安装react-intl np…