android开发中如何调用FFMPEG

概述

在android开发中,我们对于一些音视频的处理是比较无奈的,特别是编辑音视频部分。在android上对视频进行编辑这件事google亲爹貌似并不买账,几乎没有任何API做支持。而在android4.1中添加MediaCodec(硬编码)也没有做支持。很无奈,对于编辑音视频这方面的需求貌似只能使用FFMPEG来实现。当然还有别的一些方法,但FFMPEG绝对是比较普遍的解决方案。而在android上使用FFMPEG又是一条艰辛的路程,比较正统的方法就是使用NDK来编译,但NDK编译的成本太高,开发难度大。而本文就是主要介绍在GitHub上找到的一个比较靠谱的方法来快捷的实现android上使用FFPEMG。

NDK编译

首先还是得强调,有能力通过NDK来编译FFMPEG的同志,就没有太大必要继续往下看了。毕竟NDK编译FFMPEG才是最合适与优秀的解决方案。

介绍下NDK编译FFMPEG所需要具备的要求:

  • C语言
  • 熟练地使用NDK
  • 了解FFMPEG源码,至少源码中的API得熟悉
  • 音视频知识

有了这些技术知识,那么你就能可以开始尝试用NDK编译FFMPEG了。

WritingMinds/ffmpeg-android-java(GitHub开源项目)

首先附上链接 https://github.com/WritingMinds/ffmpeg-android-java

具体的使用方法在GitHub上已经有比较详细的介绍了,不作过多赘述了。

在自己项目中使用只要在gradle中引用如下类库即可。

compile 'com.writingminds:FFmpegAndroid:0.3.2'

下面主要介绍下该种方法的优缺点。

优点:

  1. 开发成本低,快速
  2. 学习成本低,只要掌握FFMPEG的命令调用即可
  3. 对一些简单的编辑操作,性能上没有太大额外的消耗

缺点:

  1. 支持库容量大,导致APK变大(可能要30M左右)
  2. 没法像NDK一样在源码层就组装成需求所需要的功能,而导致性能的额外消耗
  3. 不够灵活,可能会出现意想不到的错误。
  4. 开源库的维护不确定性

总结

综上所诉,对于在android上使用FFMPEG的问题上,首先推荐使用NDK编译的方法。在时间成本不允许的情况下,可以使用本文推荐的开源库,当然必须忍受APK包变大这个问题。各位可以权衡自己的需求来做出选择。

你可能感兴趣的:(FFMPEG)