Ubuntu16.04下交叉编译ffmpeg

ffmpeg编译与交叉编译 1.下载ffmpeg源码 阅读详情

目录

前言

因为项目有需求,需要用到ffmepg。所以就只能硬着头皮开始新的学习之路,搭建好环境是最基本的了!
学习!分享!感谢!

x264和x265库

H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,运动图像专家组)联合制定的视频编码标准。而x264是一个开源的H.264/MPEG-4 AVC**视频编码函数库,是最好的有损视频编码器。**——百度百科

同样的片源、码率1、编码器默认设置下,用x264编码的视频(一般是mkv或mp4格式)一定会比rmvb画质更好。x264是一种编码方式。

x265是一个用于编码,符合高效率视频编码(HEVC/H.265)标准的视频开源自由软件及函数库。

由上可知,x264和x265库主要是用来给视频编码的,而博主暂时的工作只是接收网络流,然后解码处理,所以就不添加x264和x265库的需要了!

SDL

SDL(Simple DirectMdeia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输入输出的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台的应用软件。

FFmpeg的编译选项

感觉基本像这种跨平台的项目,都会提供./configure --help来查看编译选项。然后在网上搜索,会发现很多博主都讲解的这一部分。ffmpeg编译选项汇总。本人使用的是ffmpeg-3.4.1.tar.xz
这里我记录一下我编译时用到的编译选项:

--prefix=PREFIX // 安装程序到指定目录
--enable-shared // 构建共享库(默认关闭)
--enable-gpl    // 允许使用GPL代码 由此产生的库文件和二进制文件将在GPL下
--cross-prefix=PREFIX  // 为编译工具指定路径
--enable-cross-compile // 使能交叉编译
--extra-cflags=ECFLAGS // 指定额外的cflags
e.g:-I/xxx/xxx/include
--extra-ldflags=ELDFLAGS // 指定额外的ldflags
e.g:-L/xxx/xxx/lib
--extra-libs=-ldl
--disable-yasm    // 禁用yasm汇编程序
--enable-pthreads // 使能多线程,默认关闭

FFmpeg的交叉编译

  • 编译环境
    桌面环境:Ubuntu16.04
    交叉编译工具链:arm-linux-gnueabihf-gcc

  • 编译命令:

./configure --prefix=/grapeRain/grape_ffmpeg --disable-static --enable-shared --disable-x86asm --enable-gpl --enable-nonfree --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=arm-linux-gnueabihf- --cc=arm-linux-gnueabihf-gcc --enable-pthreads --enable-ffplay

出现的警告:

WARNING: The --disable-yasm option is only provided for compatibility and will be removed in the future. Use --enable-x86asm / --disable-x86asm instead.

也就是说,–disable-yasm选项在未来会被移除,使用–enable-x86asm/–disable-x86asm代替。

Ubuntu16.04下编译FFmpeg

执行如下配置命令:

./configure --prefix=/grapeRain/ubu_ffmpeg --enable-shared --disable-static --enable-ffplay

出现如下:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

看意思是nasm/yasm包不存在或者很旧,可以使用–disable-x86asm来进行一个不完美的编译。为了完美点,下载了yasm-1.3.0.tar.gz,然后执行如下命令:

tar -xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

然后继续执行配置命令:

./configure --prefix=/grapeRain/ubu_ffmpeg --enable-shared --disable-static --enable-ffplay
make -j4
make install

编译时成功的,但是在编译后的bin文件夹下没有生成ffplay程序,网上查询说是没有安装SDL库的原因,说是不安装SDL2是没有ffplay的,因为后期要移植到开发板上,不知道会不会需要这一部分。不过下载了SDL2-2.0.7.tar.gz编译试试:

./autogen.sh
./configure
make
sudo make install

据说这里还要安装一些库如:sudo apt-get install libsdl1.2-dev,不过我已经安装了,之后在生成的bin目录下,也有ffplay。
但是在运行ffmpeg等可执行程序时出现如下错误:

./ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory

也就是找不到(libavdevice.so.57)这个动态库。
使用find或者locate可以在/xxx/ubu_ffmpeg/lib中找到这个动态库,链接到/etc/ld.so.conf即可,具体过程:

sudo vi /etc/ld.so.conf.d/ffmpeg.conf # ffmpeg.conf是我自己建了的.conf文件
# 在conf文件中加入如下
/xxx/ubu_ffmpeg/lib 
# 最后执行
sudo ldconfig

这时候就可以成功使用生成的可执行文件了。不过Ubuntu16.04下自带ffmpeg,所以使用起来还是麻烦一些!

总结

2018/1/26,因为目前FFmpeg只是在Ubuntu下进行了测试而已!没有在开发板上测试,所以对于交叉编译后的库是否可以在开发板上实现和主机相同的效果还未可知,暂时先这样吧!

参考链接

ffmpeg编译选项汇总
Linux下ffmpeg的完整安装
linux下ffmpeg安装


  1. 码率一般指比特率。比特率是指每秒传送的比特(bit)数。单位为bps(Bit Per Second),比特率越高,传送数据速度越快。在数字多媒体领域,比特率是单位时间播放连续的媒体如压缩后的音频或视频的比特数量。在这个意义上讲,它相当于术语数字带宽消耗量或吞吐量。 ↩
ARM架构FFmpeg极致优化交叉编译指南 这是一个优秀的ARM交叉编译基础方案,针对生产环境建议:根据具体芯片型号细化-mcpu和-mfpu参数,添加安全加固编译选项,对于Android/iOS等移动平台需添加额外参数,考虑LTO链接时优化(需工具链支持) 阅读详情

相关推荐

Ubuntu 16.04下交叉编译android Ffmpeg库,支持neon加速和硬解码。

环境 1.Ubuntu 16.04(windows上安装的虚拟机) 2.NDK版本,android-ndk-r14b 下载Ffmpeg源码 这里提供ffmpeg官网下载地址http://ffmpeg.org/download.html。可以直接下载压缩包解压或者直接用git下载,我目前下载的是ffmpeg3.4版本。 git下载命令为:git clone https://git.ffm...

u011866128的博客 1717

嵌入式linux下的FFmpeg交叉编译(最全面)

fmpeg的常用编译参数如下:- --enable-shared:启用共享库的编译,生成.so文件,可以被其他程序调用。- --enable-static:启用静态库的编译,生成.a文件,可以被其他程序静态链接。- --enable-gpl:启用GPL许可证的代码。- --enable-version3:启用LGPLv3许可证的代码。- --enable-libx264:启用x264编解码器。- --enable-libx265:启用x265编解码器。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 1万+

Android ffmpeg ubuntu16.04下订制化的交叉编译

Android ffmpeg ubuntu16.04下订制编译 知识准备 ffmpeg是个重量级的音视频相关库,在编译ffmpeg之前需要对ffmpeg各部分的功能有所了解,这样才能订制化的编译出自己需要的so,你也不想编译出来的so加起来10M多吧 libavcodec 包含全部FFmpeg音频/视频编解码库。 libavformat:实现了流媒体协议(udp、rtp、rt...

yangyasong的博客 693

Ffmpeg7.1.1编译环境搭建 | Android Ndk

Ffmpeg交叉编译

itTalmud的博客 2639

RK1808交叉编译opencv with ffmpeg(解决FFMPEG始终为NO)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 RK1808交叉编译opencv with ffmpeg环境与源码包一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 环境与源码包 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具

jbjhzstsl的博客 6592

i.MX6 交叉编译zlib、yasm、xvidcore、libpng、x264、jpegsrc、ffmpeg

环境: PC操作系统:Ubuntu 16.04 LTS OpenCV 3.4.1 编译器:arm-poky-linux-gnueabi-gcc 4.9.1 CMake版本:3.13.2 编译的依赖库: zlib-1.2.11, http://www.zlib.net/zlib-1.2.11.tar.gz yasm-1.3.0, http://www.tortall.net/projects/...

hrx-@@ 1326

ffmpeg交叉编译

1.依赖libx264 1)下载libx264源码 2)./configure --enable-static --enable-shared --disable-asm --prefix=/home/chens/work/env/x264/output --host=arm-linux 如果报错:endian test failed,换台电脑或虚拟机,环境的问题,不知道什么原因 3)按下图修改config.mak文件,注意:AR=arm-hisiv300-linux-ar rc rc后面一定要有空格

