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
在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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件