米尔瑞萨RZ/G2L开发板-01 开箱+环境搭建+交叉编译FFMPEG

news2024/11/25 22:33:43

标题有点长哈,首先要感谢米尔电子提供的开发板,异构的板子说实话还真的是最近才开始接触的,在我提交申请后,很快就收到板子了,而且还是顺丰给发来的,其实我估计很多人就是为了骗板子,因为米尔的规则还是比较松一些的,还是希望大家多多研究吧,但是,提交的时候既然决定要做一个成品,奖品是次要的,但是履行承诺最重要。
本来是希望再继续研究一下,再发出来的,结果上午看到米尔的公众号里发出了以为大佬的研究来,和我的很相似,有点撞车了,都是在搞音视频,而且都选择了FFMPEG,而且还有上一篇内容,但是我看了一下论坛里好像并没有内容。
还要提一句的是,板子目前Ubuntu镜像还没有放出来,我给米尔打了好几个电话了,说是在整理资料,所以如果拥有Ubuntu镜像的话,那么使用ffmpeg就会方便很多了,直接一个apt命令行就全部搞定了。

一、开箱

开箱其实没有必要说太多了,大家也都收到板子了,150套呢,真的太大方了,估计开箱的环节不少,简单来讲就是异构板子,双核A53+M33芯片,瑞萨出的,板载1GB DDR4 + 8GB EMMC,双千兆网口,双USB2.0,HDMI以及WiFi模块。附送了TTL串口线和电源线,TTL是3.3V电平,这么珍贵的板子可得好好保护啊。电源也值得一说,附送了很多种标的AC,DC这面也是经过了一次转换。
板子真的很结实,盒子也很有设计感,真的很喜欢!

二、环境搭建

环境搭建基本上还是比较轻松的,首先要从官方下载站上下载板子的资源,地址在这里http://down.myir-tech.com/MYD-YG2LX/。可以直接在里面的《MYD-YG2LX_Linux软件开发指南》的第2章中就可以找到了,我使用的是Debian 不带桌面的系统,我来说一下我的步骤,首先通过WINSCP将03_Tools\Toolchains\sdk.tar.bz2的文件上传到Debian电脑里,然后进行解压。

tar -xjvf sdk.tar.bz2

进入到解压好的目录里面,然后:

sudo bash poky-glibc-x86_64-myir-image-full-aarch64-myir-yg2lx-toolchain-3.1.20.sh

因为要将包放到/opt下,所以要用sudo,我因为要涉及到VPU,所以必须要用full的包来进行编译,然后再把环境引入就OK了,我都是使用的默认的,如果和我一样使用默认的话,那么也可以直接用下面这个命令。

source /opt/poky/3.1.20/environment-setup-aarch64-poky-linux

这里值得一说的是,如果重启或者退出SHELL以后重新登录进来都是需要重新引入一下的,就是你再普通用户当中引入了,如果使用sudo命令的话,依然是找不到的,因为你没有在root用户下引入!!!
最后可以测试一下。
结果

好了,可以继续了!可以编一个Hello world来测试一下了!不过编译完成以后,要到板子上面才可以运行哦!

三、FFMPEG的编译

终于讲到重头戏了,以上内容可能网络上的资料一抓一大把,但是这块的内容可能搜索起来就没那么容易了,或者版本或者板子不同,编译起来就都不一样了,编译hello world可能只需要一行命令就搞定了,但是我们要搞的肯定不可能只是hello world,尤其是在写我们自己的项目中,我们不可能去手写一个264的编码库,所以肯定就需要引入别的库,而且我们希望用到FFMPEG的命令行,以后也要引入FFMPEG的库,所以先来进行编译FFMPEG吧。

1.编译x264

在编译FFMPEG的时候,还要增加上H.264的软编解码,所以还要先编译x264的库。

git clone https://code.videolan.org/videolan/x264.git
sudo mkdir /opt/arm
sudo mkdir /opt/arm/x264
cd x264
./configure --prefix=/opt/arm/x264 --enable-shared --enable-static --disable-opencl --enable-pic --disable-asm --host=arm-linux
make -j4
sudo -s
source /opt/poky/3.1.20/environment-setup-aarch64-poky-linux 
make install