chengcheng1024的博客 5273

系统动力学仿真软件Vensim下载

Vensim是由美国Ventana Systems, Inc.所开发,是采用图示化编程的方式构建系统动力学模型,上手简单。Vensim有很多系列产品,其中Vensim PLE (Personal Learning Edition)是面向个人学习者的,完全免费,可直接官网下载,截止于2022/04/10,最新的Vensim PLE版本是9.2.3。

PMIIᶜᶜ的博客 1万+

linux 交叉编译ffplay,Ubuntu 16.04下交叉编译FFmpeg

环境:Ubuntu 16.04交叉编译器版本:4.8.3依赖x264,lamex264:1.wget ftp://ftp.videolan.org/pub/x264/snapshots/last_stable_x264.tar.bz22.tar xvf last_stable_x264.tar.bz23.cd x264-snapshot-20170903-2245-stable4.export C...

weixin_29188759的博客 311

Android Geckoview实战:5分钟搞定JS与原生交互(附完整Demo代码)

本文详细介绍了在Android应用中使用GeckoView替代系统WebView,构建稳定高效的JavaScript与原生代码交互桥梁的实战方法。通过WebExtension架构,文章提供了从环境配置、扩展开发到Android端集成的完整步骤,并附有可运行的Demo代码,帮助开发者快速解决混合应用中的兼容性问题。

