【问题标题】:how to get mpeg file format in opencv如何在opencv中获取mpeg文件格式
【发布时间】:2019-08-24 15:00:13
【问题描述】:

我正在使用 opencv 及其函数以“.mpeg”(而不是 .avi)中的单独文件格式录制视频。虽然我已经根据其他网络参考更改了视频的编解码器和大小。我还安装了 ffmpeg。但是对于每个编解码器变体,我都遇到了相同的错误。

[[OpenCV: FFMPEG: tag 0x314d4950/'PIM1' 不支持编解码器 id 1 和格式'mpeg / MPEG-1 Systems / MPEG program stream' [mpeg1video @ 0x1dac700] MPEG1/2 不支持 10/1 fps 无法打开编解码器“mpeg1video”:未指定的错误]]]

\\writeVideo  = new VideoWriter(videoFileName, CV_FOURCC('M','P','E','G') , 10, Size(640,480),true);

。 . . . strcat(newVideoFileName, ".mpeg");

我希望视频文件为 mpeg/mpg 格式,但实际输出不显示录制视频

【问题讨论】:

  • 您使用的是什么操作系统?你是如何/在哪里安装 OpenCV 的?您如何/在哪里安装ffmpeg?你是在 OpenCV 之前还是之后安装 ffmpeg 的?
  • os 是 ubuntu 16。我安装了 opencv-3.2https://jeanvitor.com/installing-linux-opencv-eclipse/ 后我安装了 FFMPEg
  • 我认为您需要安装ffmpeg 之前 OpenCV,因为如果您进行完整的构建/安装,OpenCV 会在安装过程中找到它需要的所有库和东西。我建议您在安装了 ffmpeg 后再次安装 OpenCV。
  • 是否需要安装ffmpeg才能在mpeg中获取格式

标签: opencv video codec mpeg


【解决方案1】:

videoFileName 设置文件格式,CV_FOURCC 设置编解码器。

如果您想要 .mpeg,请使用 videoFileName = "1.mpeg"。

例子:

    cv::VideoWriter vw("1.mpeg", cv::VideoWriter::fourcc('M','P','G','1'), 25, cv::Size(640,480), true);
    if (vw.isOpened())
    {
        cv::Mat rgb(480, 640, CV_8UC3, cv::Scalar(255, 0, 0));
        for (int i = 0; i < 20; ++i)
        {
            vw << rgb;
        }
        rgb = cv::Mat(480, 640, CV_8UC3, cv::Scalar(255, 0, 255));
        for (int i = 0; i < 20; ++i)
        {
            vw << rgb;
        }
        rgb = cv::Mat(480, 640, CV_8UC3, cv::Scalar(0, 0, 255));
        for (int i = 0; i < 20; ++i)
        {
            vw << rgb;
        }
        vw.release();
    }
    else
    {
        std::cout  << "1.mpeg not opened" << std::endl;
    }

【讨论】:

  • 感谢您的回答,但我需要 mpeg 格式和 mpeg 扩展名
  • Mpeg 只是音频和视频的标准容器(如 avi)。但它可以使用不同的编解码器。
  • 好的。我试试这个编解码器可以是 CV_FOURCC('M','J','P','G') 或 CV_FOURCC('x','2','6 ','2')。
  • 试试 CV_FOURCC('M','P','G','1') 或 CV_FOURCC('m','p','1','v')
  • int codec= capture.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','P','G','1')); frame_width = capture.get(CV_CAP_PROP_FRAME_WIDTH); frame_height = capture.get(CV_CAP_PROP_FRAME_HEIGHT); int fps=capture.set(CV_CAP_PROP_FPS,10);//这是部分代码。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多