首页 > 解决方案 > Matlab - 创建压缩的彩色视频

问题描述

我使用videoWriterMatLab 来获取我的计算输出。我的问题是这样创建的视频太重了。7k 帧,每帧 1000x300 像素,重约 2GB,这实在是太多了。

我的视频需要一些颜色,所以我这样做:

 v=VideoWriter(vidName, 'Indexed AVI');
 v.FrameRate=25;

 map=[ 0 0 0       % (1) Black
       1 0 0       % (2) Red
       1 1 1       % (3) White
       0 1 0       % (4) Green
       0 0 1       % (5) Blue
       1 0 1 ];    % (6) Purple
 v.Colormap=map;
 open(v);

文档Indexed AVI视频不能压缩,Motion JPEG 2000视频可以压缩,但不能着色。是赖吗?

对于压缩和彩色视频,似乎有MPEG-4类型。有这个线程的答案谁谈论它。但我不明白什么是f(它是什么类型的对象,......)。此外,他放入的数据是图像(我猜是由 MatLab 函数创建的)。但我只有一个网格,它代表每个像素。我可以直接使用这个网格来设置数据f吗?


编辑:

我存储数据的方式:

grid=ones(1000, 300);
...
% Some computation
...
writeVideo(v, grid);

标签: matlabvideocolorscompression

解决方案


如果您创建一个包含 cdata 和 colormap 字段的结构并将其传递给 VideoWriter 的 writeVideo 函数,它应该能够写入所有支持的文件格式,包括 MPEG-4 文件。Windows 和 Mac 支持 BTW MPEG-4 写入。


推荐阅读