您的位置:首页 > 编程语言 > Java开发

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();}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: