1

我需要执行看似简单的任务,将 3 个文件彼此相邻堆叠。它们都是相同的:.avi 容器、320x240、4:3、25 fps、GeoVision Advanced MPEG-4 GEO 编解码器。我安装了 GeoVision 编解码器(http://www.geovision.com.tw/english/5_8.asp# - 选择“其他实用程序”),所以我的系统(Windows 媒体播放器、媒体播放器经典)可以播放文件。此外,我可以在 Virtual Dub 中打开并使用它们。我安装了 AviSynth 并编写了简单的脚本来将它们堆叠在一起

h1 = AVISource("Event20150423075842001.avi")

h2 = AVISource("Event20150423075842002.avi")

h3 = AVISource("Event20150423075848003.avi")

StackHorizontal(h1, h2, h3)

现在,当我将其另存为 .avs 然后使用 VirtualDub 打开它时,我看到三个视频很好地彼此相邻,但颜色很奇怪,视频的某些部分是颠倒的,一切都只是..错误 - 见截图http://www.linkfile.de/download-46f71057ed130f9be29510f68ce4ee71.php。首先,我认为这与 avisynth 采用错误的编解码器有关,所以我在 gmp4 上强制使用它(您也可以在屏幕截图中看到),但结果是一样的。我现在还安装了 Avisynth+ 以及 VirtualDubMod。当我在 VDMod 中打开 .avs 时,我得到“找不到 YV24 格式的解压缩器”,但它仍然打开看起来像的视频虽然好一点(但是当我制作直接流复制并保存它,然后在 MPC 中播放它时,它看起来与第一个屏幕截图上的完全相同)。所以这个错误将我指向与色彩空间相关的东西。现在我的问题:

  • 如何找出我的文件的格式?YUV24,YUV12,..?
  • 然后,我如何告诉 Avisynth 使用 VirtualDubMod 可以处理的格式?
  • 或者我怎样才能让 VirtualDub 处理 YUV24?我只是缺少编解码器吗?我的思路是否在正确的轨道上,或者我的问题完全不同?

我还发现了这个相关的线程:使用系统安装的专有编解码器编辑/解码 AVI 文件,但是使用 avisynth 和 ffmpeg,我得到了与使用 VirtualDub 类似的结果。

我不能使用先转换所有文件然后在第二步中进行堆叠的解决方案 - 因为我必须处理的实际文件大约是 180 个视频,每个视频长 8 小时,它所消耗的时间会持续与我的可能性无关..

在过去的一周里,我真的一直在寻找解决方案,我想我已经接近了,但遗憾的是我对编程的了解还不够,无法自己解决它。所以我也想为任何明显的问题找借口我的解释中的愚蠢;)我非常感谢任何帮助

祝大家过得愉快

编辑:所以我有更多信息和一个示例文件,我无法在这篇文章中链接 -.- 因为我 - 再次 - 没有足够的声誉,非常好。我会尝试评论并发布链接:)

这是 info() 命令带给我的:色彩空间:YV24,基于字段(分离)视频:否,奇偶校验:底场优先,视频音高:320 字节,音频:否,检测到 CPU:x87 MMX ISSE SSE4.1 SSSE3

4

1 回答 1

1

我能够重现您的问题。显然 AviSource 默认选择了错误的像素格式,它应该是“RGB24”而不是“YV24”。

要解决此问题,您需要将参数添加pixel_type="RGB24"到每个 AviSource 调用,如下所示:

AVISource("Event20150423075842001.avi", pixel_type="RGB24")

或者,您可以尝试使用 DirectShowSource 而不是 AviSource,它立即对我正常工作。

于 2015-06-22T11:04:21.340 回答