Ubuntu/Debian交叉编译安装ARM平台版本的ffmpeg

ubantu交叉编译ffmpeg到arm 编译出来有.a文件和.so文件,这里为指定安装路径。–cross-prefix= 交叉编译工具链。–target-os= 编译器目标os。ffmpeg版本为6.0.–arch= 选择架构。 阅读详情

1. 准备工作

(1)libmp3lame库

下载:

wget http://downloads.sourceforge.net/lame/lame-3.99.tar.gz

解压

编译:

./configure --prefix=/usr/local/arm --host=arm-none-linux-gnueabi
make
make install

编译ok。

(2)libxvid库(x264库)

支持xvid x264,现在最流行的两种高质量的压缩格式,下载地址是:

http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz

解压后参考其readme文件,打开xvidcore/doc/INSTALL文件
基本上还是通常的三步曲,只不过configure文件换了个目录,在build\generic路径下
我们也看到库支持vs2008编译

./configure --prefix=/usr/local/arm --host=arm-none-linux-gnueabi
make
sudo make install

(3)FAAC库的编译安装(貌似不需要)

从网上下载的源码是faad2-2.0.tar,在Ubuntu上解压后,由于是DOS格式的,执行下面语句会出错
./bootstrap

我的执行步骤是

chmod +x bootstrap
dos2unix bootstrap
./bootstrap

报错:

# ./bootstrap

configure.in:38: warning: underquoted definition of MY_CHECK_TYPEDEF_FROM_INCLUDE
configure.in:38:  run info '(automake)Extending aclocal'
configure.in:38:  or see http://www.gnu.org/software/automake/manual/automake.html#Extending-aclocal
./bootstrap: 5: ./bootstrap: libtoolize: not found

安装缺失的软件包:

# apt-get install -y libtoolize

再次尝试:

./configure --prefix=/usr/local/arm --host=arm-none-linux-gnueabi
make
make install

2. 配置及编译安装

相关的选项有

*--cross-prefix=PREFIX  use PREFIX for compilation tools []
 --enable-cross-compile assume a cross-compiler is used

 --disable-ffserver   disable ffserver build
 --disable-postproc   disable libpostproc build
 --disable-ffplay    disable ffplay build*

 *--arch=ARCH       select architecture []
 --cpu=CPU        select the minimum required CPU (affects
             instruction selection, may crash on older CPUs)
 --target-os=OS     compiler targets OS []*             

 *--enable-libfaac    enable FAAC support via libfaac [no]
 --enable-libmp3lame   enable MP3 encoding via libmp3lame [no]
 --enable-libxvid    enable Xvid encoding via xvidcore,
             native MPEG-4/Xvid encoder exists [no]*

 *--host-cc=HOSTCC    use host C compiler HOSTCC
 --host-cflags=HCFLAGS  use HCFLAGS when compiling for host
 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
 --host-libs=HLIBS    use libs HLIBS when linking for host
 
 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS []
 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS []
 --extra-libs=ELIBS   add ELIBS []
 
 --sysroot=PATH     root of cross-build tree
 --sysinclude=PATH    location of cross-build system headers* 

实际的配置参数为:

./configure --prefix=/usr/local/arm \
--cross-prefix=arm-none-linux-gnueabi- --enable-cross-compile \
--target-os=linux --arch=armv6j \
--disable-ffserver --disable-postproc --disable-ffplay \
--enable-libmp3lame --enable-libxvid \
--sysinclude=/usr/local/arm/include \
--extra-cflags=-I/usr/local/arm/include \
--extra-ldflags=-L/usr/local/arm/lib \
--enable-gpl

其中要注意--cross-prefix的设置最后要有符号- , --arch选项要根据自己的GCC的选项加,我的编译的选项有--arch=armv6j,不清楚就不要加.
最后加--enable-gpl是因为--enable-libxvid选项,这造成了与--enable-libfaac选项冲突。

然后

make

以root身份运行

make install

3. 测试

将安装目录中的ffmpeg程序拷贝到设备上,测试从视频中截取一张图片