u5v6w7的博客 936

CAPL自动化测试

通过本文的学习,读者应该对CAPL自动化测试有了初步的了解,并能够编写复杂的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1528

ubuntu下交叉编译ffmpeg

原文:https://www.cnblogs.com/dakewei/p/7476608.html 环境:ubuntu16.04 交叉编译器版本:4.8.3 依赖x264,lame x264: 1.wget ftp://ftp.videolan.org/pub/x264/snapshots/last_stable_x264.tar.bz2 2.tar xvf last_stable_x...

qq_37990044的博客 940

ADES1831和ADBMS6830

1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。

m0_61973119的博客 267

Opencv3.4+FFMpeg3.4+pkg-config交叉编译arm开发板

则配置FFmpeg正确。

zengsenhua的博客 858

Python实现商品价格监控与波动分析爬虫项目

本文通过完整的代码示例和详细的技术讲解,展示了如何实现商品价格的自动监控和波动分析。该项目不仅适用于个人购物助手,还可以扩展为商家的竞品监控工具。通过结合数据抓取、存储、分析与可视化,能够帮助我们更好地理解市场趋势并做出优化决策。

2201_76125261的博客 1743

YOLOv11改进策略【独家融合改进】| MobileNetV4+BiFPN,轻松实现降参涨点,适用专栏内所有的骨干替换

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 2362

基于FFMpeg实现音频mp3/aac/wav解码

基于ffmpeg,实现音频解码,将mp3/aac/wav解码成pcm。

LiaoJunXiong的博客 4149

Android SystemUI——初始化流程(三)

1、Android 系统在启动之后,首先会Zygote进程,Zygote进程又会进一步启动 SystemServer进程,它会启动各种系统所需要的服务,在监听AMS启动完毕之后,还会启动SystemUIService。2、在启动SystemUIService服务之前,系统首先会创建SystemUI对应的进程,获取SystemUIAppComponentFactory实例对象,调用instantiateApplicationCompat创建SystemUIApplication实例对象并设置回调方法。

小旭的专栏 1159

opencv交叉编译环境搭建-aarch64

