现在的位置: 首页 > 综合 > 正文

利用ffmpeg和SDL实现一个跨android版本的音视频播放器

2013年10月09日 ⁄ 综合 ⁄ 共 1692字 ⁄ 字号 评论关闭
1:从http://www.libsdl.org/tmp/下载SDL for android 版本(我下载的是 SDL-1.3.tar.gz ) 
2:从https://github.com/havlenapetr/FFMpeg下载 havlenapetr 的ffmpeg for android版本。 
3:把你下载的SDL for android版本解压到本地目录,解压到本地. 
4:解压后的根目录下面有一个android-project工程,在jni目录下面新建一个SDL目录,把根目录下面的src目录,include目录和Android.mk拷贝到新建里的SDL目录下面 
5:把ffmpeg for android 工程下jni目录的libffmpeg拷贝到android-project的jni目录下 
6:http://dranger.com/ffmpeg/下载tutorial08代码并把文件放在jni的src目录下 
8:编写tutorial08的mk文件 
Java代码  收藏代码
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE := main  
  6.   
  7. SDL_PATH := ../SDL  
  8.   
  9. LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(SDL_PATH)/include \  
  10.             $(LOCAL_PATH)/../libffmpeg \  
  11.   
  12. # Add your application source files here...  
  13. LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \  
  14.     tutorial08.c  
  15.   
  16. LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES  
  17. LOCAL_SHARED_LIBRARIES := SDL  
  18. LOCAL_STATIC_LIBRARIES := libavformat libavcodec libavutil libpostproc libswscale  
  19.   
  20. LOCAL_LDLIBS := -ldl -lGLESv2 -llog  
  21.   
  22. include $(BUILD_SHARED_LIBRARY)  

9:SDLActivity中load so 

Java代码  收藏代码
  1. // Load the .so  
  2.    static {  
  3.        System.loadLibrary("SDL");  
  4.        //System.loadLibrary("SDL_image");  
  5.        //System.loadLibrary("SDL_mixer");  
  6.        //System.loadLibrary("SDL_ttf");  
  7.        System.loadLibrary("main");  
  8.    }  

10:改写nativeInit方法 

Java代码  收藏代码
  1. // Runs SDL_main()  
  2.     String avPath = Environment.getExternalStorageDirectory()+File.separator+"DancingQueen.mp4";  
  3.       SDLActivity.nativeInit(avPath);  
  4.   
  5.       //Log.v("SDL", "SDL thread terminated");  

11:进入到android-project项目根目录,ndk-build 耐心等待一会就可以编译出两个库libSDL.so和libmain.so 

运行你的android-project项目播放你的视频吧. 

下面是我播放视频的截图 

转自http://helloandroid.iteye.com/blog/1753355

抱歉!评论已关闭.