compile ffmpeg for armv7 armv7s[通俗易懂]

1.下载ffmpeggitclonegit://source.ffmpeg.org/ffmpeg.gitffmpeg2.下载gas-preprocessor地址: https://github.com/yuvi/gas-preprocessor下载完后把gas-preprocessor.pl复制到/usr/bin/目录下,修改权限 chmod7773.解压ffm

大家好,又见面了,我是你们的朋友全栈君。

1.下载ffmpeg

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

2.下载gas-preprocessor

地址: https://github.com/yuvi/gas-preprocessor

下载完后把gas-preprocessor.pl 复制到 /usr/bin/ 目录下,修改权限  chmod 777

3.解压ffmpeg,并进入ffmpeg文件夹:

a.编译armv7

./configure –cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc –as=’/usr/bin/gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc’ –sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk –extra-ldflags=-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system –target-os=darwin –arch=arm –cpu=cortex-a8 –extra-cflags=’-arch armv7′ –extra-ldflags=’-arch armv7′ –extra-cflags=’-mfpu=neon’ –extra-cflags=’-mfloat-abi=softfp’ –enable-pic –enable-cross-compile –enable-ffmpeg  –enable-decoder=h264 –disable-doc

b.编译完后,make , sudo make install

c.可以在/usr/local/目录下看到lib inlucde文件夹都有新增文件,将/usr/local/lib/下的.a文件复制到随便新建一个文件夹,命名文件夹armv7


4.编译armv7s

a. ./configure –disable-doc –disable-ffmpeg –disable-ffplay –disable-ffserver –enable-cross-compile –arch=arm –target-os=darwin –cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc –as=’gas-preprocessor/gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc’ –sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk –cpu=cortex-a8 –extra-cflags=’-arch armv7s’ –extra-ldflags=’-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk’ –enable-pic –enable-decoder=rawvideo –disable-asm

b.编译完后,make , sudo make install

c.可以在/usr/local/目录下看到lib inlucde文件夹都有新增文件,将/usr/local/lib/下的.a文件复制到随便新建一个文件夹,命名文件夹armv7s


5.合并两个版本

a.去掉重复的log2_tab.o

ar -dv armv7s/libavutil.a log2_tab.o

ar -dv armv7/libavutil.a log2_tab.o

ar -dv armv7s/libswresample.a log2_tab.o

ar -dv armv7/libswresample.a log2_tab.o

ar -dv armv7s/libavformat.a log2_tab.o

ar -dv armv7/libavformat.a log2_tab.o

b.合并

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libavcodec.a -arch armv7s armv7s/libavcodec.a -output libavcodec.a

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libavdevice.a -arch armv7s armv7s/libavdevice.a -output libavdevice.a

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libavfilter.a -arch armv7s armv7s/libavfilter.a -output libavfilter.a

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libavformat.a -arch armv7s armv7s/libavformat.a -output libavformat.a

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libavutil.a -arch armv7s armv7s/libavutil.a -output libavutil.a

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libswresample.a -arch armv7s armv7s/libswresample.a -output libswresample.a

xcrun -sdk iphoneos lipo -create -arch armv7 armv7/libswscale.a -arch armv7s armv7s/libswscale.a -output libswscale.a

6.添加到xcode

新建文件夹ffmpeg,将合并后的.a文件和/usr/local/include/*的文件复制到ffmpeg夹下,把ffmpeg复制到工程下,并add

7.在工程的build phase引入libz.dylib和libbz2.dylib两个库

8.在Build Settings, 搜索header search paths, 加上ffmpeg

编译运行。。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127466.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 二叉树层次遍历算法——C/C++

    二叉树层次遍历算法——C/C++二叉树层序遍历1、算法思想用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。在进行层次遍历的时候,设置一个队列结构,遍历从二叉树的根节点开始,首先将根节点指针入队列,然后从队头取出一个元素,每取一个元素,执行下面两个操作:访问该元素所指向的节点若该元素所指节点的左右孩子节点非空,则将该元素所指节点的左孩子指针和右孩子指针顺序入队。此过程不断进行,当队列为空时,二叉树的层次遍历结束…

    2022年6月5日
    28
  • pyqt5开发的漂亮界面_pyqt5美化包

    pyqt5开发的漂亮界面_pyqt5美化包今天闲来无事,用python写了一个抽奖程序pyqt版本:pyqt5python版本:3.6.6下面直接上代码,有建议的话,欢迎大家交流评论!#-*-coding:utf-8-*-#Formimplementationgeneratedfromreadinguifile’Lucky_draw.ui’##Createdby:PyQt5UIcodegenerator5.15.1##WARNING:Anymanualchangesmadeto

    2022年8月31日
    3
  • 微信地位,牢不可破?

    微信地位,牢不可破?作者|李楠本文经授权转自新浪科技QQ与微信接连称霸社交赛道20年后,新的临界点似乎已经到来。回看2019的社交市场,新产品持续推出。截至目前,阿里巴巴、字节跳动、百度、京东、网易、搜狐等新老巨头纷纷入局,映客8500万美元收购积目引起热议,以“灵魂”做标签的Soul崭露头角。有专家向新浪科技表示,00后群体正在崛起,其对社交网络的需求有所差别,这群主力军不一定热衷于微…

    2022年5月14日
    37
  • kubectl ingress_kubernetes ingress

    kubectl ingress_kubernetes ingressKubernates之ingress方式部署springboot

    2022年4月22日
    68
  • 关于Vue使用es6模板字符串没反应的问题「建议收藏」

    关于Vue使用es6模板字符串没反应的问题「建议收藏」错误示范VScode发get请求的地址及参数使用单引号”包裹时,发现${this.keyWord}没有变颜色,跟字符串一个颜色,也就是没有将this.keyWord识别成变量,当成了一般字符串,发请求时带的参数问题请求不到结果search(){ this.$axios.get(‘https://api.github.com/search/users?q=${this.keyWord}’).then( res=>{ console.log(res); }, err=&gt

    2022年8月21日
    20
  • 请简述list,set,map类型的集合的各自特点(简述三种不同的继承方式下)

    1.集合类型主要有3种:set(集)、list(列表)和map(映射)。2.三者关系3.Setset接口时Collection接口的一个子接口,是无序的,set中不包含重复的元素,也就是说set中不存在两个这样的元素a1.equals(a2)结果为true。又因为Set接口提供的数据结构是数学意义上的集合概念的抽象,因此他支持对象的添加和删除。Set的接口继承Collectio…

    2022年4月13日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号