一、概述

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

FFmpeg Android 学习(一):Android 如何调用 FFMPEG 编辑音视频相关推荐

  1. Android 使用ViewPager2+ExoPlayer+VideoCache 实现仿抖音视频翻页播放

    1. 实现效果 效果图中,视频没有铺满 是因为使用了ExoPlayer的RESIZE_MODE_FIT模式, 虽然使用RESIZE_MODE_FILL模式可以填充整个父布局,但是本Demo中使用的视频 ...

  2. Android MediaScanner MediaProvider流程以及性能优化,音视频扫描

    Android MediaScanner MediaProvider流程以及性能优化,音视频扫描 快速扫描 一.源码解析 github链接 MediaScanner时序图 MediaSacannerR ...

  3. 直播技术学习笔记(直播协议+流媒体服务器+音视频处理+FFmpeg)

    直播协议 RTMP(Real Time Messaging Protocol) 简介 Time Messaging Protocol,实时消息传送协议 RTMP是Adobe公司为Flash播放器和服务 ...

  4. Android学习之Android历史

    一个优点:无论学习什么之前都要了解一下它的历史. Android读音:android 英 [ ˈændrɔɪd ] 美 [ ˈænˌdrɔɪd ],中文音译:"安叫伊德",或者&q ...

  5. 【Android学习】Android常用框架

    1,缓存 1)DiskLruCache Java实现基于LRU的磁盘缓存. 2,图片 1)Glide(已使用) ①概念 图片加载.  Glide 支持拉取,解码和展示视频快照,图片,和GIF动画. ② ...

  6. Android学习笔记——Android 签名机制详解

    Android 签名机制详解 近期由于工作需要在学习 Android 的签名机制,因为没有现成资料,只能通过开发者文档和阅读博客的方式对 Android 签名机制进行大致了解.过程中查阅到的资料相对零 ...

  7. Android 学习 之 Android 4.0 平台

    [size=large]转转转,感谢饿哦额Android的各位大侠,在这里谢过,我这里做个备份,嘿嘿!! http://www.eoeandroid.com/thread-103300-1-1.htm ...

  8. java命令截图,GitHub - xuege-cn/fmj: FMJ (FFMpeg for Java)。通过Java调用FFMpeg命令的方式来对音视频进行处理(获取信息、截图等等)。...

    项目介绍 FMJ (FFMpeg for Java) 通过Java调用FFMpeg命令的方式来对音视频进行处理(获取信息.截图等等). FFMpeg安装 建议使用 ffmpeg-2.6.1 版本 Li ...

  9. Android学习之Android 5.0分享动画实现微信点击全屏效果

    Android5.0过渡动画,请看 http://blog.csdn.net/qq_16131393/article/details/51112772 今天用分享动画实现微信点击全屏效果 本文源代码下 ...

最新文章

  1. Jquery 复选框全选与反选点击执行一次然后失效解决方案
  2. 渗透神器sqlmap的使用笔记
  3. java字符数统计_【JAVA300例】51、统计输入的字符串中各种字符的字符数
  4. 获取固件加载基地址的几种方法
  5. 基本数据类型对象包装类
  6. JAXB 有两个名为 ** 的属性,类的两个属性具有相同名称 **解决方案
  7. 洛谷 P1417 烹调方案 (01背包拓展)
  8. 阿里云Maven镜像配置
  9. SpringBoot整合kafka(安装)
  10. 利用搜索引擎实现关键词爬取内容
  11. node.js 资料
  12. 基于react/vue的移动端终极适配方案(更新css-modules配置)
  13. 20个常用模拟电路(详细分析)
  14. OpenCV3编程入门(毛星云)读书笔记(一)
  15. 安卓一键清理内存_豆豆清理大师免费下载-豆豆清理大师老年版v1.0.0手机版
  16. OBS 电脑推流直播指南
  17. 三款MikroTik家用和小型办公网路由器
  18. java与设计模式-观察者模式
  19. emmx文件用什么软件打开电脑_我告诉你emmx文件怎么打开
  20. 布拉德皮特不完全档案及星路历程

热门文章

  1. Java 线程池的复用原理
  2. 蓝桥杯 ADV-179 算法提高 解二元一次方程组
  3. LeetCode 93. Restore IP Addresses
  4. 【离散数学】单向连通和弱连通的区别
  5. html中灰色怎么写,css如何实现置灰不可点
  6. php的4种常用运行方式
  7. JAVA中List与Array之间互换
  8. eclipse导入远程git代码及(push、pull、及maven工程导入)
  9. 学习共享--产品思维
  10. 多线程下单例模式:懒加载(延迟加载)和即时加载