【问题标题】:How to generate a video from matlab without codec errors?如何从 matlab 生成没有编解码器错误的视频?
【发布时间】:2011-02-19 12:00:57
【问题描述】:

使用我的 Windows 7 64 位机器,我正在尝试使用序列从 Matlab 生成一个 avi 文件

aviobj = avifile('test.avi', 'fps', 25);
% a loop of aviobj = addframe(aviobj, frame)
close(aviobj)

但是,生成的文件已损坏 - 使用 VLC 时它看起来有剪裁且颜色不好,使用 Media Player 时它是黑屏,而使用 Divx Plus 播放器时它看起来不错,但会生成警告。

我尝试指定其他编解码器类型(通过avifile('test.avi', 'fps', 25, 'compression', 'TYPE'),但 Matlab 似乎永远无法找到该编解码器 - 我尝试过 Indeo 和 cvid 以及 MSVC 和 MRLE 等等,但 Matlab 只生成一个“不支持的压缩方法”警告,然后在调用 addframe 时彻底失败。

我该如何解决上述问题,或者,是否有一种不同的简单方法可以通过一次添加一帧来生成 avi?

【问题讨论】:

  • 安装 xvid 并指定编解码器

标签: matlab windows-7 video-encoding


【解决方案1】:

如何从 matlab 生成没有编解码器错误的视频?

尝试使用 mmwrite

http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite

【讨论】:

    【解决方案2】:

    好吧,经过几次在线搜索和实验,看起来其他人也遇到了这个问题,并建议只使用不同的程序来压缩它,这也应该可以修复文件,所以我就是这样做的:

    1. 生成了一个未压缩的文件
    2. VirtualDub打开它(不错的开源视频软件,不需要安装)
    3. 从视频菜单中,我选择了“压缩”并选择了“Microsoft Video 1”选项
    4. 通过另存为菜单选项保存文件

    现在在我尝试过的所有播放器中看起来都是正确的,并且文件大小更小。

    【讨论】:

      【解决方案3】:

      您所描述的 VLC 中发生的情况可能与编解码器不支持的分辨率有关。尝试是2,4,8,16 的倍数的分辨率,看看有什么效果。 VirtualDub 可能会以某种方式解决这个问题。

      否则真的很简单。您所要做的就是:

      aviobj = avifile('example.avi', 'compression', 'none', 'fps', 25);
      for i=1:1000
          %generating the filenames
          filename = strcat(FolderName,'/frame', sprintf('%05d', i),'.bmp'); 
          I = imread(filename);
          aviobj = addframe(aviobj,I);                                               
      end;
      aviobj = close(aviobj);
      

      【讨论】:

        【解决方案4】:

        我知道我正在回复一个非常老的帖子,但我帮助了我的兄弟并学到了一些可能对其他人有所帮助的东西:

        我哥哥有一个非常小的视频,是 MRI 扫描的结果,51x51 像素。使用配置文件“未压缩的 AVI”的 VideoWriter 有效,但在 VLC 中播放效果不佳。 Virtualdub 也抛出了错误。

        修复它的方法是确保视频尺寸是 2 的倍数。 一个 96x96 的视频可以正常播放,也可以在 virtualdub 中转码为 XVID。

        另外,对于非常小的视频,在 VLC 中将视频输出模式设置为wingdi。使用 OpenGL 或 Direct3D 和叠加模式,GPU 将在两者之间进行缩放和插入像素。

        【讨论】:

          猜你喜欢
          • 2019-01-14
          • 2022-07-22
          • 2021-08-17
          • 2014-03-30
          • 1970-01-01
          • 2016-01-19
          • 1970-01-01
          • 2011-06-16
          • 1970-01-01
          相关资源
          最近更新 更多