- 浏览: 116119 次
- 性别:
- 来自: 成都
文章分类
1.建立一个安卓工程,创建jni目录,将上一篇文章中的库和头文件拷贝到jni目录中,并创建Android.mk文件.并创建一个main.c
2.工程目录如下图
3.main.c文件内容
4.Android.mk内容
LOCAL_PATH := $(callmy-dir)
MY_PATH := /home/kangxian/FFMPEG/ffmpeg_android/testFFMPEG/app/jni
MY_INCLUDE_PATH := /home/kangxian/FFMPEG/ffmpeg_android/testFFMPEG/app/jni/prebuilt
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
$(warning $(MY_PATH))
include $(CLEAR_VARS)
LOCAL_MODULE := avcodec-57-prebuilt
LOCAL_SRC_FILES := $(MY_PATH)/prebuilt/libavcodec-57.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=avdevice-57-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavdevice-57.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=avfilter-6-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavfilter-6.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=avformat-57-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavformat-57.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := avutil-55-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavutil-55.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := avswresample-2-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libswresample-2.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := swscale-4-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libswscale-4.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=kx_ffmpeg
LOCAL_SRC_FILES := $(MY_PATH)/main.c
LOCAL_C_INCLUDES := $(MY_INCLUDE_PATH)
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid -L/home/kangxian/NDK/android-ndk-r10/platforms/android-9/arch-arm/usr/lib
LOCAL_SHARED_LIBRARIES:= avcodec-57-prebuilt avdevice-57-prebuilt avfilter-6-prebuilt avformat-57-prebuilt avutil-55-prebuilt
include $(BUILD_SHARED_LIBRARY)
5.切换到jni目录,执行ndk-build,如果没有错误,则会在libs目录下生成7个so库,如下图:
6.安卓可用的jni库就编译完成了,将7个库拷贝到安卓工程试试,如果这个jni函数返回0,证明我们编译的ffmpeg库是可用的。
7.建立和jni函数保持一致的包名和类名,如下图
8.FFMPEGInterface.java的内容
2.工程目录如下图
3.main.c文件内容
#include <string.h> #include <jni.h> #include <dlfcn.h> #include <android/log.h> #include "libavcodec/avcodec.h" #define TAG "kx_ffmpeg" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) jint Java_com_kk_xx_ffmpeg_FFMPEGInterface_test(JNIEnv *env, jobject obj, jint codecID) { AVCodec *codec = NULL; /*register all formats and codecs */ av_register_all(); codec= avcodec_find_decoder(codecID); if(codec != NULL) { return 0; } else { return -1; } }
4.Android.mk内容
LOCAL_PATH := $(callmy-dir)
MY_PATH := /home/kangxian/FFMPEG/ffmpeg_android/testFFMPEG/app/jni
MY_INCLUDE_PATH := /home/kangxian/FFMPEG/ffmpeg_android/testFFMPEG/app/jni/prebuilt
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
$(warning $(MY_PATH))
include $(CLEAR_VARS)
LOCAL_MODULE := avcodec-57-prebuilt
LOCAL_SRC_FILES := $(MY_PATH)/prebuilt/libavcodec-57.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=avdevice-57-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavdevice-57.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=avfilter-6-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavfilter-6.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=avformat-57-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavformat-57.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := avutil-55-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libavutil-55.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := avswresample-2-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libswresample-2.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := swscale-4-prebuilt
LOCAL_SRC_FILES :=$(MY_PATH)/prebuilt/libswscale-4.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE :=kx_ffmpeg
LOCAL_SRC_FILES := $(MY_PATH)/main.c
LOCAL_C_INCLUDES := $(MY_INCLUDE_PATH)
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid -L/home/kangxian/NDK/android-ndk-r10/platforms/android-9/arch-arm/usr/lib
LOCAL_SHARED_LIBRARIES:= avcodec-57-prebuilt avdevice-57-prebuilt avfilter-6-prebuilt avformat-57-prebuilt avutil-55-prebuilt
include $(BUILD_SHARED_LIBRARY)
5.切换到jni目录,执行ndk-build,如果没有错误,则会在libs目录下生成7个so库,如下图:
6.安卓可用的jni库就编译完成了,将7个库拷贝到安卓工程试试,如果这个jni函数返回0,证明我们编译的ffmpeg库是可用的。
7.建立和jni函数保持一致的包名和类名,如下图
8.FFMPEGInterface.java的内容
package com.kk.xx.ffmpeg; /** * Created by Administrator on 2017/3/14. */ public class FFMPEGInterface { static{ System.loadLibrary("avutil-55"); System.loadLibrary("avcodec-57"); System.loadLibrary("swresample-2"); System.loadLibrary("avformat-57"); System.loadLibrary("swscale-4"); System.loadLibrary("avfilter-6"); System.loadLibrary("avdevice-57"); System.loadLibrary("kx_ffmpeg"); } public static native int test(int codecID); }
发表评论
-
ubuntu16 OpenGrok配置多项目
2019-03-29 14:26 1122以前的博客介绍过OpenGrok配置一个项目,这里介绍下 ... -
android adb shell su设置密码
2019-03-26 14:02 22931.打开su源码在system/extras/su/su. ... -
make日志同时输出到控制台和文件
2019-03-22 10:23 11810 标准输入 stdin = standard in ... -
增加自定义property目录
2019-03-18 10:04 337打开文件system/core/init/property ... -
recovery增加打印到串口和增加复制代码
2019-03-07 09:49 585项目里需要调试recover,网上查了部分资料,增加了 ... -
android adb shell命令启动应用
2019-03-01 13:33 13001.执行adb shell 2.这里以打开设置为例: ... -
android HAL层例子
2019-02-27 11:15 1147上一篇文章已经写了led驱动,这篇文章我们再封装HAL层 ... -
FireFlay开发板点亮LED驱动开发
2019-02-22 11:09 482实现功能,点亮LED,参考了网上部分代码。 1.在目 ... -
RK3288 默认打开adb调试
2019-02-19 14:03 2017在文件:vendor/rockchip/firefly/us ... -
RK3288 修改开机动画和开机图片
2019-02-18 11:25 1725开机动画: 1.创建一个目录frameworks/ba ... -
android系统修改默认语言为中文
2019-02-18 11:19 840修改 build/target/product/full_b ... -
ubuntu OpenGrok的搭建
2019-02-18 11:15 951下载apache-tomcat-8.5.37和opengro ... -
gradleview错误定位
2019-01-08 14:39 3421、打开cmd,进入项目的gradle所在目录 2、键入gra ... -
安卓系统签名转keystore
2017-11-23 10:53 1188./keytool-importkeypair -k ./de ... -
抓jni日志
2017-11-16 14:29 337建一个sh文件,内容如下,将crash内容复制到crash.t ... -
FFMPEG android 库编译
2017-03-14 13:57 6021.首先下载ffmpeg源码:http://www.ffmpe ... -
Windows搭建OpenGrok
2014-12-08 11:33 16021.下载opengrok-0.11.1.tar.gz 二进制包 ... -
怎么给apk签名
2014-11-08 21:51 621jarsigner -verbose -keystore 证书 ... -
OpenGrok搜索技巧
2014-09-26 15:59 2733+ 表示包含此字符串,- 表示包含此字符串。例如在 Full ... -
自动生成dimen
2014-07-11 13:33 640package com.kang.makedimen; ...
相关推荐
Android ffmpeg .a .so库(ffmpeg 4.4.1)
这是一个android调用ffmpeg库获取ffmpeg版本的测试代码。可以参考一下。
其他说明:在网上没有找到android平台的FFmpeg库,就自己编译了一个,我用的事RTP拉流的功能,教程上说功能挺全的但是其他的功能没有使用过。本人的开发环境为:Qt For Android,感兴趣的朋友见链接:...
从Android 6.0开始,严格禁止text relocations , ffmpeg使用的许多源文件都使用text relocations因此,除非ffmpeg重写大型库并将其替换为替代text relocations否则ffmpeg将永远无法在未来的android构建中运行。...
Android 编译好的ffmpeg库
android平台使用的ffmpeg动态库,arm架构和armv7-aj架构及编译脚本,编译环境Ubuntu 18.04.1 LTS ,安卓ndk版本android-ndk-r12b
android平台arm64-v8a和armeabi-v7a的ffmpeg库和头文件
ndk25C编译的android下的ffmpeg6.0,集成v4l2视频采集和pulse音频采集
使用方法及文件详情请到这里查看:http://blog.csdn.net/m0_37677536/article/details/78561085
ffmpeg android 编译后可以直接使用的so库,很方便,不需要再编译。
嵌入式Android9.0平台FFMPEG动态库,欢迎大家下载使用!
FFMPEG Library for Android This project is a Java wrapper around an ffmpeg command line binary for use in Android applications. It depends on the android-ffmpeg project to provide the ffmpeg binary. ...
android端基于FFmpeg库的使用。 基于ffmpeg3.2.4版本,编译生成libffmpeg.so文件。 添加编译ffmpeg源码的参考脚本 目前音视频相关处理: - #### 音频剪切、拼接 - #### 音频混音 - #### 音频转码 -...
1.移植ffmpeg到android 2.通过JNI接口调用ffmpeg实现h264的解码以及渲染 3.h264渲染采用opengles技术 代码保护局ffmpeg源码 JNI部分 以及opengles渲染部分,还有上层demo APP程序,该程序可以直接安装,播放h264...
FFMPEG开发QTonAndroid的工程(QT5.12),附带FFMPEG库,可以直接编译到Android设备进行开发。 FFMPEG使用NDK_R19C编译。 这是一个简单的DEMO工程,可以直接使用QT打开,编译部署到Android设备运行。 注意: 这个工程...
android平台使用FFmpeg开源库 已编译完成的 .SO库文件(版本:4.1.3)
FFmpeg动静态库包含32+64位
可以用Android Studio软件将ffmpeg编译成APK程序,在安卓手机上运行,实现播放音视频,手机音视频直播,将MIC麦克风和摄像头采用RTMP方式推流,支持AAC格式(官方),已经支持了PCM格式推流(修改后版本)和MP3格式...
project,前者是一个android工程,后者是一个在linux下编译android中能用的ffmpeg工程,其中有ffmpeg源代码(该ffmpeg版本为0.7.15),H264Android.c源码和编译好的ffmpeg.so,H264Android.so2个库
用Android studio2.2.2编译ffmpeg库,使用最新的cmake配置c/c++或者.so库文件。