Matlab 认为它编写的 AVI 已损坏
Matlab thinks an AVI it's written is corrupt
我正在使用 matlab 与使用 mex 的科学相机连接,我的 matlab 程序使用 VideoWriter()
将文件写入光盘。相机支持 RGB,如果我这样写文件,视频就可以了。但是,对于当前的应用程序,我需要灰度图像,所以我使用 rgb2gray()
来转换它。不幸的是,当分析代码再次尝试读取视频文件时,出现错误:
Error using VideoReader/init (line 450)
Unable to read the file. The file appears to be corrupt.
并尝试使用 VLC 读取视频确认它已损坏。我的代码中灰度版本和彩色版本之间的唯一区别是:
frame = rgb2gray(frame);
我的整个代码编写部分是:
vid = VideoWriter('testVid.avi');
vid.FrameRate = framerate;
vid.Quality = 100;
open(vid);
for i = 1 : frames;
%read frame data into variable 'frame'
frame = rgb2gray(frame);
writeVideo(vid,frame);
end
我花了太长时间来解决这个问题,有什么想法吗?
您需要关闭视频对象,在写完最后一帧后使用close(vid)
。
我正在使用 matlab 与使用 mex 的科学相机连接,我的 matlab 程序使用 VideoWriter()
将文件写入光盘。相机支持 RGB,如果我这样写文件,视频就可以了。但是,对于当前的应用程序,我需要灰度图像,所以我使用 rgb2gray()
来转换它。不幸的是,当分析代码再次尝试读取视频文件时,出现错误:
Error using VideoReader/init (line 450)
Unable to read the file. The file appears to be corrupt.
并尝试使用 VLC 读取视频确认它已损坏。我的代码中灰度版本和彩色版本之间的唯一区别是:
frame = rgb2gray(frame);
我的整个代码编写部分是:
vid = VideoWriter('testVid.avi');
vid.FrameRate = framerate;
vid.Quality = 100;
open(vid);
for i = 1 : frames;
%read frame data into variable 'frame'
frame = rgb2gray(frame);
writeVideo(vid,frame);
end
我花了太长时间来解决这个问题,有什么想法吗?
您需要关闭视频对象,在写完最后一帧后使用close(vid)
。