我已经写的很详细了,但是如果在使用git,make的时候发现没有命令,却不知道怎么安装的话,那么是不是先试着学习一下Linux,然后再玩Linux开发板呢,剩下其他的问题应该也是可以通过百度就可以解决的,如果大家发现按照我的命令没有成功的话,就可以给我留言,我可以帮忙看看是不是我的命令哪里有遗漏。
大概讲一下就是,先用git拉库,先创建安装的目录,然后通过configure进行配置,例如配置安装的目录,我的安装目录是/opt/arm/x264,然后开启编译动态库,静态库,关闭一些没用的,最后的–host是交叉编译必须加的。然后就是编译,然后因为安装的目录权限问题,所以要切换到root下进行安装,注意了,这里我上面就说过,切换用户后要先引入环境,最后直接安装就可以成功了!

2.编译FFMPEG

wget https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz
xz -d ffmpeg-6.0.tar.xz
tar -xvf ffmpeg-6.0.tar
cd ffmpeg-6.0
sudo mkdir /opt/arm/ffmpeg
export PKG_CONFIG_PATH=/opt/arm/x264/lib/pkgconfig
./configure  --pkg-config="pkg-config --static"  --target-os=linux --arch=arm64  --cross-prefix=aarch64-poky-linux- --prefix=/opt/arm/ffmpeg --enable-version3 --enable-libx264 --enable-nonfree --enable-gpl --disable-x86asm  --extra-cflags="-I/opt/arm/x264/include" --extra-ldflags="-L/opt/arm/x264/lib"  --enable-cross-compile --sysroot=/opt/poky/3.1.20/sysroots/aarch64-poky-linux/
make
sudo -s
source /opt/poky/3.1.20/environment-setup-aarch64-poky-linux 
make install

这个地方其实和之前差不多,前5条命令就是下载源码,然后解压,撞见安装目录。第6条是引入编译环境,第7条是配置,嗯( ̄▽ ̄),自己看吧,我不知道改怎么解释了。总之就是和x264不一样的地方就是有些是因为我们要进行交叉编译,另外一些是因为要引入x264模块,还有就是编译FFMPEG所必须的原因啦。然后就是熟悉的make和make install啦!
如果在configure的过程中出现问题,可以直接看提示,也可以看看ffbuild/config.log记录。
最后,可以用看一下/opt/arm/x264和/opt/arm/ffmpeg下面,有没有编译好的文件就OK了。
剩下的板子上测试,我们下一篇帖子继续哈,写文章要比写代码累(lll¬ω¬)

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

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

相关文章

【学习FreeRTOS】第2章——FreeRTOS基础知识

1.任务调度 1.1.任务调度简介 调度器就是使用相关的调度算法来决定当前需要执行的哪个任务FreeRTOS 一共支持三种任务调度方式: 抢占式调度:针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务…

2.CUDA 编程手册中文版---编程模型

2.编程模型 更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program 来加入NVIDIA开发者计划 本章通过概述CUDA编程模型是如何在c中公开的,来介绍CUDA的主要概念。 编程接口中给出了对 CUDA C 的广泛描述。 本章…

linux环形缓冲区kfifo实践3:IO多路复用poll和select

基础知识 poll和select方法在Linux用户空间的API接口函数定义如下。 int poll(struct pollfd *fds, nfds_t nfds, int timeout); poll()函数的第一个参数fds是要监听的文件描述符集合,类型为指向struct pollfd的指针。struct pollfd数据结构定义如下。 struct poll…

Netty的ReplayingDecoder分析

说明 io.netty.handler.codec.ReplayingDecoder是io.netty.handler.codec.ByteToMessageDecoder的一个子类,是一个抽象类,它将字节流解码成其它的消息。需要ReplayingDecoder的子类实现decode(ChannelHandlerContext ctx, ByteBuf in, List out)这个函数…

Selenium 自动化 | 案例实战篇

Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器(如 Chrome、Opera 和 Microsoft Edge)中的工具,用于帮助开发人员调试和研究网站。 借助 Chrome DevTools,开发人员可以更深入地访问网站&#xf…

恒盛策略:快跌慢涨是主力洗盘?

当股市一直处于震荡状态,不断重复时。许多股民纷纷开端猜想股市未来走势,同时也有不少人议论着什么是“主力洗盘”和“快跌慢涨”。这儿,咱们来从多个视点来剖析这个问题。 首要,咱们需要了解“主力洗盘”和“快跌慢涨”两个概念。…

