дк вопрос не о АвиСинте, а о виртуал-дабе
ну вщм-то задачу уже решил: написал скриптами. Просто пришлось еще Ависинт ставить, а наверно можно было бы без него обойтись. Он был нужен ТОЛЬКО для того, чтобы открыть левый и правый каналы из 3д файла, а потом объединить их в один вертикальный кадр с сжатием по высоте.
вот для истории, вдруг кому пригодится:
файл dubbing3D.cmd
@echo off
rem %1 - job file
rem %2 - avi file
set jf=%~1
set srcfile=%~2
set resfileL=%~dpn2_l_deshake%~x2
set resfileR=%~dpn2_r_deshake%~x2
set resfile=%~dpn2_deshake%~x2
set avsfile=%~dpn2.avs
set avsfileL=%~dpn2_l.avs
set avsfileR=%~dpn2_r.avs
echo Job File: %jf%
echo Avi File: %srcfile%
rem готовим файлы avs
rem выдергиваем ЛЕВЫЙ файл
echo>> %avsfileL% vLeft = AviSource("%srcfile%", vtrack = 0)
echo>> %avsfileL% return vLeft
rem выдергиваем ПРАВЫЙ файл
echo>> %avsfileR% vRight = AviSource("%srcfile%", vtrack = 1)
echo>> %avsfileR% return vRight
rem вертикально соединяем два ОБРАБОТАННЫХ файла
echo>> %avsfile% vLeft = AviSource("%resfileL%")
echo>> %avsfile% vRight = AviSource("%resfileR%")
echo>> %avsfile% F = StackVertical(vLeft, vRight)
echo>> %avsfile% Z = VerticalReduceBy2(F)
echo>> %avsfile% return Z
rem готовим файл джоба
if exist %1 goto skip_create
rem echo> %jf% // VirtualDub job list (Sylia script format)
rem echo>>%jf% // This is a program generated file -- edit at your own risk.
rem echo>>%jf% // $numjobs 1000
:skip_create
:addfile
set srcfile1=%~dpn2
set srcfile1=%srcfile1:\=\\%
echo %srcfile1%
>> %jf% echo // $job "Job %~nx2"
>> %jf% echo // $script
>> %jf% echo.
>> %jf% echo declare fName;
>> %jf% echo.
>> %jf% echo fName = "%srcfile1%";
>> %jf% echo.
>> %jf% echo VirtualDub.Open(fName + ".avi",0,0);
>> %jf% echo.
>> %jf% echo VirtualDub.video.filters.Clear();
>> %jf% echo.
>> %jf% echo declare n;
>> %jf% echo n = VirtualDub.video.filters.Add("Deshaker v3.0");
>> %jf% echo.
>> %jf% echo // ПЕРВЫЙ проход: ПИШЕМ лог deshaker'а (второй параметр "18|1...)
>> %jf% echo VirtualDub.video.filters.instance[0].Config("18|1|30|4|1|0|1|0|640|480|1|2|1000|1000|1 000|1000|4|1|4|2|8|30|300|4|" + fName + ".log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|15|15|5|15|0|0|3 0|30|0|0|0|0|1|0|0|10|1000|1|88|1|1|20|5000|100|20 |1");
>> %jf% echo.
>> %jf% echo VirtualDub.Preview(); // запускаем дешейкер
>> %jf% echo.
>> %jf% echo // ВТОРОЙ проход: ЧИТАЕМ лог deshaker'а (второй параметр "18|2...)
>> %jf% echo VirtualDub.video.filters.instance[0].Config("18|2|30|4|1|0|1|0|640|480|1|2|1000|1000|1 000|1000|4|1|4|2|8|30|300|4|" + fName + ".log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|15|15|5|15|0|0|3 0|30|0|0|0|0|1|0|0|10|1000|1|88|1|1|20|5000|100|20 |1");
>> %jf% echo.
>> %jf% echo VirtualDub.audio.filters.Clear();
>> %jf% echo.
>> %jf% echo VirtualDub.video.SetMode(3);
>> %jf% echo VirtualDub.video.SetSmartRendering(0);
>> %jf% echo VirtualDub.video.SetPreserveEmptyFrames(0);
>> %jf% echo VirtualDub.video.SetFrameRate2(0,0,1);
>> %jf% echo VirtualDub.video.SetIVTC(0, 0, 0, 0);
>> %jf% echo VirtualDub.video.SetCompression(0x34363278,0,10000 ,0);
>> %jf% echo VirtualDub.video.SetCompData(4720,"AwAAAAUAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAFwAAAOYAAAAgAwAAA QAAAAAAAAAAAAAAAQAAAC5ceDI2NC5zdGF0cwAAcwB0AGEAdAB zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAABAAA AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA==");
>> %jf% echo.
>> %jf% echo VirtualDub.Open("%avsfileL:\=\\%",0,0); // выдергиваем ЛЕВЫЙ файл
>> %jf% echo VirtualDub.SaveAVI("%resfileL:\=\\%"); // пишем готовый файл
>> %jf% echo.
>> %jf% echo VirtualDub.Open("%avsfileR:\=\\%",0,0); // выдергиваем ПРАВЫЙ файл
>> %jf% echo VirtualDub.SaveAVI("%resfileR:\=\\%"); // пишем готовый файл
>> %jf% echo.
rem сбрасываем фильтр Deshake и пишем сжатый 3д-файл (соединенные вертикально два готовых файла)
>> %jf% echo VirtualDub.video.filters.instance[n].Remove();
>> %jf% echo.
>> %jf% echo VirtualDub.Open("%avsfile:\=\\%",0,0); // читаем сдвоенный вертикальный 3Д-файл
>> %jf% echo VirtualDub.SaveAVI("%resfile:\=\\%"); // пишем готовый файл
>> %jf% echo VirtualDub.Close();
>> %jf% echo.
>> %jf% echo // $endjob
файл create_JobFor3D.cmd:
@echo off
set jf=%~dp1vdub_3d_job.jobs
del %jf%
for %%i in (%~dp1*.avi) do call dubbing3D.cmd %jf% %%i
запускаем так:
create_JobFor3D.cmd <Путь с видео-файлами 3Д>
create_JobFor3D.cmd ищет все .avi файлы в указанной папке и для каждого из них запускает dubbing3D.cmd
Тот в свою очередь создает и дополняет файл vdub_3d_job.jobs, в котором описываются задания virtualdub'а:
- для каждого файла .avi создается 3 файла ависинта: один открывает левый канал, второй правый канал и третий рисует оба кадра сверху и снизу, сжимая все это по вертикали в 2 раза, чтобы открывали 3д-телеки.
- далее в виртуалдабе открывается левый канал, добавляется компрессия, добавляется плагин Дешейкер и отрабатывает первый проход, в котором пишется лог-файл его работы
- затем идет второй проход, когда выравнивается левый видео-файл и записывается
- потом открывается правый файл и так же записывается
- а потом отрисовываются уже стабилизированные каналы друг над другом и с сжатием по вертикали в 2 раза
готово. Этот джоб-файл открываем в виртуалдабе (F4, File-Open, Start) и ждем, пока все обработается.
ПС. основа взята отсюда, хотя там выполнялась другая задача.