1

我正在使用 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。这些大的新文件无法打开(Win​​dows 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.

我们有 TB 的视频数据需要去识别,所以任何建议都将不胜感激。谢谢!

4

2 回答 2

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 文件。奇迹般有效!

于 2017-02-13T14:27:02.403 回答
0

拉里萨,

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

其次,您需要调用 release(videoFileWriter) 来完成文件的写入。我只是想确认您正在这样做,并且出于此代码段的目的而省略了它。

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

希望这可以帮助。

迪内什

于 2015-08-24T15:06:57.813 回答