#背景 要将交叉编译应用到64位arm端(rockchip)运行,应用使用到opencv #版本 PC虚拟机: ubuntu16.04 opencv: 3.4.4 交叉编译器: aarch64-linux-gnu 5.4.0 相关依赖: zlib-1.2.11 jpegsrc.v9b libpng-1.6.36 yasm-1.3.0 x264-snapshot xvidco...

小林码事 9351

Google antigravity 不支持你所在地区?手把手教你把账号改成支持地区

Google antigravity功能火爆,但国内老账号根本用不了🤬本文分享几种有效的账号国家地区切换方法,最快几分钟就能让antigravity直接亮起🔥

XiaoqiangClub的博客 2万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android h264硬解码库 ffmpeg,Ubuntu 16.04下交叉编译android Ffmpeg库,支持neon加速和硬解码。...

环境1.Ubuntu 16.04(windows上安装的虚拟机)2.NDK版本,android-ndk-r14b下载Ffmpeg源码这里提供ffmpeg官网下载地址http://ffmpeg.org/download.html。可以直接下载压缩包解压或者直接用git下载,我目前下载的是ffmpeg3.4版本。git下载命令为:git clone https://git.ffmpeg.org/ff...

weixin_30231153的博客 611

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

tiny4412 移植ffmpeg 不适用命令行,使用C代码方式压缩视频

1.ubuntu 16.04 编译x264 2.ubuntu 16.04 编译ffmpeg 3.测试ffmpeg 4.移植文件到目标板 5.移植文件到交叉工具链里 6成功编译

Aexisun的博客 1041

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

交叉编译ffmpeg+移植Hi3536板子

其中extra-cflags 后面是x264编译过后的include目录路径。extra-ldflags后面跟的是x264编译过后的lib目录路径。cross-prefix= 后面跟的是交叉编译器的安装路径。交叉编译器:arm-hisiv300-linux-gcc。其中prefix= 后面跟的是x264的安装路径。我所用的编译环境 Ubuntu16.04。首先我们要安装先x264。

weixin_54721423的博客 760

Hi3531D调试手记(一):Linux开发环境搭建

Ubuntu系统版本:Ubuntu 16.04.7 LTS 一、安装交叉编译工具   店家给的资料中只有 arm-hisiv5x0-linux 这一种,莫得选择。 进入到工具链的目录下解压: tar -xvf arm-hisiv500-linux.tar.bz2 检查一下安装工具的可执行权限: ls -l 如果安装工具无可执行权限,则需修改权限: chmod 775 arm-hisiv500-linux.install 之后就可以直接安装了: sudo ./arm-hisiv500-

qq_38940316的博客 1703

平台编译之一:OpenCV 加FFmpeg等插件在zynq平台上的交叉编译

一:准备工作 项目 版本号 链接 操作系统 Ubuntu 16.04   OpenCV 2.4.13  3.2.0 opencv-2.4.13.zip FFmpeg 3.1.4 ffmpeg-3.1.4.tar.bz2 x264 20161020 x264-snapshot-20161019-2245-stable.

紫侠的天空 2284

史上最全的基于ffmpeg+sdl网络摄像头编解码播放资料(包含交叉编译过程,附带完整源码)

原创博文,严禁私自转载,转载请注明出处!!! 近期,由于工作需要,要在开发板上跑一个摄像头,摄像头款式比较老,不支持rtsp格式,所以选择编译ffmpeg+sdl实现软解码播放摄像头,特此记录整个编译过程(非常之艰辛,发文留念) 在ubuntu上交叉编译环境的搭建:因为开发板上搭建的程序的运行环境和用于编译的PC上的编译环境要匹配,所以要看好自己的需要,交叉编译工具链有好几种,最常见的arm-...

weixin_42550424的博客 1184
上一篇: opencv相似图片搜索
下一篇: Qt小程序(七)——获取文件夹和文件路径
simonXi-tech
博客等级 码龄10年 398粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值