matlab - Matlab - 创建压缩的彩色视频
问题描述
我使用videoWriter
MatLab 来获取我的计算输出。我的问题是这样创建的视频太重了。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);
解决方案
如果您创建一个包含 cdata 和 colormap 字段的结构并将其传递给 VideoWriter 的 writeVideo 函数,它应该能够写入所有支持的文件格式,包括 MPEG-4 文件。Windows 和 Mac 支持 BTW MPEG-4 写入。