Android 音视频编辑经验总结及开源工程分享
提到音视频编辑方案,大家最容易搜到的可能是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 音视频编辑经验总结及开源工程分享相关推荐
- Android音视频编辑库,Android音视频处理.pdf
Android音视频处理 Android 视频处理 沈青海 admin@3 Copyright 2008-2009 Farsight. All rights reserved. 频处理 } Media ...
- Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)
视音频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的 ...
- android视频剪辑处理第三方,Android 中通过 FFmpeg 命令对音视频编辑处理
以下文章来源于DevYk ,作者DevYK 音视频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想 ...
- android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...
## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...
- 推荐一个开源的音视频编辑、视频剪辑框架
RxFFmpeg RxFFmpeg 是基于 ( FFmpeg 4.0 + X264 + mp3lame + fdk-aac ) 编译的适用于 Android 平台的音视频编辑.视频剪辑的快速处理框架, ...
- 谈谈对Android音视频开发的探究
在日常生活中,视频类应用占据了我们越来越多的时间,各大公司也纷纷杀入这个战场,不管是抖音.快手等短视频类型,虎牙.斗鱼等直播类型,腾讯视频.爱奇艺.优酷等长视频类型,还是Vue.美拍等视频编辑美颜 ...
- 那些年,Android音视频开发那些事儿
音视频开发的主要应用有哪些? 音频播放器,录音机,语音电话,音视频监控应用,音视频直播应用,音频编辑/处理软件,蓝牙耳机/音箱,等等 1.视频监控类 (JNI+应用层开发) 从硬件到嵌入式再到软件,涉 ...
- Android 音视频开发学习思路
Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...
- Android 音视频开发入门指南
最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧. 音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整 ...
最新文章
- html左浮动不管用图片往下放,html - 如何在HTML / CSS中水平对齐图像(浮动和显示内联块不起作用) - 堆栈内存溢出...
- hibernate连接池配置
- Spring MVC 中的 forward 和 redirect
- 008_html属性
- matlab怎么设置x轴距,MATLAB及其在电气工程中的应用苏小林第四章.ppt
- 修正discuz发帖首次换行无效的问题
- 7-二进制,十进制,十六进制
- Python——Python3.6.0+Scrapy安装方法(总算没有bug了)
- ActiveReports 报表应用教程 (15)---报表换肤
- 最新!复旦大学邱锡鹏教授等「Transformers全面综述」论文
- mysql 命令 select_Mysql基础命令(二)select查询操作
- 七年级计算机与信息安全教案,计算机与信息安全教案.docx
- data spring 指定时区_听说过spring-data-jdbc么?来个最佳实践
- java循环怎么分析_Java for循环的几种用法分析
- 实用软件工程(张海藩)复习笔记
- 微信小程序打开文档功能
- CSS设置字体为微软雅黑 且 解决用户设备上没有该字体的问题
- 计算机上是如何注明固态硬盘的,笔记本固态硬盘不见了怎么回事_笔记本电脑固态硬盘盘符不显示如何解决-win7之家...
- html5 app 打包,手机h5网站如何快速打包做成APP?
- 剑指OFFER 03-11