首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓系统中的OpenCV3.2 VideoWriter

安卓系统中的OpenCV3.2 VideoWriter
EN

Stack Overflow用户
提问于 2017-01-13 10:18:09
回答 1查看 944关注 0票数 2

我在我的项目中使用OpenCV 3.2Library来保存视频,但是它不能工作,没有错误,也没有文件。这是我在onCameraFrame中的代码

代码语言:javascript
复制
     if (isRecord) {
        if (mVideoWriter == null) {
            mVideoWriter = new VideoWriter(recordfilepath(), VideoWriter.fourcc('M','J','P','G'), 15, mRgba.size());
        }
        if (!mVideoWriter.isOpened()) {
            mVideoWriter.open(recordfilepath(), VideoWriter.fourcc('M','J','P','G'), 15, mRgba.size());
        }

        if (!mVideoWriter.isOpened()) {
            Log.w(TAG, "onCameraFrame: open fail!");
        }

        mVideoWriter.write(mRgba);
    }

看来mVideoWriter是不开放的。那么,我如何记录视频使用Opencv3.2 VideoWriter呢?

谢谢你的帮助!

更新:I将文件名从.mp4更改为.avi,然后它工作了!但是文件没有声音,屏幕也是黑色的,我不知道为什么。

我的英语太差了。朋友..?

update2:,我成功了。这是我的密码

代码语言:javascript
复制
    if (isRecord) {

        Log.w(TAG, "onCameraFrame: 录制");
        if (mVideoWriter == null) {
            Log.w(TAG, "onCameraFrame: 初始化");
            //'P','I','M','1'
            // 'M','P','E','G'
            // 'M','J','P','G'
            mVideoWriter = new VideoWriter(recordfilepath(), VideoWriter.fourcc('M', 'J', 'P', 'G'), 25.0D, mRgba.size());
            mVideoWriter.open(recordfilepath(), VideoWriter.fourcc('M', 'J', 'P', 'G'), 25.0D, mRgba.size());
            Log.i(TAG, "onCameraFrame: recordFilePath" + recordfilepath());
        }
        if (!mVideoWriter.isOpened()) {
            Log.w(TAG, "onCameraFrame: open");
            mVideoWriter.open(recordfilepath(), VideoWriter.fourcc('M', 'J', 'P', 'G'), 25.0D, mRgba.size());
        }

        mVideoWriter.write(mRgba);
        Log.w(TAG, "onCameraFrame: 写入中 " + mRgba.toString());
    } else {
        if (mVideoWriter != null) {
            mVideoWriter.release();
        }
    }


    private String recordfilepath() {
    //        ongetTime();
    File sddir = Environment.getExternalStorageDirectory();
    File vrdir = new File(sddir, folder_name);
    mTimeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File file = new File(vrdir, "KLI_" + mTimeStamp + ".avi");
    String filepath = file.getAbsolutePath();
    Log.e("debug mediarecorder", filepath);
    return filepath;
}
EN

回答 1

Stack Overflow用户

发布于 2021-07-15 09:00:36

代码语言:javascript
复制
cv::VideoWriter writer;
writer.open("your_mp4_file_path.mp4", cv::VideoWriter::fourcc('H', '2', '6', '4'),
                    15, //framerate
                    cv::Size(720, 1280),
                    true);
writer << mat_frame;

// remember writer.release() when finish

Android平台,opencv4.5.2和ffmpeg + openh264,对我来说很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41632203

复制
相关文章

相似问题

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