第18课 移植FFmpeg和openCV到Android环境

要在Android下从事音视频开发,同样也绕不开ffmpeg+opencv,不管是初学者还是有一定经验的程序,面临的首要问题就是环境的搭建和库文件的编译配置等问题,特别是初学者,往往会在实际开发前浪费大量的时间来编译ffmpeg及opencv的动态库.so文件。因此作者整理了自己实际开发用的ffmpeg及opencv库文件(ffmpeg已集成x264+aac+mp3编码),并集成到Eclipse开发环境中(JNI方式)实际运行成功后作为一个模板提供给大家,方便初学者快速上手进行实际开发,节省您大量宝贵时间。当然,Android SDK和NDK需要自己下载,然后在Eclipse中指定相应路径就可以了。

1.下载模板文件到本地磁盘并解压,解压后的路径如E:\jPro\demo\AndroidManifest.xml。

2.启动eclipse并导入该项目。

3.导入后如图所示:

4.用usb连接线把你的手机与电脑连接起来并允许在手机上调试项目。

5.右单击项目并选择调试为Android程序。

6.选中手机单击ok按钮会在手机上安装应用,安装成功后显示如下界面则表示成功。

然后你就可以在此基础上自由的开发了!

现在,让我们回过头来看下与jni有关的重要选项。

7./demo/jni/Android.mk:位于项目 jni子目录中,用于向构建系统描述源文件和共享库,可以在其中配置动态链接库.so,类似于vs2013中加载.dll,在该项目中,其内容如下:

LOCAL_PATH := $(call my-dir)#ffmpeg lib
include $(CLEAR_VARS)
LOCAL_MODULE := avcodec
LOCAL_SRC_FILES := lib/libavcodec.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := avdevice
LOCAL_SRC_FILES := lib/libavdevice.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := avfilter
LOCAL_SRC_FILES := lib/libavfilter.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := avformat
LOCAL_SRC_FILES := lib/libavformat.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := avutil
LOCAL_SRC_FILES := lib/libavutil.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := postproc
LOCAL_SRC_FILES := lib/libpostproc.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := swresample
LOCAL_SRC_FILES := lib/libswresample.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := swscale
LOCAL_SRC_FILES := lib/libswscale.so
include $(PREBUILT_SHARED_LIBRARY)#x264 lib
include $(CLEAR_VARS)
LOCAL_MODULE := libx264
LOCAL_SRC_FILES := lib/libx264.161.so
include $(PREBUILT_SHARED_LIBRARY)#opencv lib
include $(CLEAR_VARS)
LOCAL_MODULE := opencv
LOCAL_SRC_FILES :=lib/libopencv_java3.so
include $(PREBUILT_SHARED_LIBRARY)#demo
include $(CLEAR_VARS)
LOCAL_MODULE    := demo
LOCAL_SRC_FILES := demo.cppLOCAL_C_INCLUDES += $(LOCAL_PATH)/include
##-landroid for native windows
LOCAL_LDLIBS := -llog -landroid 
#LOCAL_LDLIBS := -llog -lz 
LOCAL_SHARED_LIBRARIES :=opencv libx264 avcodec avdevice avfilter avformat avutil postproc swresample swscaleinclude $(BUILD_SHARED_LIBRARY)

8./demo/jni/Application.mk:位于应用项目目录中的 jni下,用于指定 ndk-build 的项目级设置。

APP_ABI := armeabi-v7a
APP_STL:=gnustl_static  
APP_CPPFLAGS:=-frtti -fexceptions  

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

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

相关文章

nvm管理多版本Node.js

nvm管理多版本Node.js 可能大家都曾苦恼于Node环境问题,某个项目需要升版本,某项目又需要降,甚至还出现npm版本与Node对不上的情况。 通过nvm进行版本管理,即可解决。 卸载Node 通过命令行输入node -v命令查看是否已安装Node&…

认知觉醒(九)

认知觉醒(九) 专注力——情绪和智慧的交叉地带 第一节 情绪专注:一招提振你的注意力 用元认知来观察自己的注意力是一件很有意思的事情,相信你可以轻易观察到这种现象:身体做着A,脑子却想着B。 跑步的时候,手脚在…

10.9.2 std::function 存储函数对象 Page184

41行,pending只是inc的复制品,所以43,44行,不会改变inc()的值 demo_function2()的运行结果: 59行,pending是inc的引用,所以61,62行将会改变inc()的值

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C)) Baumer工业相机Baumer工业相机的图像高速保存的技术背景Baumer工业相机通过NEOAPI SDK函数图像高速保存在NEOAPI SDK里实现线程高速图像保存:工业相机高…

Vue-13、Vue绑定css样式

1、绑定css样式字符串写法&#xff0c;适用于&#xff1a;样式的类名不确定 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>绑定css样式</title><!--引入vue--><script type"tex…

2024三掌柜赠书活动第三期:Rust系统编程

目录 前言 Rust语言概念 关于《Rust系统编程》 Rust系统编程的核心点 Rust系统编程的关键技术和工具 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《Rust系统编程》全书速览 结束语 前言 在技术圈&#xff0c;最近的编程语言新秀当属Rust莫属&#xff0c;R…

