【音视频安卓开发 (零)】用 Android NDK 编译 FFmpeg 与 X264

下载相关构建和工具链

1.先下载NDK

Google Android

2.在Windows端下载使用msys2,msys2支持Linux

msys2

安装相关源,等待更新要很久.....慢慢等

pacman -S mingw-w64-x86_64-toolchain

然后执行以下命令安装

pacman -S base-devel

如果下载过慢或者不成功可以修改软件源

更新源

清华源

中科大源

修改mirrorlist.msys

利用UltraEdit或者类似工具打开这mirrorlist.msys文件。在最上面,注意是最上面增加

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

修改mirrorlist.mingw32

修改mirrorlist.mingw64

应用更新

重新运行D:\msys64\msys2.exe。然后再运行好的环境中输入下列命令,更新即可。现在真的是速度飞快。

pacman -Syu

安装汇编

pacman -S nasm

下载FFmpeg源码选择最新版

FFmpeg官方下载

将下载的源码放到msys的home文件目录下,并且创建一个脚本文件,如下

basepath=$(cd 'dirname $0';pwd)
echo ${basepath}cd ${basepath}/ffmpeg_4.3.1
lsANDROID_NDK_HOME=/c/NDK/21.3.6528147  NDK具体位置,需要和开发使用NDK版本一致
HOST=windows-x86_64  平台相关
ARCH=armv7a
ABI=21./configure \
--prefix=${basepath}/ffmpeg_install \  输出路径
--target-os=android \
--arch=arm \
--cc=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/${HOST}/bin/${ARCH}-linux-androideabi${ABI}-clang \
--cross-prefix=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/${HOST}/bin/arm-linux-androideabi- \
--enable-shared \
--enable-runtime-cpudetect \
--enable-gpl \
--enable-small \
--enable-cross-compile \ 允许交叉编译
--enable-asm \
--enable-neon \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-hwaccel=h264_mediacodec \
--disable-debug \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-postproc \
--disable-avdevice \
--disable-symver \
--disable-stripping make -j12
make install

X264编译脚本

basepath=$(cd 'dirname $0';pwd)
echo ${basepath}cd ${basepath}/x264-master
ls./configure --prefix=${basepath}/X264_instal --enable-static
make -j 12
make install

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

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

相关文章

jax-rs jax-ws_极端懒惰:使用Spring Boot开发JAX-RS服务

jax-rs jax-ws我认为可以公平地说,作为软件开发人员,我们一直在寻找编写更少的代码的方法,这些代码可以自动地或不能自动地完成更多的工作。 考虑到这一点,作为Spring产品组合的骄傲成员的Spring Boot项目中断了传统方法&#xff…

python内置类型_Python内置对象类型

