zoukankan      html  css  js  c++  java
  • FFmpeg Android 学习(一):Android 如何调用 FFMPEG 编辑音视频

    一、概述

    在Android开发中,我们对一些音视频的处理比较无力,特别是编辑音视频这部分。而且在Android上对视频编辑方面,几乎没有任何API做支持,MediaCodec(硬编码)也没有做支持。那怎么办呢?在FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg中我们知道ffmpeg命令行能够编辑音视频。感觉对于编辑音视频这方面的需求貌似只能使用FFMPEG来实现了(肯定还有别的办法,但是FFMPEG绝对是最普遍的解决方案)。然而在Android上使用FFMPEG也不是一件容易的事情,比较正统的办法就是使用NDK来变异,但是NDK编译的成本实在是太高,而且开发难度极大。本文提供了一个比较靠谱的方法来实现在Android上使用FFMPEG编辑音视频。

    二、NDK编译

    虽然使用NDK编译是难度极高的方案,但是得说明一下NDK编译FFMPEG才是最合适与优秀的解决方案。

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

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

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

    三、使用开源项目(WritingMinds/ffmpeg-android-java)

    首先上链接 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包变大这个问题。各位可以权衡自己的需求来做出选择。

  • 相关阅读:
    wikioi 1002 旁路
    OS X升级到10.10使用后pod故障解决方案出现
    Python challenge 3
    maven 编
    独立博客网站FansUnion.cn操作2多年的经验和教训以及未来计划
    Wakelock API详解
    智遥工作流——会签与多人审批区别
    mysql 参数optimizer_switch
    OpenRisc-31-关于在设计具有DMA功能的ipcore时的虚实地址转换问题的分析与解决
    TROUBLE SHOOTING: FRM-30425
  • 原文地址:https://www.cnblogs.com/renhui/p/9761199.html
Copyright © 2011-2022 走看看