提到音视频编辑方案,大家最容易搜到的可能是ffmpeg这个牛X的开源方案。ffmpeg 是基于C语言的著名视频编解码方案。国内有也有不少的公司将ffmpeg 移植到iOS和android 平台进行视频处理,例如,美拍、秒拍等。但是其实iOS和Android自带的多媒体框架一点也不比ffmpeg弱。下面就中常遇到的问题谈一谈在安卓视频编辑上面的经验分享。

一.做Android视频编辑的可行性开源方案有哪些?

第一个就是大家熟知的ffmpeg,将ffmpeg移植到anroid平台,编译成so文件,由jni 调用,可以实现音视频的分离、裁剪、拼合、加字幕、滤镜等功能。

第二个就是android 自带的MediaCodec 框架,MediaCodec框架底层调用的是StageFright库,StageFright库是默认封装在android系统里面的。

第三个,如果只是做视频音频混合的话,可以用这个开源工程mp4parser。

二.这几种框架的优缺点各有哪些?

分析优缺点,那么就从功能多少、学习门槛、运行效率、稳定性、打包占用空间这几个方面来总结一下。

a.功能多少方面:

ffmpeg 无疑排第一位,他集合了视频编解码、视频滤镜、流媒体推流、音频各种特效等等,基本上你能想到的功能都在里面。

第二位当是Android的亲儿子,MediaCodec。MediaCodec涵盖了音视频解复用、音频解码、视频解码、音频编码、视频编码、音视频合并的整个流程。跟ffmpeg相比,MediaCodec 更接近底层硬件。这个方案如果想要实现视频的滤镜、字幕、拼接等功能的话,需要自己配合OpenGL ES 来实现,另外,音视频拼接的话,要考虑到不同音频采样率的重采样问题,音频重采用问题,需要懂得傅立叶变换相关的离散信号变换方法,如果要实现音频特效,如变声、均衡器的话,也需要懂得上述信号变换方法。因此,很少公司会采用。

第三位mp4praser,可以实现音视频编解码及编辑。

b.学习门槛:

如果只是做视频转码、加文字、图片特效等,ffmpeg和MediaCodec 旗鼓相当,mp4parser最低(但是基于mp4parser的资料比较少,其实也未必)。如果是要拼接视频、做音频         的变声、均衡器特效的话,MediaCodec是难度最高的,因为这一切需要你从底层原理做起。

c、运行效率:MediaCodec硬解硬编最快,ffmpeg硬解硬编方案稍慢(注意,2017年5月以后最新版ffmpeg已经整合了MediaCodec,不再慢了),mp4parser(只能软解软编)最慢。

d、稳定性: MediaCodec和ffmpeg 的硬解硬编方案旗鼓相当,mp4parser在低配的机器上可能出现卡顿的问题。

f、打包占用空间:国内最得最好的ffmpeg硬解硬编方案,其so文件在10.几M,MediaCodec由于是纯java 代码,占用空间很容易做到几百K甚至几十K。mp4parser也是纯Java,开发包同样非常小。

三、现有的免费开源方案和收费商业方案介绍。

基于ffmpeg 的免费软解软编方案在github.com有很多,例如:EpMedia,硬解硬编方案还没有看到。商业收费的方案有趣拍、美摄等。不过这些商业方案是按年收费的有点小贵。

基于MediaCodec 的免费开源方案有m4m,videotranscoder等,不过这些开源方案,表面看上去功能很强大,实际使用的时候会遇到不少坑,只适用于对MediaCodec的原理进行研究。目前尚未发现一个开源成熟的MediaCodec项目。做MediaCodec成熟商业方案的有七牛、美视这两家。其中,七牛的商业方案,笔者亲测,到目前为止,还有一些明显的bug,可能是起步比较晚吧,请谨慎使用。

Android 音视频编辑经验总结及开源工程分享相关推荐

  1. Android音视频编辑库,Android音视频处理.pdf

    Android音视频处理 Android 视频处理 沈青海 admin@3 Copyright 2008-2009 Farsight. All rights reserved. 频处理 } Media ...

  2. Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)

    视音频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的 ...

  3. android视频剪辑处理第三方,Android 中通过 FFmpeg 命令对音视频编辑处理

    以下文章来源于DevYk ,作者DevYK 音视频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想 ...

  4. android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...

    ## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...

  5. 推荐一个开源的音视频编辑、视频剪辑框架

    RxFFmpeg RxFFmpeg 是基于 ( FFmpeg 4.0 + X264 + mp3lame + fdk-aac ) 编译的适用于 Android 平台的音视频编辑.视频剪辑的快速处理框架, ...

  6. 谈谈对Android音视频开发的探究

    ​ 在日常生活中,视频类应用占据了我们越来越多的时间,各大公司也纷纷杀入这个战场,不管是抖音.快手等短视频类型,虎牙.斗鱼等直播类型,腾讯视频.爱奇艺.优酷等长视频类型,还是Vue.美拍等视频编辑美颜 ...

  7. 那些年,Android音视频开发那些事儿

    音视频开发的主要应用有哪些? 音频播放器,录音机,语音电话,音视频监控应用,音视频直播应用,音频编辑/处理软件,蓝牙耳机/音箱,等等 1.视频监控类 (JNI+应用层开发) 从硬件到嵌入式再到软件,涉 ...

  8. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  9. Android 音视频开发入门指南

    最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧. 音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整 ...

最新文章

  1. html左浮动不管用图片往下放,html - 如何在HTML / CSS中水平对齐图像(浮动和显示内联块不起作用) - 堆栈内存溢出...
  2. hibernate连接池配置
  3. Spring MVC 中的 forward 和 redirect
  4. 008_html属性
  5. matlab怎么设置x轴距,MATLAB及其在电气工程中的应用苏小林第四章.ppt
  6. 修正discuz发帖首次换行无效的问题
  7. 7-二进制,十进制,十六进制
  8. Python——Python3.6.0+Scrapy安装方法(总算没有bug了)
  9. ActiveReports 报表应用教程 (15)---报表换肤
  10. 最新!复旦大学邱锡鹏教授等「Transformers全面综述」论文
  11. mysql 命令 select_Mysql基础命令(二)select查询操作
  12. 七年级计算机与信息安全教案,计算机与信息安全教案.docx
  13. data spring 指定时区_听说过spring-data-jdbc么?来个最佳实践
  14. java循环怎么分析_Java for循环的几种用法分析
  15. 实用软件工程(张海藩)复习笔记
  16. 微信小程序打开文档功能
  17. CSS设置字体为微软雅黑 且 解决用户设备上没有该字体的问题
  18. 计算机上是如何注明固态硬盘的,笔记本固态硬盘不见了怎么回事_笔记本电脑固态硬盘盘符不显示如何解决-win7之家...
  19. html5 app 打包,手机h5网站如何快速打包做成APP?
  20. 剑指OFFER 03-11

热门文章

  1. Linux操作系统安装详解
  2. Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理
  3. 在arcgis常见的叠加分析情况汇总 (转)
  4. 数据可视化 - 矩阵 - Matplot
  5. 最值得推荐的任务悬赏平台
  6. MongoDB 查询篇 及 数组修改器更新数据
  7. 好事多磨!《轩辕剑》电视剧版几经周折即将开机
  8. 习题 猜数字游戏提示
  9. 新建SpringBoot项目并整合MyBatisPlus
  10. 2022-2028年中国自动体外除颤器(AED) 行业市场前瞻与投资战略规划分析报告