在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了。
另外,这篇文章内容没经过测试,只是意象的内容,不过基本也就是这样了。
推荐FFmpeg新手看看这个http://dranger.com/ffmpeg/ffmpeg.html,我就是从那开始学习的,进阶之后只能自己看代码了~~
不知道大家都用FFmpeg在做什么呢?来汇报下也好啊TOT
本文基于 署名-非商业性使用-禁止演绎 2.5 中国大陆 发布
51 COMMENTS >>LEAVE<<
-
我们想用FFmpeg做流媒体播放,谢谢 a bit 分享。
-
发现感兴趣的朋友很是多吗,而且大家似乎总不成功。
-
“发现感兴趣的朋友很是多吗,而且大家似乎总不成功”,很是打击人滴。。。
还没有接触过Android,不过对其很是有好感。 -
大哥能寫簡單的java code
來介紹如何調用你so裡面的方法嗎??
比如說 開個mp4檔案 -
Android就像一个出身名门,但又平易近人,善解人意,情窦初开的姑娘。每个男人都想去了解她,每个女人都想去模仿她,而她又喜欢主动与人交往,良好的家教使她不会像Symbian一样容易染病。
-
大家好:
小弟最近也在研究这方面,有兴趣共同学习的,加我QQ:191837614 -
刚编译了个ffmpeg.so还没开始调用,希望提供个方法
-
@ABitNo
你好:
楼主。还是不太明白你说的。你说的可以自由的使用ffmpeg,是什么意思?可以直接在上层的java里面调用API了吗?是不是还需要自己用jni封装ffmpeg里面的方法来给上层的java调用?
你的这个libffmpeg.so是干吗用的呢?是不是只是提供一个到源码的连接?我使用编译生成的.a静态库,然后用jni封装一下,再提供给上层java调用,这个思路可以吗? -
@xsun33
我就说用JNI来调用的,你的程序代码如果不想开源,你就不能用静态库。静态库和动态库使用起来都一样的啊,都是需要你使用JNI调用的。
-
照版主用jni寫了
不過好象没反應
版主是否再寫篇helloworldffmpeg教學 -
@ABitNo
你好:
谢谢楼主指导。现在明白一些了。正在开发中,以后请楼主多多指导。 -
I would like to decode H264/MPEG4 raw data for live streaming :)
-
@caxton
why not use OpenCore in Android?I think it more efficient to decode H264
-
想要作播放器的话,应该把开源的sdl也在android上移植一下,建议搂住再点关于编译sdl的,给大家指导一下
-
Dear ABitNO:
Is it possible to use OpenCore library on Android directly?
I think OpenCore is encapsulated to Android Classes such as android.media.
Can you please give me some hints to decode raw data using OpenCore?
Thanks!! -
@xsun33
多交流哈,能留个联系方式么
-
hi everybody
我建了一个OpenCore的群:23290004,大家一起交流哈
-
有沒有人成功使用AbitNo大提供的so文件阿?
可不可以提供一個簡單的範例?
謝謝!! -
我按照上面的步驟做完
<project></project>
System.loadlibrary("ffmpeg")這行就出問題了
我進adb shell裡面看
libffmpeg.so沒有被放到data/data/lib裡面阿?
請問還需要ndk-build一次嗎? -
楼主你好,看了你的几篇文章我总算编译出SO文件了,不过调用的时候总是出错,楼主能不能写个完整的调用FFMPEG的工程分享下.哪怕只调用初始化方法也好
-
@ohye
我的QQ :191837614
大家多交流,互相学习。 -
老大,偶enable-shared编译完之后还是不对,so1.6k,真郁闷啊,查看了编译的log,感觉只有最后链接出.so的时候出问题,之前的库们都好好的。如果这样的话,会不会是config.sh还有毛病?有些选项没勾上么?
-
@ABitNo
博主,你好!看到你写的如何用ndk编译ffmpeg 的文章十分欣慰。
通过你介绍的方法确实能编译出可用的ffmpeg链接库。但是里面似乎存在一个问题,虽然在config.sh里面已经enable neon,但是生成的config.h里面的ARCH_ARM和HAVE_NEON并没有值1,也就是没有进行neon优化。当手动值1时,编译到libavcodec/aac.c就会出现错误,错误如下。
Error: thumb conditional instruction not in IT block
请问这个错误如何解决。
望博主一定要帮帮忙啊,小弟不胜感激。 -
@ABitNo
博主你好,我想问一下如何使用现有的libffmpeg.so库呢?我自己写了一个jni,需要调用到ffmpeg里面的方法,请问要如何导入libffmpeg.so呢?
-
测试下js效果,请无视
-
测试下js效果,请无视
-
测试下js效果,请无视
-
@yuan tangfu
neon指令打开了吗
-
居然找到一个翻译版本。。。汗水。。。
http://odroid.foros-phpbb.com/application-development-f21/ffmpeg-compiled-with-android-ndk-t338.htm -
Build it with cygwin+NDKr4b?
-
你好,我已经写好播放器,就是不能同步,怎么解决啊?能帮我一下吗?
-
@LAONB
这话说的好恶心阿,我看Android更想是被google 从linux那里骗来囚禁驯养成的女杀手,不可理喻得封闭畸形。
MeeGo才是真正的名门之秀。 -
@kickan
神啊~~ 你用到了ffmpge么? 能不能源码发给我一下~~huppyuy@gmail.com 只要能让我知道怎样在android用ffmpge就好了 谢啦 绝对不会侵权的~~
-
Your client does not have permission...
-
多谢分享,请问如何编译出的NEON优化版本?
-
@yuan tangfu
将工程AndroidManifest.xml中的android:debuggable="true"删除应该就可以了。
-
我想知道能不能用ffmpg吧android里面的视频文件即3pg,一帧一帧的转换成图片Bitmap啊.用你编译的这个so可以不!~!楼主麻烦了,方便加QQ或把答案发我邮箱 ,谢谢了!~
一个被折磨得不行了的小白!~
QQ:277340241
email:277340241@qq.com -
我想问下博主,ffmpeg 我已经编译成.so了
然后也能在工程了成功的 LoadLib
接下来该怎么使用呢? 是否通过我再写一个C文件去调用ffmepg.so 然后通过JNI 去条用 我写的这个C文件来播放视频呢? 请指点...谢谢
-
谁能发给我一个编译好的.so文件啊,编译了几次还是1k.
-
我邮箱是867806949@qq.com,谢谢了
-
那个下载地址需要翻墙,我下不来
-
楼主,libffmpeg.so放在libs/armeabi-v7a/下不行,ndk-build时会把libffmpeg.so删除
-
@yuan tangfu
你好,你的 NEON 最后成功了吗。
-
真机能运行吗?
-
@kickan
hi, Kickan. Could u send me a demo that how to use ffmpeg.so?
thanks advance! -
这个地址没有so啊,只有ffmpeg的源码。。。
-
我想用FFmpeg实现支持mms协议的的电台播放功能,及获取电台的伴随信息等。
-
我的qq:516470705