使用 Avisynth 和 VirtualDub 堆叠 3 个 gmp4 文件,导致颜色错误和文件失真

Stacking 3 gmp4-files using Avisynth and VirtualDub, results in wrong colors and distorted files

我需要执行将 3 个文件并排堆叠的看似简单的任务。它们完全相同:.avi Container、320x240、4:3、25 fps、GeoVision Advanced MPEG-4 GEO 编解码器。 我安装了 GeoVision 编解码器 (http://www.geovision.com.tw/english/5_8.asp# - select "other utilities"),因此我的系统(windows 媒体播放器、经典媒体播放器)可以播放文件。此外,我可以在 Virtual Dub 中打开并使用它们。我安装了 AviSynth 并编写了将它们堆叠在一起的简单脚本

h1 = AVISource("Event20150423075842001.avi")

h2 = AVISource("Event20150423075842002.avi")

h3 = AVISource("Event20150423075848003.avi")

StackHorizontal(h1, h2, h3)

现在,当我将它另存为 .avs 然后使用 VirtualDub 打开它时,我看到三个视频很好地并排放置,但颜色很奇怪,部分视频上下颠倒,一切都只是 . .wrong - 请参阅屏幕截图 http://www.linkfile.de/download-46f71057ed130f9be29510f68ce4ee71.php。首先我认为它与 avisynth 采用了错误的编解码器有关,所以我将其强制为 gmp4(如您在屏幕截图中所见),但结果是一样的。我现在还安装了 Avisynth+,以及 VirtualDubMod。 当我在 VDMod 中打开 .avs 时,我得到 "couldn't locate decompressor for format YV24",但它仍然打开 看起来 好一点的视频(但是当我制作直接流复制并保存时它,然后在 MPC 中播放它看起来与第一个屏幕截图中的完全一样)。所以这个错误将我指向与色彩空间相关的东西。 现在我的问题:

我也找到了这个相关的线程:Editing/Decoding AVI files using system-installed proprietary codecs,但是使用 avisynth 和 ffmpeg,我得到了与 VirtualDub 相似的结果。

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

过去一周我确实在寻找解决方案,我想我已经很接近了,但遗憾的是我对编程的了解还不够多,无法自己解决..所以我也想要原谅我解释中任何明显的愚蠢行为;) 我非常感谢任何帮助

大家玩得开心

编辑: 所以我有更多的信息和一个示例文件,我不能在 post 中 link -.- 因为我 - 再次 - 没有足够的声誉,非常好。我会尝试评论 post links :)

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

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

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

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

或者您可以尝试使用 DirectShowSource 而不是 AviSource,它对我来说马上就可以正常工作。