Matlab vision.VideoFileWriter输出太大了

时间:2015-08-21 17:43:20

标签: matlab video video-processing matlab-cvst large-file-support

我在Matlab(R2015a,Windows7)中使用计算机视觉系统工具箱来屏蔽视频文件中的帧并将其写入新的视频文件。通过屏蔽,我用0和1替换大约80%的图像:

videoFileReader = vision.VideoFileReader(fin);
videoFileWriter=vision.VideoFileWriter(fout, ...
    'FileFormat', 'MPEG4', 'FrameRate', videoFileReader.info.VideoFrameRate);
frame = step(videoFileReader);   
frame_new=mask(frame); %user function
step(videoFileWriter, frame_new);  

原始帧和修改帧的大小(1080 x 1920 x 3)和格式(单个)保持不变。然而,蒙面视频比原始视频大得多,例如屏蔽后,1GB原始视频变为近4GB。无法打开这些大型新文件(Windows 7,VLC媒体)。 Handbrake也不会将它们视为合法的视频文件。

当我仅屏蔽大约20%的图像时,屏蔽的视频仍然很大(高达2.5Gb),但打开它们没有问题。

我尝试添加' VideoCompressor' MJPEG Compressor',但这会发出警告。

videoFileWriter=vision.VideoFileWriter(fin, 'FileFormat', 'MPEG4', ...
'FrameRate', videoFileReader.info.VideoFrameRate, 'VideoCompressor', 'MJPEG Compressor'); 
 <...>   
 Warning: The VideoCompressor property is not relevant in this configuration of the System object.

我们有视频数据的结核病来识别,所以任何建议都会非常感激。 谢谢!

2 个答案:

答案 0 :(得分:0)

拉​​里萨,

可以通过调整系统对象的Quality参数来控制输出MPEG-4文件的大小。这是0-100的值,用于控制输出比特率。因此,质量越高,文件越大。默认值为75.系统对象使用Microsft API创建MPEG-4文件。

其次,您需要调用release(videoFileWriter)来完成文件的编写。我只是想确认你是在做这个并且为了这个代码片段而忽略了它。

VideoCompressor属性对MPEG-4文件格式无效,因为要使用的压缩器是固定的。只有在写出AVI文件时才能选择该属性。但是,您可能无法达到与MPEG-4相同的压缩级别。

希望这有帮助。

的Dinesh

答案 1 :(得分:0)

在此处下载ffmpeg:https://git.ffmpeg.org/ffmpeg.git

对于Windows,打开bash终端并运行:

cat <path to folder with images>/*.png | <path to ffmpeg bin folder>/ffmpeg.exe -f image2pipe -i - output.mkv

对于unix,做类似但下载适当的ffmpeg版本。

我尝试了一个7.90GB的文件夹,得到了一个6.4MB的.mkv文件。像魅力一样工作!