Android视频录制及提取图片操作

本人也是初学者,但经过长时间的努力,弄出了点成果。在这里总结一下,免得以后会忘掉。现在实现的功能是拍摄视频,并对视频进行处理。将视频提取出指定数目的图片。

在保存视频的时候,会遇到编码格式的问题,楼主之前也被这个问题困扰了好久,对于不同的机型,编码格式是不同的。所以我们在保存的时候应该获取使用手机的编码格式:

//获取当前手机视频的编码格式

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
codec = profile.videoCodec;

得到的codec是int类型,对应的是H263、H264、Mp4编码格式。设置编码格式的时候就可以直接用:

// 设置视频文件的输出格式(必须在设置声音编码格式、图像编码格式之前设置)
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 设置图像编码的格式
mRecorder.setVideoEncoder(codec);

安卓本身提供了对视频提取帧的方法:

Bitmap bitmap = retriever.getFrameAtTime((23-i) * 125 * 1000,MediaMetadataRetriever.OPTION_CLOSEST); 

这是根据时间来对视频提取帧数。得到的是bitmap可用输出流保存为JPEG或者PNG的格式:

File jpgFile = new File(fileFolder, i + ".png");

FileOutputStream fos = null;
try {
fos = new FileOutputStream(jpgFile);
// 第一个参数:格式 第二个参数:品质 第三个参数:
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}

如果是PNG,那后面的参数100基本舍不设置都没多大影响。如果是JPEG,则后面的参数代表的是保存图片的质量。100表示原图片品质,越小品质越差。我在整个线程中没有用到按钮点击,所以当视频拍摄完毕之后,需要自动的去处理图片,就可以写一个延迟的线程。等拍摄完毕自动处理视频,将图片保存到SD卡中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值