主要功能:
1、相册选择图片、视频,支持多选
2、自定义拍照、拍摄10s短视频
3、图片压缩、短视频裁剪、压缩,采用鲁班压缩算法
4、图片、视频预览功能,已在库中处理动态权限问题
请看效果:
hi.gif
Screenshot_20180302-142722.jpg
Screenshot_20180302-142819.jpg
Screenshot_20180302-142911.jpg
Screenshot_20180302-142849.jpg
Screenshot_20180302-142929.jpg
Screenshot_20180302-142954.jpg
Screenshot_20180302-143144.jpg
在第一张gif中没有展示拍照和拍视频,因为用的模拟器背景一坨黑,整个功能模块已经封装到library库中,只需要简单的调用便可以跑起来的啦,项目结构如下:
q.png
我们的主要功能逻辑、界面等均在picture_library中,后面smallVideLib2是一个拍摄小视频专用库,在picture_library中进行调用,视频处理逻辑是比较复杂的:
视频 :
拍摄视频
用smallVideLib2库进行拍摄,采用ffmpeg+x264方案,软编码,拍摄的样式大小可控,输出的就是我们想要的
选择视频
可能大部分为手机自带相机拍摄,基于android sdk MedieaCodec采用硬编码,一般都很大,而且不转码的情况下很多网络播放器无法播放,考虑到实际项目中上传等待时间以及流量的问题,必须进行裁剪二次压缩编码
视频处理流程
1、显示视频列表,大于5分钟的不显示
2、小于10秒可以直接进行压缩上传;大于10秒小于5分钟的视频必须要进行裁剪
3、裁剪过程实际上是对视频进行了 解码解压------拆分------合并------编码压缩 的过程,所以对这个过程通常会是一个耗时操作,微信相册也是如此
4、保存视频