您的位置:首页 > 移动开发 > Android开发

android_图片转视频_image2video

2017-01-07 10:50 351 查看
因为项目需求,之前写了一个用图片转视频的博客,之前是用的ffmpeg去实现的,但是在6.0的权限下这个动态库就有一些不好使了.

在6.0之后这个会因为出现动态寻址的问题无法使用一些so库,而且我们的项目主要是为了生成视频去让微信分享给朋友圈,但是ffmpeg生成的视频虽然也是mp4的格式,但是还是有一些问题,导致了不能分享,现在给大家分享一个能分享到微信朋友圈的小视频制作方案.

此次,将会用到另外的一个开源框架去做,这个框架现在好像还不是很火,给大家介绍一下(jcodec):

1.框架依赖compile 'org.jcodec:jcodec-android:0.1.9'
这个框架原本是javaee用的,现在可以支持android了.
2.在安卓中的提供的API主要是SequenceEncoder.class
这个类.然后这个类只是一个兼容性过度类,很多方法都在父类中,所以导致了有些不灵活.所以在使用的时候是建议集成这个类去重写一些必要的方法.
3.图片转换的代码主要如下:

public static void Image2Mp4(Context context , String videoName){
try {
Logger.e("performJcodec: ", "执行开始");
SequenceEncoderMp4 se = null;
File file = new File(Constants.FILE_SCREEN_FLODER);

File out = new File(Constants.FILE_VIDEO_FLODER, videoName + ".mp4");
se = new SequenceEncoderMp4(out);

File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (!files[i].exists()) { break; }
Bitmap frame = BitmapUtil.decodeSampledBitmapFromFile(files[i].getAbsolutePath() , 480 , 320);

se.encodeImage(frame);
Logger.e("performJcodec: ", "执行到的图片是 " + i);
}
se.finish();
Logger.e("performJcodec: ", "执行完成");
//发送广播通知挂载文件
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(out)));
} catch (IOException e) {
Logger.e("performJcodec: ", "执行异常 " + e.toString());
}
}
这个框架效率还是比较高的,而且可控性比较好,自己调整一下就OK啦.下面贡献源码:image2video
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息