文章目录
  1. 1. 录制方视频
    1. 1.1. a. 摒弃原生接口,使用FFmpeg或OpenCV等方式进行录制
    2. 1.2. b. 使用原生API录制
  2. 2. 本地视频压缩
  3. 3. m3u8解决方案
  4. 4. 视频滤镜、水印

现在市面上视频App有很多,例如:蝌蚪音客、美拍、小影还有最近火起来的小咖秀。这类App的技术难点基本都是在音视频处理这一块,iOS对多媒体处理的支持还算比较丰富,但是Android就会差很多。这里总结蝌蚪音客在多媒体处理上遇到的问题,供大家参考下。

录制方视频

现在市面上的视频应用的视频尺基本全部都是1:1的,这对于Android开发者来说就是一个比较棘手的问题,Android原生Recorder类并不支持视频比例的设置。所以只能想其他办法,目前常用的办法大致可以分为2种:

a. 摒弃原生接口,使用FFmpeg或OpenCV等方式进行录制

这类方法的缺点在于对开发者技术要求较高,FFmpeg和OpenCV移植麻烦,多机型兼容复杂并且要求开发者一定程度的C语言功底,但是最难解决的问题是性能问题,FFmeg和OpenCV都是开源方案,如果要真正达实用级别往往还需要优化定制,这对于熟练于做Android展现的开发者来说完全就是一个新的领域。蝌蚪音客就尝试过这种方案,结果视频的码率只能做到15fps左右,这明显是不够的。

b. 使用原生API录制

在录制界面使遮罩的方式给用户一种1:1的错觉。在预览视频时,使用FFmpeg进行视频裁剪。如果团队没有驾驭FFmpeg的能力,我个人建议使用这种方式。对于视频录制功能来说相对简单,而且裁剪命令优化后基本可以可以做到视频预览一遍也就基本裁剪完毕。

本地视频压缩

本地视频压缩除了FFmpeg之外目前还没有了解到有其他方案,而且如果使用上面说到的b方案进行视频录制的话,本身就已经引入了FFmpeg。那就不用白不用了,但是压缩命令的优化可是一门学问,使用x264还是mpeg4,码率,分辨率,帧频,文件大小等都会影响到压缩速度而且差别相当大。

m3u8解决方案

绝对不建议创业公司自己编写播放器,绝对无底洞,还不如直接使用MP4文件格式。m3u8国内比较出名的是vitamio,还有一些韩国人的技术方案。但是vitamio的开源版本感觉很久没有更新,而且商业版本的授权动则几十万,这里我推荐使用百度媒体云的m3u8的解决方案,代码家的AnimeTaste使用的就是这个,完全免费,项目质量还算稳定。但是只能做成单例,如果想集成到listview中,需要费点事。

视频滤镜、水印

先说水印吧,如果集成了FFmpeg的话,直接在视频处理的过程中可以并行处理水印。如果你需要视频滤镜的功能,那么恭喜你,赶紧花钱招大牛吧。据说小影的开发Leader在视频处理领域里沉浸了20多年。目前这部分笔者还是在了解阶段,目前看到的方案有使用GPUImage进行处理的,但是无奈对图像处理的知识掌握的太少,迟迟没有动手。

另外,7月中旬阿里百川开了发布会,宣布将和趣拍合作推出多媒体SDK,在和趣拍的沟通中,感觉趣拍团队的技术支持和响应速度还是很不错的,不过现在推出的SDK扩展性还有待提高,不过趣拍团队也一直在做迭代。个人还是比较看好的。

https://www.zybuluo.com/lichangadd/note/148109


本文出处程序员头条:http://www.iswifting.com/2015/11/11/android-video-record-solution/
转载请在开头注明本文出处。

欢迎关注本站微信公众号:为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等.并不定期奉送各种福利.
微信公众号猿圈:CodePush

文章目录
  1. 1. 录制方视频
    1. 1.1. a. 摒弃原生接口,使用FFmpeg或OpenCV等方式进行录制
    2. 1.2. b. 使用原生API录制
  2. 2. 本地视频压缩
  3. 3. m3u8解决方案
  4. 4. 视频滤镜、水印