Java Swing 图书借阅系统 窗体项目 期末课程设计 窗体设计

视频教程&#xff1a; 【课程设计】图书借阅系统 功能描述&#xff1a; 图书管理系统有三个角色&#xff0c;系统管理员、图书管理员、借阅者&#xff1b; 系统管理员可以添加借阅用户&#xff1b; ​图书管理员可以添加图书&#xff0c;操作图书借阅和归还&#xff1b; 借…

希尔排序和计数排序

&#x1f4d1;前言 本文主要是【排序】——希尔排序、计数排序的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句…

ElasticSearch(1):Elastic Stack简介

1 简介 ELK是一个免费开源的日志分析架构技术栈总称&#xff0c;官网https://www.elastic.co/cn。包含三大基础组件&#xff0c;分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析&#xff0c;它还可以支持其它任何数据搜索、分析和收集的场景&#xf…

linux创建文件夹命令

我们可以使用mkdir命令在 Linux 或类似 Unix 的操作系统中创建新目录或文件夹。本文将介绍如何在 Linux 或 Unix 系统中创建文件夹&#xff08;也称为“目录”&#xff09;。 操作步骤如下&#xff1a;1.在 Linux 中打开终端应用程序。2.输入mkdir命令。3.输入文件夹名称。 m…

Unity与Android交互通信系列(4)

上篇文章我们实现了模块化调用&#xff0c;运用了模块化设计思想和简化了调用流程&#xff0c;本篇文章讲述UnityPlayerActivity类的继承和使用。 在一些深度交互场合&#xff0c;比如Activity切换、程序启动预处理等&#xff0c;这时可能会需要继承Application和UnityPlayerAc…

服务器 conda update 失败解决方法

1. 强制 conda update 租借一台服务器&#xff0c;发现 conda 版本是4.10.3&#xff0c;需要升级&#xff0c;使用了如下命令都没有效果&#xff0c;仍然是一样的版本 conda update conda update --all conda update -n base -c defaults conda最后强制用conda-forge通道更新…

Python3.10安装教程

Python3.10安装 Python的安装按照下面几步进行即可&#xff0c;比较简单。 下载Python安装文件&#xff0c;打开Python的下载页面&#xff0c;我这里选择安装的版本是3.10.11&#xff0c;根据自己电脑版本选择对应安装包 安装包下载完毕后&#xff0c;按照步骤开始安装。选择…

[GN] 微服务开发框架 --- Docker的应用 (24.1.9)

文章目录 前言Docekr镜像命令 Docekr镜像命令容器操作创建容器查看容器日志查看容器状态进入容器 数据卷数据集操作命令给nginx挂载数据卷给MySQL挂载本地目录 Dockerfile自定义镜像镜像结构 使用Dockerfile构建Java项目基于Ubuntu构建Java项目基于java8构建Java项目 Docker-Co…

SQLServer设置端口,并设置SQLServer和SQLServer Browser服务

SQLServer默认使用动态端口&#xff0c;即每次启动sqlserver.exe时&#xff0c;端口port都会动态变化。若要使用静态端口&#xff0c;比如port1433&#xff0c;则需要在SQL Server Configuration Manager(简称SSMS&#xff09;里配置。这里以SQL Server 2005 Configuration Man…

按键精灵调用奥迦插件实现图色字识别模拟键鼠操作源码

奥迦插件于2019年9月开始开发,在Windows 10操作系统上使用Visual Studio 2019编写,适用于所有较新的Windows平台,是一款集网络验证,深度学习,内核,视觉,文字,图色,后台,键鼠,窗口,内存,汇编,进程,文件,网络,系统,算法及其它功能于一身的综合插件 插件使用C语言和COM技术编写,是…

室内定位相关中文期刊/学报笔记

这里写目录标题 文章最重要的部分通信学报1. 2023 基于扩散模型的室内定位射频指纹数据增强方法2. 2023 基于 CHAN 的改进卡尔曼滤波室内定位算法3. 2022 基于自适应蝙蝠算法的室内 RFID 定位算法4. 2017 基于核函数特征提取的室内定位算法研究5. 2021 基于CSI张量分解的室内Wi…

【JaveWeb教程】(8)Web前端基础:Vue组件库Element之Table表格组件和Pagination分页组件 详细示例介绍

目录 1 Table表格组件1.1 组件演示1.2 组件属性详解 2 Pagination分页2.1 组件演示2.2 组件属性详解2.3 组件事件详解 接下来我们来学习一下ElementUI的常用组件&#xff0c;对于组件的学习比较简单&#xff0c;我们只需要参考官方提供的代码&#xff0c;然后复制粘贴即可。本节…

c++学习:STL库(框架)+字符串模板类string+vector容器+list链表

目录 stl库 常用组件包括 字符串库 字符串模板类string 头文件 最常用的字符串模板类 字符串类型 模板原型 模板的成员数据类型 模板成员函数 有些函数会有重载&#xff0c;可以去下面网址查看std::basic_string - cppreference.comhttps://zh.cppreference.com/w/cp…