RSFDrive.com

Разное => Технические вопросы => Тема начата: Eugene_Msk от Августа 26, 2008, 21:21:48

Название: Помогите автоматизировать VirtualDubMod
Отправлено: Eugene_Msk от Августа 26, 2008, 21:21:48
Помогите автоматизировать VirtualDubMod

Есть файлы с двумя звук дорожками, как повыкусывать вторую?
Каждый файл грузить в VirtualDubMod и делать Disable Stream, а потом Save AVI сума сойдешь
Помогите плиз!

С уважением, Евгений
Название: Помогите автоматизировать VirtualDubMod
Отправлено: Hattak от Августа 26, 2008, 21:47:52
ну, там можно использовать Job List ... т.е. выполнение команд списком ...
только вот он использует скрипты на внутреннем формате "Sylia script format" ...

вот пример скрипта, который удаляет второй аудио поток из AVIшки ...

Цитировать
// VirtualDub job list (Sylia script format)
// This is a program generated file -- edit at your own risk.
//
// $numjobs 1
//

// $job "Job 1"
// $input "C:\video.avi"
// $output "C:\new_video.avi"
// $state 0
// $start_time 0 0
// $end_time 0 0
// $script

VirtualDub.Open("C:\video.avi","",0);
VirtualDub.RemoveInputStreams();
VirtualDub.stream[0].SetSource(0x73647561,0,0);
VirtualDub.stream[0].DeleteComments(1);
VirtualDub.stream[0].AdjustChapters(1);
VirtualDub.stream[0].SetMode(0);
VirtualDub.stream[0].SetInterleave(1,500,1,0,0);
VirtualDub.stream[0].SetClipMode(1,1);
VirtualDub.stream[0].SetConversion(0,0,0,0,0);
VirtualDub.stream[0].SetVolume();
VirtualDub.stream[0].SetCompression();
VirtualDub.stream[0].EnableFilterGraph(0);
VirtualDub.stream[0].filters.Clear();
VirtualDub.video.DeleteComments(1);
VirtualDub.video.AddComment(0x00000002,"ISFT","VirtualDubMod 1.5.10.1 (build 2366/release)");
VirtualDub.video.AdjustChapters(1);
VirtualDub.video.SetDepth(24,24);
VirtualDub.video.SetMode(0);
VirtualDub.video.SetFrameRate(0,1);
VirtualDub.video.SetIVTC(0,0,-1,0);
VirtualDub.video.SetRange(0,0);
VirtualDub.video.SetCompression();
VirtualDub.video.filters.Clear();
VirtualDub.subset.Clear();
VirtualDub.subset.AddRange(0,130658);
VirtualDub.SaveAVI("C:\new_video.avi");
VirtualDub.Close();

// $endjob
//
//--------------------------------------------------
// $done

чисто теоретически, можно дописать его для всех твоих файлов ...
т.е. переменная // $numjobs 1 - это количество заданий ... скажем 10 ... // $numjobs 10

дальше

// $job "Job 2"
// $input "C:\video2.avi"
// $output "C:\new_video2.avi"
// $state 0
// $start_time 0 0
// $end_time 0 0
// $script

VirtualDub.Open("C:\video2.avi","",0);
VirtualDub.RemoveInputStreams();
VirtualDub.stream[0].SetSource(0x73647561,0,0);
VirtualDub.stream[0].DeleteComments(1);
VirtualDub.stream[0].AdjustChapters(1);
VirtualDub.stream[0].SetMode(0);
VirtualDub.stream[0].SetInterleave(1,500,1,0,0);
VirtualDub.stream[0].SetClipMode(1,1);
VirtualDub.stream[0].SetConversion(0,0,0,0,0);
VirtualDub.stream[0].SetVolume();
VirtualDub.stream[0].SetCompression();
VirtualDub.stream[0].EnableFilterGraph(0);
VirtualDub.stream[0].filters.Clear();
VirtualDub.video.DeleteComments(1);
VirtualDub.video.AddComment(0x00000002,"ISFT","VirtualDubMod 1.5.10.1 (build 2366/release)");
VirtualDub.video.AdjustChapters(1);
VirtualDub.video.SetDepth(24,24);
VirtualDub.video.SetMode(0);
VirtualDub.video.SetFrameRate(0,1);
VirtualDub.video.SetIVTC(0,0,-1,0);
VirtualDub.video.SetRange(0,0);
VirtualDub.video.SetCompression();
VirtualDub.video.filters.Clear();
VirtualDub.subset.Clear();
VirtualDub.subset.AddRange(0,130658);
VirtualDub.SaveAVI("C:\new_video2.avi");
VirtualDub.Close();

// $endjob
//
//--------------------------------------------------

и так для всех твоих файлов ...

в конце

// $done

это всё сохранить в файл 12345.jobs

потом в VirtualDubMod Load Job List и Start ...
но я не проверял)))