当前位置: 代码迷 >> Android >> 利用ffmpeg跟SDL实现一个跨android版本的音视频播放器
  详细解决方案

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

热度:84   发布时间:2016-05-01 12:03:21.0
利用ffmpeg和SDL实现一个跨android版本的音视频播放器
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文件
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := mainSDL_PATH := ../SDLLOCAL_C_INCLUDES += $(LOCAL_PATH)/$(SDL_PATH)/include \		    $(LOCAL_PATH)/../libffmpeg \# Add your application source files here...LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \	tutorial08.cLOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPESLOCAL_SHARED_LIBRARIES := SDLLOCAL_STATIC_LIBRARIES := libavformat libavcodec libavutil libpostproc libswscaleLOCAL_LDLIBS := -ldl -lGLESv2 -lloginclude $(BUILD_SHARED_LIBRARY)

9:SDLActivity中load so
 // Load the .so    static {        System.loadLibrary("SDL");        //System.loadLibrary("SDL_image");        //System.loadLibrary("SDL_mixer");        //System.loadLibrary("SDL_ttf");        System.loadLibrary("main");    }

10:改写nativeInit方法
  // Runs SDL_main()    	String avPath = Environment.getExternalStorageDirectory()+File.separator+"DancingQueen.mp4";        SDLActivity.nativeInit(avPath);        //Log.v("SDL", "SDL thread terminated");


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



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

下面是我播放视频的截图





1 楼 zzxiaoqian 2013-01-09  
楼主,我按照你的方式改的,编译好开始运行之后为什么是黑屏呢,找不到视频文件呢。。。
2 楼 helloandroid 2013-01-10  
要在
zzxiaoqian 写道
楼主,我按照你的方式改的,编译好开始运行之后为什么是黑屏呢,找不到视频文件呢。。。

你的sdcard根目录放视频文件没有,java代码的路径也要改正确
3 楼 helloandroid 2013-01-11  
zzxiaoqian 写道
楼主,我按照你的方式改的,编译好开始运行之后为什么是黑屏呢,找不到视频文件呢。。。

我找了下工程,还在,上传了上来,进入根目录,ndk-build就可以了
  相关解决方案