Android NDK可用的FFmpeg源码
首先为自己的错误郑重的道歉,第一个错误是声明为”free forever“的VPlayer最后成了收费的了,第二个是没有及时的公布用到的FFmpeg源码。错了就是错了,没有什么值得为自己辩解的,得让实际行动证明一切。
VPlayer使用了FFmpeg的代码,基于LGPLv3协议,修改过的代码可以点击这里下载。
下载之后使用非常简单,FFmpeg的代码没做任何修改,不需要configure,编译过程使用的是其中的Android标准编译文件Android.mk。只要把代码放到一个标准的Android工程中的jni目录下,运行ndk-build即可。
之前写过一篇用Android NDK编译FFmpeg,写的过于繁琐,一直承诺会更新一个简单易用的方法,现在算是兑现了。
从那之后,这个博客也很少更新了,其实不只这里,我的Twitter等帐号也算是废弃了,基本上都是在开发VPlayer这个播放器,期间有很多学习和成功的快乐,也有各种纠结的事情,幸好有大家的支持,更幸运的是有星星陪我。
顺便说一下,随着Android NDKr5的发布,一切都变的简单起来,只要你会普通Linux上的编译流程,你应该也会用它。我也不介绍这种了,因为我没试过,只简单的看了下更新日志里有提到。
依然不停的思考 AND 编码,为了美好明天。。。
发布一Android全能播放器
在Android NDK中使用libffmpeg.so
前面一篇文章介绍了如何在Android NDK中编译FFmpeg,发现感兴趣的朋友很是多吗,而且大家似乎总不成功。
于是我把编译好的so文件发上来,请点击此处下载。注意,这个文件是针对NEON优化编译的,在不支持NEON的ARM处理器上可能无法运行。
似乎很久没写过东西了,下面就介绍下大体的使用方法,希望有点帮助。
首先你要有一个Android项目,把libffmpeg.so放到项目的libs/armeabi-v7a/中。然后要准备FFmpeg的源文件,把它们放到你喜欢的目录,比如jni/ffmpeg/中。
编辑你需要使用libffmpeg.so的项目模块的Android.mk,在合适的位置添加如下内容
LOCAL_C_INCLUDES += $(PATH_TO_FFMPEG_SOURCE) LOCAL_LDLIBS += -L$(PATH_TO_LIBFFMPEG_SO) -lffmpeg
变量PATH_TO_FFMPEG_SOURCE代表FFmpeg源码的路径,PATH_TO_LIBFFMPEG_SO是到libffmpeg.so的路径。
说明一下,这个so只包含avformat,avcodec和avutil三部分,另外我也把其中的log方法改成了Android适用的。
一切OK,然后你就可以自由的使用FFmpeg了。
用Android NDK编译FFmpeg
请大家到VPlayer官方网站获取最新的FFmpeg代码与更好的编译方法,谢谢大家的支持。
Android内置的编解码器实在太少,于是我们需要FFmpeg。Android提供了NDK,为我们使用FFmpeg这种C语言代码提供了方便。
不过为了用NDK编译FFmpeg,还真的花费了不少时间,也得到了很多人的帮助,最应该谢谢havlenapetr。我觉得我现在这些方法算是比较简洁的了--
下面就尽量詳細的说一下我是怎么在项目中使用FFmpeg的,但是基于我混乱的表达能力,有不明白的就问我。
你得了解JNI和Android NDK的基本用法,若觉得我的文章还不错,可以看之前写的JNI简单入门和Android NDK入门
首先创建一个标准的Android项目vPlayer
android create project -n vPlayer -t 8 -p vPlayer -k me.abitno.vplayer -a PlayerView
然后在vPlayer目录里
mkdir jni && cd jni wget http://ffmpeg.org/releases/ffmpeg-0.6.tar.bz2 tar xf ffmpeg-0.6.tar.bz2 && mv ffmpeg-0.6 ffmpeg && cd ffmpeg
用ArchLinux时的一些小技巧
用ArchLinux有段时间了,就写写自己使用时的一些小技巧了。其实不是技巧,只因ABitNo找不到合适的词语来形容,就是使用时遇到的一些小问题和自己的解决方法。还是那句话,如果看到这篇文章的你是个高手,那就不要在这浪费时间了。
1、关于截图的问题
ArchLinux遵循的是简约原则,默认是没有截图工具的,ABitNo选用的是大名鼎鼎的scrot,这是个命令行的截图工具,但是如果每次截图都敲下cmd总还是有点麻烦,所以得想点办法。ABitNo就给常用的一些命令设置了快捷键:
全屏 scrot -e 'mv $f ~/Temp' Print 选取 scrot -s -e 'mv $f ~/Temp' Ctrl+Print 窗口 scrot -bs -e 'mv $f ~/Temp' Alt+Print
可以在gnome自己的keyboard shortcut里设置,如果用Compiz了,也可以到Compiz的command里设置。
2、五笔的问题
ABitNo是08年那个寒假开始用五笔的,后来为了强迫自己使用五笔,就只安装了ibus的五笔,但是平时不会输入的字太多了,这怎么办!
