gpt4 book ai didi

java - OpenCV VideoWriter fourCC Android

转载 作者:行者123 更新时间:2023-12-01 09:23:56 28 4
gpt4 key购买 nike

我在项目中使用适用于 Android 的 OpenCV 3.1 库来处理图像并基于多个单独的 OpenCv::Mat 编译视频文件。

我的问题是找到正确的 fourCC 代码。使用“MJPG”在 Google Nexus 6P (Android 7.0) 上运行良好,但在 Nexus 4 (5.1.1) 或 Galaxy A3 (6.0.1) 上运行不佳。

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

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();

正如我所说,我在 Nexus 6P 上得到了有效的 .avi 文件,但在其他手机上得到了损坏的文件。我知道我的管道的其余部分适用于所有手机,因为我可以毫无问题地保存单个图像(不使用 OpenCV)。

我的问题:是否有一个 fourCC 代码可以在任何手机上运行,​​与制造商无关?

我尝试过但没有成功:“MPEG”、“MP4V”、“PIM1”

感谢您的帮助!

最佳答案

如果您在 onCameraFrame 中使用 mVideoWriter ,则会覆盖它每次初始化,因此使用如下所述的一些条件。

 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());

}

关于java - OpenCV VideoWriter fourCC Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990472/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com