VideoHelp Forum




+ Reply to Thread
Results 1 to 4 of 4
  1. Member
    Join Date
    Jan 2010
    Location
    Brazil
    Search Comp PM
    Hello there,

    This past weekend I wrote these two .bat for working with video files and virtualdub to making basic operations in these video files. They are ready for this one task. But there others tasks to do and I going to edit these files a lot. And it's hard to edit both files always. Need some help to join these files...

    Little explanation about what these files do. They read the .AVI files in a folder then create a .VCF file for every AVI. After that it is created a new .BAT to run all these .VCF in virtualDub. Nothing too hard but quiet a time saver.

    Code:
    @echo off
    for %%a in ("*.avi") do call 2.bat "%%a"
    ECHO. 2>"Run VirtualDub Jobs.bat"
    ECHO @echo off>>"Run VirtualDub Jobs.bat"
    for %%a in ("*.vcf") do ECHO "C:\VirtualDubMod\VirtualDubMod.exe" /r /s"%%~fa" /x>>"Run VirtualDub Jobs.bat" & ECHO del "%%~fa">>"Run VirtualDub Jobs.bat">>"Run VirtualDub Jobs.bat"
    Code:
    @echo off
    set str1=%~f1
    set str1=%str1:\=\\%
    ECHO VirtualDub.Open("%str1%","",0);>%~n1.vcf
    ECHO VirtualDub.RemoveInputStreams();>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetSource(0x73647561,1,0);>>%~n1.vcf
    ECHO VirtualDub.stream[0].DeleteComments(1);>>%~n1.vcf
    ECHO VirtualDub.stream[0].AddComment(0x00000003,"","Portuguese");>>%~n1.vcf
    ECHO VirtualDub.stream[0].AdjustChapters(1);>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetMode(0);>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetInterleave(1,500,1,0,0);>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetClipMode(1,1);>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetConversion(0,0,0,0,0);>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetVolume();>>%~n1.vcf
    ECHO VirtualDub.stream[0].SetCompression();>>%~n1.vcf
    ECHO VirtualDub.stream[0].EnableFilterGraph(0);>>%~n1.vcf
    ECHO VirtualDub.stream[0].filters.Clear();>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetSource(0x73647561,0,0);>>%~n1.vcf
    ECHO VirtualDub.stream[1].DeleteComments(1);>>%~n1.vcf
    ECHO VirtualDub.stream[1].AddComment(0x00000003,"","English");>>%~n1.vcf
    ECHO VirtualDub.stream[1].AdjustChapters(1);>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetMode(0);>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetInterleave(1,500,1,0,0);>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetClipMode(1,1);>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetConversion(0,0,0,0,0);>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetVolume();>>%~n1.vcf
    ECHO VirtualDub.stream[1].SetCompression();>>%~n1.vcf
    ECHO VirtualDub.stream[1].EnableFilterGraph(0);>>%~n1.vcf
    ECHO VirtualDub.stream[1].filters.Clear();>>%~n1.vcf
    ECHO VirtualDub.video.DeleteComments(1);>>%~n1.vcf
    ECHO VirtualDub.video.AddComment(0x00000002,"ISFT","VirtualDubMod 1.5.4.1 (build 2117/release)");>>%~n1.vcf
    ECHO VirtualDub.video.AdjustChapters(1);>>%~n1.vcf
    ECHO VirtualDub.video.SetDepth(24,24);>>%~n1.vcf
    ECHO VirtualDub.video.SetMode(0);>>%~n1.vcf
    ECHO VirtualDub.video.SetFrameRate(0,1);>>%~n1.vcf
    ECHO VirtualDub.video.SetIVTC(0,0,-1,0);>>%~n1.vcf
    ECHO VirtualDub.video.SetCompression();>>%~n1.vcf
    ECHO VirtualDub.video.filters.Clear();>>%~n1.vcf
    set str2="%~dp1NEW_AVI_%~1"
    set str2=%str2:\=\\%
    ECHO VirtualDub.SaveAVI(%str2%);>>%~n1.vcf
    ECHO VirtualDub.Close();>>%~n1.vcf
    Quote Quote  
  2. Member
    Join Date
    Apr 2007
    Location
    Australia
    Search Comp PM
    I did something similar a couple of years ago. This a partial rehash of what I did.
    It may lead you in a direction that helps.
    I created a .jobs script for each avi in a folder and then ran virtualdub (with 2 pass XviD) using each script.
    I kept all my input avi files in d:\movies\todo\. Output goes to d:\movies\done\. This batch file in d:\movies\.
    I used the subst command to create the virtual drive, letter q: which points to my input folder.
    I used the subst command to create the virtual drive, letter r: which points to my output folder.

    Notice I find the frame count for the video clip. 'declare frames;' then,' frames = VirtualDub.video.length;'
    I needed it for what I was doing.

    Code:
    @echo off
    :: create the virtual drives and go to the root of drive q:
    subst q: d:\movies\todo
    subst r: d:\movies\done
    q:
    cd\
    
    for %%a in ("*.avi") do echo // $numjobs 1                                          >"%%~na.jobs"
    for %%a in ("*.avi") do echo //                                                    >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $job "Job 1"                                       >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $input  "%%~fa"                                    >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $output "r:\%%~na_New.avi"                         >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $state 0                                           >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $id e38e297a056ef12d                               >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $start_time 00000000 00000000                      >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $end_time 00000000 00000000                        >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $script                                            >>"%%~na.jobs"
    for %%a in ("*.avi") do echo declare frames;                                       >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.Open("q:\\%%a","",0);                      >>"%%~na.jobs"
    for %%a in ("*.avi") do echo frames = VirtualDub.video.length;                     >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.RemoveInputStreams();                      >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.stream[0].SetSource(0x73647561,1,0);       >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.stream[0].DeleteComments(1);               >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.stream[0].AddComment(0x00000003,"","Portuguese"); >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.stream[0].AdjustChapters(1);               >>"%%~na.jobs"
    
    etc.
    etc.
    etc.
    
    for %%a in ("*.avi") do echo VirtualDub.video.filters.Clear();                     >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.audio.filters.Clear();                     >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.subset.Clear();                            >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.subset.AddRange(0,frames);                 >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.video.SetRange();                          >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.project.ClearTextInfo();                   >>"%%~na.jobs"
    for %%a in ("*.avi") do echo   // -- $reloadstop --                                >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.SaveAVI("r:\\%%~na_New.avi");              >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.audio.SetSource(1);                        >>"%%~na.jobs"
    for %%a in ("*.avi") do echo VirtualDub.Close();                                   >>"%%~na.jobs"
    
    for %%a in ("*.avi") do echo // $endjob                                            >>"%%~na.jobs"
    for %%a in ("*.avi") do echo //                                                    >>"%%~na.jobs"
    for %%a in ("*.avi") do echo //--------------------------------------------        >>"%%~na.jobs"
    for %%a in ("*.avi") do echo // $done                                              >>"%%~na.jobs"
    
    for %%a in ("*.jobs") do "c:\virtualdub\virtualdub.exe" /s "%%~na.jobs" /x
    
    :: go back to d:\movies\ and delete the virtual drives.
    d:
    subst q: /d
    subst r: /d
    
    :end
    Last edited by pcspeak; 17th Jan 2012 at 21:56.
    Quote Quote  
  3. Member
    Join Date
    Jan 2010
    Location
    Brazil
    Search Comp PM
    Alright, pcspeak!!! You're a Genius.

    Yesterday I tried a lot of different ways to make this work, but none, always creating new problems in my .bat.
    Now I see. I can do a "for %%a" to add wich line in the .VCFs.
    But in your case... like you said... you created JOBS files.
    It's better to create these ones?
    And the tip about creating a virtual drive worth a try.
    Quote Quote  
  4. Member
    Join Date
    Apr 2007
    Location
    Australia
    Search Comp PM
    Hi.
    The virtual drives worked for me. You may find a better method.
    I found the double back slashes (\\) needed in the file paths to be a real pain and this was my way of getting around them.

    I started creating .JOBS scripts after reading this. http://www.virtualdub.org/docs/vdscript.txt
    .VCFs are also scripts, but the .JOBS scripts are better designed, I think, to use in batch mode.
    It's just the way I did it.

    Cheers
    Last edited by pcspeak; 19th Jan 2012 at 14:41.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!