ffmpeg -i 12.mp4 -y -f image2 -ss 10.010 -t 0.001 -s 320x240 test.jpg

成功执行,说明ffmpeg交叉编译顺利完成。


欢迎关注我的微信公众号【数据库内核】:分享主流开源数据库和存储引擎相关技术。

标题网址
GitHubhttps://dbkernel.github.io
知乎https://www.zhihu.com/people/…
思否(SegmentFault)https://segmentfault.com/u/db…
掘金https://juejin.im/user/5e9d3e…
优快云https://blog.youkuaiyun.com/dbkernel
博客园(cnblogs)https://www.cnblogs.com/dbkernel
交叉编译ffmpeg+x264+x265 (x86、arm-linux双版本)亲测有效 一站式脚本交叉编译ffmpeg 阅读详情

相关推荐

UE5 Linux Arm64打包部署实战:从交叉编译到国产化信创环境排雷指南

交叉编译是软件开发中实现跨平台部署的核心技术,其原理在于利用一套在宿主机(如x86_64)上运行的工具链,生成能在不同架构目标机(如aarch64)上执行的程序。这项技术的价值在于能显著提升开发效率,使开发者无需在目标硬件上进行本地构建,尤其适用于嵌入式系统、服务器集群以及当前热门的国产化信创环境部署。在游戏开发与工业仿真领域,将Unreal Engine 5项目部署到基于飞腾、鲲鹏等ARM架构的Linux服务器已成为常见需求,这涉及到复杂的工具链配置、第三方库适配与系统依赖管理。针对这一场景,深入理解并解

diaoju3333的博客 371

ARM 平台 交叉编译FFMpeg

目录 1.1.安装yasm 1.2.下载FFmpeg 1.3配置、编译FFMPEG 1.4 FFmpeg链接使用 1.5FFmpeg的版本差异 1.1.准备环境-安装yasm 这里我是直接通过ubuntu包安装的,当然也可以通过编译源码来安装。 sudo apt-get install yasm sudo apt-get install pkg-config 也可以通过-...

vidsec的专栏 4036

香橙派系统镜像选哪个?从官方下载到实战配置,一篇讲透Armbian、Ubuntu、Debian怎么选

本文深入解析香橙派系统镜像选型,对比Armbian、Ubuntu和Debian的核心优势与应用场景。通过实测数据和实战案例,帮助开发者根据项目需求选择最佳镜像,涵盖智能家居、嵌入式开发和服务器部署等场景,并提供镜像下载、验证和配置的实用技巧。

weixin_29268267的博客 447

Ubuntu 12.04交叉编译安装arm版本的ffmpeg

1 准备工作 (1)libmp3lame库 下载:    wget http://downloads.sourceforge.net/lame/lame-3.99.tar.gz                 或者 去该网站 http://jaist.dl.sourceforge.net/project/lame/lame/ 指定目录下载。 解压 编译:./confi

竹林听雨 3356

小米平板4刷入纯正Debian:旧安卓设备变Linux生产力工具

Linux系统移植是嵌入式开发和旧设备再利用领域的热门话题,其核心原理在于通过适配内核与驱动,让非x86架构硬件也能运行完整的桌面操作系统。这项技术的价值在于最大化硬件生命周期,为老旧设备注入新的生产力。在移动设备上,基于Android内核的Droidian方案通过复用原厂驱动,为用户空间部署Debian等成熟发行版提供了稳定基础。这使得像小米平板4这类搭载骁龙660的旧款安卓平板,能够摆脱移动生态限制,转型为支持apt软件管理、可运行VSCode、LibreOffice等标准Linux应用的便携开发或办公

weixin_33980459的博客 541

《七》ffmpeg交叉编译

ffmpeg交叉编译arm64 ,aarch64-linux-gnu编译器

QT/C++编程导航 572

基于ARM 的Linux系统的交叉编译(17)

