首页 > 代码库 > ffplay2 android 版正式发布

ffplay2 android 版正式发布

项目地址:https://github.com/DeYangLiu/AndroidPlayer/

看点: 

用ListView实现的简易文件浏览器。

用intent启动另一个Activity。

ndk 调试。

移植ffmpeg 2.5和sdl2 到android的各种坑。


同时编译多个库
====
ln -s /mnt/OpenSource/SDL_image jni/
ln -s /mnt/OpenSource/SDL_image/showimage.c jni/src/
gvim jni/src/Android.mk
 LOCAL_SRC_FILES = ... showimage.c
 LOCAL_SHARED_LIBRARIES += SDL2_image

测试 cannot locate symbol atof
忘了SDLActivity.java里面加上SDL2_image
然后又出现cannot locate symbol "signal"

Q. how to judge android phone 32 or 64bit?
A: adb pull /system/bin/dalvikvm && file dalvikvm
当然我的手机是32bit的啦,网上有人需要用32bit的ndk的,我试了也没用。
迷茫中,下午又搜了一番,遇到[1]之后,事情出现转机。

ffmpeg4android
====
[1]下载下来不知道从哪里开始,
仔细读了里面的shell脚本,明白了要下载ffmpeg源码,
然后buildtest.sh。[1]的最初计划是和android source
tree下面编译的,但是在内地下载不了, 而u pelya 改造成可以单独编译。 
我一开始试最新的ffmpeg2.5,失败了。看到脚本里面只支持到1.1,于是下载了[2]。
makefiles下面三个文件:
 Android_configure.mk -- 设置配置参数字符串
 Android_.mk -- libavutils libavcodec 等子目录都用到的编译参数。
 Android.mk -- 包含上面两个文件; 跟据config.mak设置APP_MODULES编译参数。
然后把ffmpeg源码解压到$ffmpegdir,把makefiles下面的文件复制过去。
生成两个文件:
 jni/Android.mk
 jni/Application.mk
ln -s $ffmpegdir jni/ffmpeg
然后就可以编啦:
ndk-build -j8 2>&1 | tee build.log

因为SDL2本身自带一个mk,直接
ln -s $sdldir jni/SDL
在jni/Application.mk加上SDL2。

剩下还需一个jni测试入口:
cp -rf android-ndk-r10d/samples/hello-jni/jni/src jni/adapter
UI入口:
cp -rf android-ndk-r10d/samples/two-libs/src src
项目文件:
cp -rf android-ndk-r10d/samples/two-libs/{res, AndroidManifest.xml  default.properties}


git代码已使用静态链接。感谢[1]的指引。

ref

====
[1] git://git.code.sf.net/u/pelya/ffmpeg4android 
[2] http://ffmpeg.org/releases/ffmpeg-1.1.tar.bz2

ffplay2 android 版正式发布