核心数字类型:数字:int,long,float,complex,bool字符:str,unicode列表:list字典:dict元组:tuple文件:file其他类型:集合(s…

【Android OpenGL ES 开发 (零)】创建一个新的工程

创建符合要求的AndroidApp 使用Android Studio开发,Android Studio下载地址 1.先创建Native C 2.项目相关添加 3.使用C11标准 学习使用JNI为Java提供API 1.在cpp中定义相关接口,格式如下 2.外部调用这个API 把so改成自己想要的名字 1.需要在cmake文件…

java方法参数类型不确定_一个Java方法能有多少个参数类型?这个好奇coder做了个实验...

选自 justinblank机器之心编译参与:李志伟、张倩在 JVM 中,一个 Java 方法,最多能定义多少参数呢?这是一个很无聊的问题,即使能定义一万个,十万个,谁又会真的去这么做呢。但是作为一个 coder&am…

lagom的微服务框架_您的第一个Lagom服务– Java Microservices入门

lagom的微服务框架在撰写我的下一份OReilly报告时,我一直很沮丧,并且一段时间内没有足够的时间来撰写博客。 是时候赶快来这里,让您真正快速地开始使用名为Lagom的新微服务框架。 它与您从Java EE或其他应用程序框架中可能了解到的有所不同。…

【Android OpenGL ES 开发 (一)】使用c++开发opengles 与 日志功能 及 加载assets

创建OpenGLES视口 1.App窗口改成OpenGL窗口,是通过java调用C,在以下位置修改如下内容 package com.example.learnogles;import androidx.appcompat.app.AppCompatActivity;import android.content.Context; import android.opengl.GLSurfaceView; import android.o…

水印相机定位不准确怎么办_禄来的广角双反相机(2020版)

点击上方胶卷迷俱乐部快速关注,胶卷迷们坚实的阵地内容主要原创,配图来自群友和网络,所有水印保留最下方为微信自带广告,支持请点击(本号可获微量收入)4.0德国禄来公司以双反相机名震天下,其中的2.8,3.5两个…

【Android OpenGL ES 开发 (二)】渲染管线与Shader

计算出每一帧耗费的时间 1.在头文件中加入time.h,cpp中实现如下计算时间接口 float GetFrameTime(){static unsigned long long lastTime0,currentTime0;timeval current;gettimeofday(&current, nullptr);//取当前时间currentTime current.tv_sec * 1000 current.tv…

tibco汉化包6.3.0_TIBCO BusinessWorks 6和Container Edition与BW5的比较

tibco汉化包6.3.0[本文已于一段时间前发布在TIBCO博客上 。 我还在适当的地方添加了一些有关BusinessWorks Container Edition(BW CE)的信息 。 下面定义的大多数特征对于BW6和BW CE都是正确的] TIBCO ActiveMatrix BusinessWorks 6(BW6&…

python地图散点图_Python中基于Basemap的三维散点图

我正在尝试绘制一个三维散点图,图中是Python身上的烟羽,下面是北美的地图。我试过各种方法,但似乎都有缺点。我现在的代码是:fig plt.figure(figsize(22,4))ax Axes3D(fig)M Basemap(llcrnrlon-140,llcrnrlat10,urcrnrlon-40,u…

【Android OpenGL ES 开发 (三)】Shader 扩展

编译Shader代码 1.封装一个编译shader的接口 GLuint CompileShader(GLenum shaderType,const char *shaderCode){GLuint shaderglCreateShader(shaderType);glShaderSource(shader,1,&shaderCode,NULL);glCompileShader(shader);GLint compileResultGL_TRUE;glGetShaderi…

css阴影属性_第三场阴影场与属性访问器接口

css阴影属性这是“ 影子字段与属性访问器”界面的 第3轮 。 如果您是新手,但不确定要怎么做,请查看我以前的文章或关于开发JavaFX应用程序时节省内存的第一篇文章 。 作为Java开发人员,我主要关心的是在开发JavaFX域模型时在性能 &#xff0c…

js if判断多个条件_JS条件判断小技巧(一)

经常code review,我发现JS newbie很容易写出一堆冗长的代码。今天就列几个比较常见的“解决之道”,看看如何减少JS里的条件判断。提前返回,少用if...else“if...else是编程语言的精华。——鲁迅”但是过多的嵌套,还是挺令人抓狂的…

【Android OpenGL ES 开发 (四)】纹理相关(一)

纹理贴图的原理 1.作用:可以用来渲染视频。 2.纹理坐标 生成OpenGL中的纹理对象 1.像素数据想要绘制出来需要先变成纹理 2.创建纹理放在GPU上 GLuint CreateTexture2D(unsigned char *pixelData,int width,int height,GLenum type) {GLuint texture;glGenTextu…

python selenium循环判断元素是否存在_检查Python Selenium是否存在元素

我有一个问题-我正在使用Selenium(firefox)Web驱动程序打开网页,单击一些链接等,然后捕获屏幕截图。我的脚本可以从CLI正常运行,但是通过cronjob运行时,它并没有通过第一个find_element()测试。我需要添加一些调试,或一…

jmx 替代_使用JMX作为Ganglia的现代替代品进行CLDB监视

jmx 替代有许多选项可用于监视MapR集群的性能和运行状况。 在本文中,我将介绍使用Java管理扩展(JMX)监视CLDB的鲜为人知的方法。 据最受尊敬的MapR数据工程师之一,Akihiko Kusanagi称,与使用Ganglia相比,使…

WPScan安全建议和防护

加固WordPress安全性 保护WordPress网站的安全性至关重要,因为它是全球最受欢迎的内容管理系统之一,也是攻击者经常瞄准的目标。本文将深入探讨如何加固WordPress安全性,包括实施强密码策略、保持更新、使用可靠的主题和插件、限制登录尝试、…

red hat安装宝塔_如何在几分钟内安装Red Hat Container Development Kit(CDK)

red hat安装宝塔作为负责开发容器化应用程序提供的可能性的应用程序开发人员或架构师,将所有工具组合在一起以帮助您入门时几乎没有帮助。 到现在。 红帽容器开发套件(CDK) 安装变得简单! 红帽提供了一个容器开发套件&#xf…

python收集数据程序_用Python挖掘Twitter数据:数据采集

原标题:用Python挖掘Twitter数据:数据采集作者:Marco Bonzanini 翻译:数盟这是7部系列中的第1部分,注重挖掘Twitter数据以用于各种案例。这是第一篇文章,专注于数据采集,起到奠定基础的作用。Tw…