【问题标题】:Matlab vision.VideoFileWriter output is too bigMatlab vision.VideoFileWriter 输出太大
【发布时间】:2015-11-15 18:08:30
【问题描述】:

我在 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 的视频数据需要去识别化,因此我们非常感谢您提出任何建议。 谢谢!

【问题讨论】:

  • 你是否统一屏蔽所有帧?使用蒙版,您可以获得局部压缩,但您可能会在蒙版边缘失去一些帧间相关性。
  • 我对所有帧都应用了相同的算法,这被认为是统一的吗?蒙版部分为 0/1,但蒙版区域的帧与帧之间略有变化。

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


【解决方案1】:

在这里下载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 文件。像魅力一样工作!

【讨论】:

    【解决方案2】:

    拉里萨,

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

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

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

    希望这会有所帮助。

    饭菜

    【讨论】:

    • Dinesh,感谢您的意见。文件确实被释放了,所以这不是问题。我在哪里指定质量参数?它似乎不是 vision.VideoFileWriter 中的一个选项。
    • videoFileWriter=vision.VideoFileWriter(fin, 'FileFormat', 'MPEG4', 'Quality', 20);看起来他们没有列出的文档中有一个错误:(尝试帮助 vision.VideoFileWriter
    猜你喜欢
    • 2013-04-07
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多