OpenCV是一个开源的计算机视觉库,由英特尔公司开发并开源的一组跨平台的C++函数和少量的C函数组成,用于实时图像处理、计算机视觉和机器学习等应用领域。OpenCV可以在包括Windows、Linux、macOS等各种操作系统平台上使用,具有开放的编程接口,可用于各种应用开发。OpenCV的主要特点是易于使用,高效、学习资源和社区活跃。OpenCV可以计算相机标定、物体识别、动作跟踪、人脸识别、手写数字识别等任务,并可集成到摄像头、网络摄像头和机器人等系统中。

2301_78348935的博客 1035

人工智能训练师技能等级认定四级技能考核试卷-样题1

本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总分100分,考试时间150分钟。试卷涵盖数据处理、模型训练准备及系统维护等核心技能:1)垃圾分类数据集规范与处理(30分),要求评估数据格式并编写Python处理代码;2)学生成绩数据集分析(20分),涉及数据预处理、可视化及相关性分析;3)数据标注审核(10分),重点审核标注准确性;4)智能数据服务系统维护与优化(40分),包括安全帽数据集的项目创建、数据处理及平台协作。考核强调Python编程、数据处理平台操作及AI工作流程的实践能力。

weixin_42221934的博客 442

保姆级教程:在Ubuntu18.04上交叉编译OpenCV+FFmpeg并移植到RK3588(含环境变量配置)

本文提供了一份详尽的保姆级教程,指导开发者如何在Ubuntu 18.04系统上,通过交叉编译的方式,将OpenCV与FFmpeg库成功移植到RK3588平台。教程涵盖了从Docker环境搭建、交叉编译工具链配置,到FFmpeg与OpenCV的编译、部署及环境变量设置的全过程,旨在帮助开发者高效解决在ARM边缘设备上部署视觉应用的难题。

weixin_29174141的博客 271

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标 1 超级指标 指标公式:买卖提示非常明显(适合通达信) 指标源码如下: M:3 100 60 N 3 100 30 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M));RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,5,1); D:=SMA(K,3,1); J:=3*K-2*D;主力

m0_60244077的博客 3万+

永磁同步电机FOC控制实战:如何用线性死区补偿解决低速抖动问题(附Matlab仿真代码)

本文详细介绍了永磁同步电机FOC控制中线性死区补偿技术的工程实现方法,有效解决低速抖动问题。通过Matlab/Simulink仿真验证,该方案可将转矩脉动降低70%以上,显著提升系统稳定性。文章包含完整的数学模型构建、Simulink实现步骤及参数整定技巧,为工程师提供实用解决方案。

weixin_30872499的博客 155

Android平台FFmpeg集成指南:从编译到JNI调用的完整实践

音视频处理是移动应用开发中的常见需求,涉及编解码、格式转换、剪辑合成等核心技术。其原理基于对多媒体数据的解析、转换与重构,通过算法实现高效处理。在Android开发中,本地音视频处理能力能显著提升应用性能与用户体验,避免云端传输延迟,增强离线功能。FFmpeg作为开源音视频处理库,提供了完整的解决方案,支持多种编解码器和封装格式。通过JNI技术,开发者可将FFmpeg集成到Android应用中,实现视频转码、音频提取等核心功能。本文详细介绍了FFmpeg在Android平台的编译配置、CMake集成及JNI

weixin_34151004的博客 402

RingBuffer 环形缓冲区----镜像指示位

称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。这个宏定义用于计算向下对齐的地址。size和align。size是要对齐的内存大小,align是所需的对齐大小。这个宏返回一个值,该值是size向下对齐到align边界后的地址。例如,假设我们有一个 32 位的系统,并且我们需要将数据对齐到 64 位的边界。我们可以使用在这个例子中,data数组的大小为 10 个元素,我们需要将其对齐到 8 字节边界。宏返回data。

呵呵哒!的博客 2410

naive-ui Empty 空状态组件完全指南:Props、Slots、尺寸与主题定制

