2014-10-01 55 views
0

我想在我的android应用程序上使用FFmpeg库。 我没有C/C++ /制作知识和我一直在阅读的所有线索谈论我完全不明白的东西。使用FFmpeg for android没有任何C/C++或使知识

是否有任何预编译的库可以添加到我的项目中,然后在我的java类中添加一个简单的“import”语句,然后调用它?

感谢

回答

0

可以使用Xuggler编码和解码的音频和视频。他们的网站说“Xuggler广泛使用FFmpeg压缩和解压缩媒体”。

+0

Xuggler似乎没有在他们的网站上提供Android版本。此外,[“Xuggler处于中断状态,因为没有人正在积极开发它”](http://www.xuggle.com/xuggler/status)。 – CommonsWare 2014-10-01 11:54:13

1

为什么需要FFmpeg?有什么特别的理由吗?我猜可能有可能获得预编译的二进制文件,但由于它是一个C库,您还需要一个JNI包装代码 - 我认为任何人都不会为整个库生成它,因为它非常大,所以即使使用了预建库中,你仍然需要有一些JNI知识来连接Java和FFmpeg之间的通信。只是为了演示 - here就是一个例子。

除此之外,如果没有特别的理由使用FFmpeg,为什么不能坚持使用属于Android API的MediaCodec?它包装了原生StageFright库,并且可以在可用的设备上提供硬件支持,而FFmpeg将是仅限CPU的解决方案。当然,如果需要一些不受欢迎的编解码器或MediaCodec中不可用的复合器,那么FFmpeg就是这种方式。

+0

MediaCodec是API 16,Muxer是18. 我需要API 8/9,也许我可以将其拉伸到14. – 2014-10-01 13:45:14

+0

我试着看着StageFright/OMX,无法弄清楚如何使用它。对于“包装”FFmpeg,甚至只是将其预编译的东西,并包装一个方法,允许发送FFmpeg命令作为一个长的字符串可以是足够好的。 – 2014-10-01 13:48:09

+0

好的,如果你需要一个MediaCodec不可用的API级别,我想FFmpeg是最好的方法。那么我认为你不能找到预构建的二进制文件,因为在某些情况下这种做法违反了许可证(如果二进制文件包含专有编解码器等)。大部分托管的脚本(例如https://github.com/luhuiguo/ffmpeg-andriod,https://github.com/liquidware/ffmpeg-android)都是旧的或只包含非专有的东西。你能告诉你需要什么编解码器吗?因为对于他们中的很多人来说,你实际上必须为arm编译compcile编解码器库。 – 2014-10-01 14:28:59