javacv解码、录制视频,保存图片
2015-12-23 18:33
447 查看
貌似解码得到的每帧图像是RGB24的,要保存Bitmap.Config.ARGB_8888,要转一下cvCvtColor(img,tempImage,CV_BGR2RGBA)。
mGrabber = new FFmpegFrameGrabber(mMvPath);mGrabber.start();opencv_core.IplImage tempImage = opencv_core.IplImage.create(mGrabber.getImageWidth(), mGrabber.getImageHeight(), opencv_core.IPL_DEPTH_8U, 4);Bitmap bmp = Bitmap.createBitmap(mGrabber.getImageWidth(),mGrabber.getImageHeight(), Bitmap.Config.ARGB_8888);String fileName = mMvPath.replace(".mp4", "_edited.mp4");FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(fileName, mGrabber.getImageWidth(), mGrabber.getImageHeight(),mGrabber.getAudioChannels());recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); //avcodec.AV_CODEC_ID_H264 //AV_CODEC_ID_MPEG4recorder.setFormat("mp4");recorder.setFrameRate(mGrabber.getFrameRate());recorder.setSampleFormat(mGrabber.getSampleFormat()); //recorder.setSampleRate(mGrabber.getSampleRate());recorder.setFrameRate(mGrabber.getFrameRate());recorder.start();while (true) {Frame frame = mGrabber.grabFrame();if (frame == null)break;opencv_core.IplImage img = frame.image;//保存BMPcvCvtColor(img,tempImage,CV_BGR2RGBA);IntBuffer intBuf = tempImage.getIntBuffer();bmp.copyPixelsFromBuffer(intBuf);ImageUtil.saveBitmap(bmp);recorder.record(img);//录制}recorder.stop();recorder.release();mGrabber.stop();if (mEvent != null){mEvent.onDecordFinish();}}catch (Exception e){e.printStackTrace();}
相关文章推荐
- Joda-time是java处理时间非常棒的jar
- 深入浅出Mybatis-与Spring集成
- java完美equals方法代码段
- 使用Maven新建Java Web项目(八)
- Spring 注释实现任务调度
- Spring in Action读书笔记 (二)
- 1.01 【基础知识之基础类型】 java实现中文汉字的首字母排序
- JAVA集合类练习
- JAVA语言 关键字
- 了解Spring @Around使用及注意
- myeclipse颜色设置问题
- java中23种常用设计模式
- java version
- Java 类加载器
- java 运行堆内存分析
- Spring知识点
- Java synchronized详解
- Java笔记 第四章 (4)Java面向对象编程基础 (实战练习)
- springmvc实现网站限流
- Java笔记 第四章(3) Java面向对象编程基础 第三部分(对象概述)