我需要执行看似简单的任务,即将3个文件堆叠在一起。它们都是相同的:.avi Container,320x240,4:3,25 fps,GeoVision Advanced MPEG-4 GEO编解码器。 我安装了GeoVision编解码器(http://www.geovision.com.tw/english/5_8.asp# - 选择“其他工具”),因此我的系统(windows media player,media player classic)可以播放这些文件。此外,我可以在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中播放它看起来与第一个屏幕截图上看的完全相同)。所以这个错误指向了与颜色空间相关的东西。 现在我的问题:
我也找到了这个相关的帖子:Editing/Decoding AVI files using system-installed proprietary codecs,但是使用avisynth和ffmpeg,我得到的结果与VirtualDub类似。
我无法使用首先转换所有文件的解决方案,然后在第二步中进行堆叠 - 因为我必须使用的实际文件大约是180个视频,每个视频都是8小时,消耗时间与我的可能性毫无关系......
过去一周我真的找了解决方案,我觉得我很接近,但遗憾的是我对自己的编程知之甚少,所以我也想借口。所以我也想借口对于我的解释中任何明显的愚蠢;) 我非常感谢任何帮助
每个人都玩得开心
编辑: 所以我有一些更多的信息和一个示例文件,我无法在此帖子中链接 - 因为我 - 没有足够的声誉,非常好。我会尝试发表评论并发布链接:)
这是info()命令给我带来的: 色彩空间:YV24, FieldBased(分离)视频:不, 平价:底场第一, 视频间距:320字节, 音频:没有, 检测到CPU:x87 MMX ISSE SSE4.1 SSSE3
答案 0 :(得分:1)
我能够重现你的问题。显然,AviSource默认选择错误的像素格式,它应该是“RGB24”而不是“YV24”。
要解决此问题,您需要为每个AviSource调用添加参数pixel_type="RGB24"
,如下所示:
AVISource("Event20150423075842001.avi", pixel_type="RGB24")
或者您可以尝试使用DirectShowSource而不是AviSource,它可以立即为我正常工作。