首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV VideoWriter fourCC Android

OpenCV VideoWriter fourCC Android
EN

Stack Overflow用户
提问于 2016-10-12 04:20:43
回答 2查看 3.2K关注 0票数 0

在我的项目中,我正在使用OpenCV 3.1Library处理图像并根据几个单独的OpenCv::Mat编译一个视频文件。

我的问题是找到正确的fourCC代码。在GoogleNexus6P(Android7.0)上使用"MJPG“很好,但在Nexus 4 (5.1.1)或Galaxy A3 (6.0.1)上却不起作用。

在代码中,images是一个数组,包含作为字节数组的图像数据。

代码语言:javascript
复制
VideoWriter videoWriter = new VideoWriter(filePath, VideoWriter.fourcc('M','J','P','G'), FPS, new Size(w,h));
videoWriter.open(filePath, VideoWriter.fourcc('M','J','P','G'), FPS, new Size(w,h));

for (int i = 0; i < images.size(); i++) {
     byte[] image = images.get(i);
     Mat rgbMat = new Mat(h,w,CvType.CV_8UC3);
     rgbMat.put(0,0,image);

     videoWriter.write(rgbMat);
     rgbMat.release();

}

videoWriter.release();

正如我所说的,我在Nexus6P上得到了一个有效的.avi文件,但是在其他手机上得到了一个损坏的文件。我知道我的管道的其余部分都可以在所有手机上运行,因为我可以保存单个图像,而不会出现问题(不使用OpenCV)。

我的问题:是否有一个fourCC代码应该在任何电话上工作,独立于制造商?

我尝试了但没有成功:'MPEG','MP4V','PIM1‘

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2019-03-29 13:36:09

如果您在内部使用mVideoWriter,onCameraFrame每次都会重写它,因此使用下面提到的一些条件。

代码语言:javascript
复制
 if (mVideoWriter == null) {
            mVideoWriter = new VideoWriter();
            Log.d(TAG, "mVideoWriter good : " + mVideoWriter);
            mVideoWriter.open(file_path.toString() + "/" + System.currentTimeMillis() + ".avi", VideoWriter.fourcc('M', 'J', 'P', 'G'), 30.0, mRgba.size());
            Log.i(TAG, "onCameraFrame: recordFilePath");


        }
        if (!mVideoWriter.isOpened()) {
            Log.w(TAG, "onCameraFrame: open");
            mVideoWriter.open(path.toString() + "/" + System.currentTimeMillis() + ".avi", VideoWriter.fourcc('M', 'J', 'P', 'G'), 30.0, mRgba.size());

        }
票数 1
EN

Stack Overflow用户

发布于 2019-04-04 15:30:04

问题是安卓系统中的VideoWriter只支持.avi格式。下面是一个示例解决方案。

代码语言:javascript
复制
if (videoWriter.isOpened() == false) {
    Log.w("wewe", "som tu OPEN");
    videoWriter.open("/sdcard/movies/video.avi", VideoWriter.fourcc('M', 'J', 'P', 'G'), 25.0D, colorMat.size());
} else {
    videoWriter.write(colorMat);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39990472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档