ffmpeg 解码库在android中的使用

本文详细介绍了如何在Android项目中集成并使用ffmpeg解码库,包括头文件和so库的拷贝、Android.mk文件的配置、Java层接口的创建以及解码过程的实现,提供了一个完整的ffmpeg解码库JNI实现方法。
摘要由CSDN通过智能技术生成
[java]  view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">前面有博客讲到linux下编译ffmpeg</span>  

那么编译完成之后应该怎么使用呢?

在参考了ffmpeg解码文件的demo这里给出一个解码的so库JNI实现方法

在编译完成ffmpeg的源码后,新建一个工程如下图目录结构



在ffmpeg编译后的源码中include文件夹中拷贝上述头文件,然后将编译出的so库拷贝至prebuilt文件夹

新建Android.mk

内容如下:

[java]  view plain copy
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4. LOCAL_MODULE :=  avutil-54-prebuilt  
  5. LOCAL_SRC_FILES := prebuilt/libavutil-54.so  
  6. include $(PREBUILT_SHARED_LIBRARY)  
  7.   
  8. include $(CLEAR_VARS)  
  9. LOCAL_MODULE :=  avswresample-1-prebuilt  
  10. LOCAL_SRC_FILES := prebuilt/libswresample-1.so  
  11. include $(PREBUILT_SHARED_LIBRARY)  
  12.   
  13. include $(CLEAR_VARS)  
  14. LOCAL_MODULE :=  swscale-3-prebuilt  
  15. LOCAL_SRC_FILES := prebuilt/libswscale-3.so  
  16. include $(PREBUILT_SHARED_LIBRARY)  
  17.   
  18. include $(CLEAR_VARS)  
  19. LOCAL_MODULE := avcodec-56-prebuilt  
  20. LOCAL_SRC_FILES := prebuilt/libavcodec-56.so  
  21. include $(PREBUILT_SHARED_LIBRARY)  
  22.   
  23. #include $(CLEAR_VARS)  
  24. #LOCAL_MODULE := avdevice-56-prebuilt  
  25. #LOCAL_SRC_FILES := prebuilt/libavdevice-56.so  
  26. #include $(PREBUILT_SHARED_LIBRARY)  
  27.   
  28. include $(CLEAR_VARS)  
  29. LOCAL_MODULE := avformat-56-prebuilt  
  30. LOCAL_SRC_FILES := prebuilt/libavformat-56.so  
  31. include $(PREBUILT_SHARED_LIBRARY)  
  32.   
  33. include $(CLEAR_VARS)  
  34. LOCAL_MODULE := avfilter-5-prebuilt  
  35. LOCAL_SRC_FILES := prebuilt/libavfilter-5.so  
  36. include $(PREBUILT_SHARED_LIBRARY)  
  37.   
  38. include $(CLEAR_VARS)  
  39.   
  40. LOCAL_MODULE := libffmpegutil  
  41. LOCAL_SRC_FILES := FFmpeg.c  
  42. LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid -lm -pthread  
  43. LOCAL_SHARED_LIBRARIES := avcodec-56-prebuilt avdevice-56-prebuilt avfilter-5-prebuilt avformat-56-prebuilt avutil-54-prebuilt avswresample-1-prebuilt swscale-3-prebuilt  
  44.    
  45. include $(BUILD_SHARED_LIBRARY)  

新建Application.mk 内容:

[java]  view plain copy
  1. APP_ABI := armeabi-v7a  
  2. APP_PLATFORM := android-9  


新建接口FFmpeg.java :

[java]  view plain copy
  1. package com.android;  
  2.   
  3. import android.util.Log;  
  4.   
  5. public class FFmpeg {  
  6.     static {  
  7.         try {  
  8.             System.loadLibrary("avutil-54");  
  9.             System.loadLibrary("swresample-1");  
  10.             System.loadLibrary("swscale-3");  
  11.             System.loadLibrary("avcodec-56");  
  12.             System.loadLibrary("avformat-56");  
  13.             System.loadLibrary("avfilter-5");  
  14.             System.loadLibrary("ffmpegutils");  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值