naive-ui 的 `NEmpty` 组件用于在列表、表格、筛选结果等无数据场景中展示占位内容,帮助用户理解"当前没有数据"并引导下一步操作。本指南以官方文档 [Empty 组件文档](https://link.gitcode.com/i/11742de5e5eef0178606d4a44ed10940) 为核心骨架,结合组件源码、主题样式与单元测试,完整讲解其 Props、Slots、五种尺寸

gitblog_00549的博客 379

168、运动控制中的标定:编码器零点标定

文章摘要 运动控制系统中的编码器零点标定是确保精确控制的关键基础步骤。文章通过实际案例说明,即使0.3度的零点偏移也会导致电机异常抖动。详细介绍了三种标定方法:反电动势法(需示波器)、电流注入法(适合量产)和霍尔传感器法(粗标定),并指出常见陷阱如忽略极对数、Z脉冲重复性问题和温度漂移。提供了基于STM32的嵌入式实现代码片段,强调标定后的静态、动态和负载验证的重要性。作者建议量产产品设置自动标定工位,研发样机采用更精确的方法,并强调标定数据应与电机序列号绑定。

m0_50546716的博客 139

飞牛fnNAS虚拟机标准安装

飞牛NAS是一款基于Debian开发的国产免费NAS系统,支持x86架构设备,可将闲置硬件改造为NAS服务器。系统安装简便,支持多种存储模式与硬盘休眠功能,具备智能影视管理、照片备份等实用功能,并提供多种远程访问方式。飞牛NAS还支持Docker扩展,目前已承诺永久免费。文章详细介绍了在VMware虚拟机中安装飞牛NAS的步骤,包括下载镜像、创建虚拟机、初始化设置等过程,并展示了创建共享文件夹等基本操作,帮助用户快速上手这款功能强大的免费NAS系统。

dgnankai的专栏 3262

FFmpeg跨平台安装与视频无损截取全攻略:从环境搭建到命令精讲

音视频处理是多媒体开发与内容创作中的基础技术,其核心在于对编码、容器格式与流媒体的理解。FFmpeg作为一款开源的音视频处理库,通过命令行工具提供了编解码、转码、剪辑等强大功能,其价值在于能够高效、灵活地处理各类多媒体任务,是自动化处理与批量操作的工程利器。在实际应用中,无论是视频剪辑、格式转换还是流媒体服务,FFmpeg都扮演着关键角色。本文聚焦于FFmpeg的实战入门,针对常见的“无法执行二进制文件”等环境问题,详解了在Windows、macOS和Linux系统下的安装与配置方法,并深入剖析了使用`-c

weixin_30907935的博客 403

【QNX+Android虚拟化方案】129 - USB眼图参数配置

【QNX+Android虚拟化方案】129 - USB眼图参数配置

|~~~热爱生活、努力学习的小伙汁~~~| 821

FFmpeg架构深度解析:从核心组件到实战编译与集成开发

音视频处理是现代多媒体应用开发的核心技术之一,其核心原理涉及对音视频数据的压缩、解压缩、封装与处理。FFmpeg作为该领域最著名的开源框架,其内部架构遵循“解封装->解码->滤镜处理->编码->封装”的经典数据流模型。这一设计使其具备了强大的灵活性与处理能力,能够高效应对格式转换、流媒体处理、实时编辑等多种工程场景。理解其核心组件如libavformat、libavcodec和libavfilter的分工与协作,是进行音视频深度定制开发、性能优化以及解决复杂编译依赖问题的关键。本文将从源码结构、数据流转机制

weixin_30847939的博客 303

【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管

本文介绍了基于51单片机外部中断(INT0/INT1)的四个实践案例:1)INT0控制LED开关;2)INT0中断实现数码管计数/清零;3)INT0中断构建秒表功能(启动/暂停/清零);4)INT0/INT1双中断独立控制两组数码管计数。每个案例包含电路原理图、接线说明及完整源代码,重点演示了外部中断在硬件控制中的应用方法。附加硬件工程师笔试面试资料链接,涵盖器件知识、Multisim教程等内容,适合嵌入式学习者参考实践。(149字)

XU157303764的博客 1913

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

FFmpeg实战指南:从安装到核心命令,解决音视频处理难题

音视频处理是现代软件开发中的常见需求,涉及多媒体数据的编解码、封装与流处理。其核心原理在于对音频和视频流的分离、转码与同步,通过时间戳机制确保播放的连贯性。掌握这些技术对于构建视频编辑、流媒体服务及内容自动化处理系统具有重要价值,广泛应用于在线教育、社交娱乐及安防监控等领域。本文聚焦于FFmpeg这一强大的开源工具,它提供了完整的跨平台解决方案。通过理解其命令行参数思维,开发者可以高效实现精准剪辑、字幕添加等操作,并有效解决常见的“无法执行二进制文件”等环境配置问题。文中将结合Java与Python集成实践

weixin_33951761的博客 384

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ARM架构在智能医疗设备中的实践:从Linux系统选型到Docker容器化部署

嵌入式系统开发是构建现代智能设备的基础,其核心在于为特定硬件平台选择和定制操作系统。ARM架构凭借其高能效比和高度集成的SoC特性,已成为便携式、可穿戴设备及边缘计算节点的首选平台,其技术价值在于能够支撑设备在严苛功耗与空间限制下实现复杂功能。在工程实践中,为ARM平台构建稳定可靠的软件栈是关键,这涉及到操作系统选型、交叉编译环境搭建以及应用部署等多个环节。例如,在医疗设备这类对可靠性和安全性要求极高的场景中,开发者常面临从x86迁移到ARM架构的挑战,需要为ARM Linux系统适配各类驱动和库,并解决诸

weixin_30411239的博客 374

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ARM收购IoT服务商:从芯片IP到一站式开发平台的战略转型

在嵌入式系统和物联网(IoT)领域,芯片架构是设备运行的基石,其设计直接影响着功耗、性能和成本。ARM架构凭借其低功耗特性,已成为移动和嵌入式设备的主流选择。其核心原理在于精简指令集(RISC)设计,通过IP授权模式,让芯片厂商能够基于统一架构开发定制化处理器。这一模式的技术价值在于创造了庞大的软硬件生态,降低了芯片设计门槛。随着边缘计算和物联网应用场景的爆发,海量设备对开发部署的便捷性、软件兼容性以及后期运维提出了更高要求。开发者常面临交叉编译环境配置、特定软件包移植、系统镜像制作等具体挑战,例如为ARM

weixin_30876945的博客 342

Android音视频开发:FFmpeg集成与JNI调用实战指南

音视频编解码是多媒体应用开发的核心技术,它涉及将原始音视频数据转换为特定格式进行存储或传输。其原理基于编码算法对数据进行压缩,解码则进行还原。在移动开发领域,Android系统虽然提供了MediaCodec等硬件加速方案,但在处理非标准格式、复杂滤镜或需要跨平台一致性的场景时,原生API往往能力有限。此时,集成功能强大的开源库成为关键解决方案,能够为应用带来专业级的处理能力和广泛的格式兼容性。FFmpeg作为业界公认的“瑞士军刀”,通过其libavcodec、libavformat等核心库,为开发者提供了从

weixin_34038293的博客 476

海思开发板RTMP视频推流实战:FFmpeg与Nginx RTMP模块集成指南

视频编码与流媒体传输是多媒体技术栈的核心组成部分。其基本原理是将原始视频数据通过编码算法压缩,再通过网络协议进行封装和传输,以实现高效的存储与实时分发。这项技术的核心价值在于平衡视频质量、带宽占用与延迟,是构建实时音视频应用的基础。在安防监控、工业巡检、无人机图传等嵌入式与物联网场景中,低功耗、高性能的硬件编码与稳定的网络推流至关重要。本文聚焦于如何将海思芯片强大的硬件编码能力,与FFmpeg的流媒体处理及Nginx的高并发分发能力相结合,构建一套完整的嵌入式视频推流解决方案。文中详细阐述了交叉编译、MPP

362
下一篇: 程序人生 | Makefile 常用模板 - 静态链接库/动态链接库/可执行文件
dbkernel
博客等级 码龄4年 60粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值