leetcode 475. 供暖器(java)

供暖器 供暖器题目描述双指针代码演示 双指针专题 供暖器 难度 - 中等 leetcode 475 题目描述 冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在,给出位于一条水平线上的房屋 ho…

window下部署Yapi接口管理系统部署总结

window下部署Yapi接口管理系统部署总结 YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平…

使用几何和线性代数从单个图像进行 3D 重建

使用几何和线性代数从单个图像进行 3D 重建 萨蒂亚 一、说明 3D重构是一个挑战性题目,而且这个新颖的题目正处于启发和膨胀阶段;因此,各种各样的尝试层出不穷,本篇说明尝试的一种,至于其它更多的尝试,我们在…

uniapp+vue3项目中使用vant-weapp

创建项目 通过vue-cli命令行创建项目 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 uni-app官网 (dcloud.net.cn) npx degit dcloudio/uni-preset-vue#vite my-vue3-project打开项目 点击顶部菜单栏终端/新建终端 执行安装依赖指令 yarn install 或 npm install 安装vant…

AI语音工牌在通讯行业营业大厅场景应用

在运营商营业大厅中,每天都有大量的客户来访咨询、办理业务。同时也会经常产生大量的客诉纠纷和服务差评。但因为缺乏有效的管理工具,加上线下沟通场景的数据采集难度高,数字化程度低,管理一直处于盲区。如何有效的管控营业厅人员…

从三个主要需求市场分析,VR全景创业的潜力发展

VR全景,5G时代朝阳产业,其实拍摄制作很简单,就是利用一套专业的相机设备去给商家拍摄,结合后期专业的3DVR全景展示拍摄制作平台,打造3D立体环绕的效果,将线下商家真实环境1:1还原到线上&#xf…

从C语言到C++_31(unordered_set和unordered_map介绍+哈希桶封装)

目录 1. unordered_set和unordered_map 1.1 unordered_map 1.2 unordered_set 1.3 unordered系列写OJ题 961. 在长度 2N 的数组中找出重复 N 次的元素 - 力扣(LeetCode) 349. 两个数组的交集 - 力扣(LeetCode) 217. 存在重…

NIO 非阻塞式IO

NIO Java NIO 基本介绍 Java NIO 全称 Java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 NewIO),是同步非阻塞的。NIO 相关类都被…

AIGC 浪潮下,鹅厂新一代前端人的真实工作感受

点击链接了解详情 原创作者:张波 腾小云导读 AIGC 这一时代潮流已然不可阻挡,我们要做的不是慌乱,而是把握住这个时代的机会。本文就和大家一起来探索在 AIGC 下,前端工程师即将面临的挑战和机遇。聊聊从以前到现在,A…

诸神之战:数字时代的低代码服务商与代理商究竟谁更强?

随着数字化转型浪潮的推进,企业对数字化应用开发的需求迅速增长。低代码作为一种新的软件开发范式,以其可视化和快速构建应用的能力,被广泛应用于成千上万家企业中。当低代码行业的逐渐发展成熟,越来越多的人看到了低代码的商业价…

使用乐观锁解决超卖问题

目录 什么是超卖? 乐观锁和悲观锁的定义 悲观锁: 乐观锁: 乐观锁的实现方式 1.版本号 2.CAS法 什么是超卖? 举个例子:订单系统中,用户在执行下单操作时,可能同一时间有无数个用户同时下单&…

平替版Airtag

Airtag是什么? AirTag是苹果公司设计的一款定位神奇,它通过一款纽扣电池进行供电,即可实现长达1-2年的关键物品的定位、查找的功能。 按照苹果公司自己的话说—— 您“丢三落四这门绝技,要‍失‍传‍了”。 AirTag 可帮你轻松追…

USB(二):Type-C

一、引脚定义 Type-C口有 4对TX/RX差分线,2对USB D/D-,1对SBU,2个CC,4个VBUS和4个地线Type-C母座视图: Type-C公头视图: 二、关键名词 DFP(Downstream Facing Port): 下行端口&#xff0c…

【云原生】Pod的进阶

目录 一、资源限制二、重启策略三、健康检查 ,又称为探针(Probe)3.1示例1:exec方式3.2示例2:httpGet方式3.3示例3:tcpSocket方式3.4示例4:就绪检测3.5示例5:就绪检测2 四、启动、退出…