Hi, please enter only cats thanksthanks
In virutaldub I have set this so it use Internal MJPEG decoder to load .avi mjpeg
and all is ok
But now I would like that virtualdub, by default, have to swap field when treat mjpeg files.
In the "open video files" ---> "ask for extended option after this dialog"
I can manually set - each time - the swap field option.... but I have to batch process so I have to set virtualdub for "swap field" by default, at least when it opens mjpeg .avi files but I cannot find the way to set it by default
Is there a way to resolve? thanks
+ Reply to Thread
Results 1 to 10 of 10
-
-
You want to write that into VirtualDub's sript file *.vcf ? Not sure how to do that, but
walking away from Avisynth, it is asking for these kinds of troubles ... -
yes, possibly I would like that the internal mjpeg decoder open an mjpeg avi file, jet with the swap field option, without recours to the "field swap" filter.
However I cannot find any option in virtualdub that do this, this seems not possible
Avisynth is a beautiful program but is absolute uncomfortable when it load a big .mxf or .avi file (of 30-40GB) because due to the ffmpeg plugin indexing: I'm forced to wait 12-15 minutes only for the indexing process uselessy.
Virtualdub, with the ffmpeg plugin, have to waith few seconds to open a large .mxf file -
As was suggested, you can try to run indexing while encoding , for example you encode first file and index second at the same time, so you wait only for first indexing. Indexing does not run CPU that much so it should work. I do not use For ('some dir') DO something, for loading video, just Drag&Drop files and that I can modify to do that just running batch file that indexes next file that was drag&dropped using:
Code:SET index_following="%~dp0index_following.BAT" start call %index_following% %2
it sounds difficult but it is not, because it is just copied from main batch in the first place except that VD line ... -
thanks, I understand but for what I have to do is not so important this pre indexing, sometimes I have to transcode an entire directory but sometimes I have to transcode only 2-3 files in a directory of 100 files, some other time only file in random order and hoewver dragged and drop with the ndjamena megascript: indexing, at least on my pc (hp envy J113EL) requires a lot of cpu, during transcoding the system would be drowned, unfortunately indexing is a operation that hinders heavily pc and I don'tunderstand why cannot be disabled. I would rather DirectshowSource ... (=death)
-
Code:
START "" /LOW /MIN ""C:\FFMSIndex.exe" "Z:\Cats.mxf" "D:\Cats.mxf.ffindex""
-
would be a idea for pre-indexing but in may cases the pre-index don't reduce time to do transcoding
Think the best solution is do all in virtualdub avoid avisynth, in this moment I try to modify your kindly megascript so that a file is loaded and treated all in virtualdub, for example this (your) script recognize if the input file is a .mxf and HD422 (fullHD): if yes is reduced to AVI SD 720x576 with virtualdub only. This do the same thing of avisynth, and of course, don't need pre indexing: when I need to transcode a .mxf of 47 GB, and only this, it reduce time for transcoding of 15 minutes.
When I have to transcode single files, maybe it's the best way
Hoewver I consider equally the pre indexing procedurefor for future developments, it can be important
Code:@rem unless otherwise specified for debugging reasons turn echo off @if "%EMode%"=="" Set EMode=ON @ECHO %EMode% @ECHO off regedit /s v:\automazioneclip\system\VDreg.reg regedit /s v:\automazioneclip\system\PICreg.reg regedit /s v:\automazioneclip\system\drivers.reg cls SetLocal DisableDelayedExpansion Set "EXTLIST=*.*" Set "DoPop=0" Set "ARGLVL=0" Set "FileName-DQ=" Set VD_LOC="v:\automazioneclip\VirtualDub\vdub.exe" set "DestFolder=." Set "WorkFolder=%DestFolder%" rem process the arguments one by one :ARGS rem if there are no further arguments then exit the batch. if [%1]==[] ( if "%ARGLVL%"=="0" ( CALL :GetTargetName EndLocal pause ) goto :eof ) rem wildcard processing Set "FileName=%~1" if "%FileName%"=="" ( SHIFT goto :ARGS ) rem if the argument doesn't exist in the file system in any form skip it. if NOT EXIST %1 ( SHIFT goto :ARGS ) if NOT [%1]==[] if NOT "%FileName:^*=%%FileName:^?=%"=="%FileName%%FileName%" ( for %%w in (%1) DO ( Set /a ARGLVL+=1 CALL :ARGS "%%~fw" Set /a ARGLVL-=1 ) SHIFT goto :ARGS ) Set "FileName=" rem Set search/recursion variables Set "Pattern=%EXTLIST%" Set "STARTLVL=0" Set "FOUNDLVL=1024" rem if the argument is the current directory then process everything in it. if "%~f1"=="%CD%" ( rem echo Processing Directory "%CD%" CALL :START %1 SHIFT goto :ARGS ) rem Test if the argument is a directory, if it is move to it then process everything in it, if not then move to the file's parent directory and process the file. Then return to starting directory. Type NUL pushd "%~f1" 2> nul if NOT "%errorlevel%"=="0" ( if NOT "%CD%\"=="%~dp1" ( pushd "%~dp1" Set "DoPop=1" ) Set Pattern="%~nx1" ) else ( rem echo Processing Directory "%~f1" Set "DoPop=1" ) CALL :START %1 if "%DoPop%"=="1" ( popd Set "DoPop=0" ) SHIFT goto :ARGS :START <CURRENT_ARG> rem Count is superseded by FOUNDLVL but may still be useful for renaming purposes Set "Count=0" rem Process all files in the current directory fitting the arguments search pattern. for /f "delims=" %%y in ('dir %Pattern% /b /od /a-d') do ( if /I NOT "%%~y"=="File Not Found" CALL :Process_File "%%~fy" ) rem if it didn't find anything search all directories instead goto :eof if "%Count%"=="0" if %STARTLVL% LSS %FOUNDLVL% ( for /d %%b in (*) do ( pushd "%%~fb" rem echo Processing Directory "%%~fb" Set /a STARTLVL+=1 CALL :START "%%~fb" Set /a STARTLVL-=1 popd ) ) goto :eof :Process_File <FILENAME> Set /a Count+=1 Set "FOUNDLVL=%STARTLVL%" SetLocal DisableDelayedExpansion if exist "%~dpn1.wav" ( set "Audio=%~dpn1.wav" ) else ( set "Audio=v:\automazioneclip\system\empty.wav") rem Find TimeCode Info Set AUCount=0; for /f "tokens=1,2 delims=^=" %%g in ('v:\automazioneclip\virtualdubmod\FFProbe -hide_banner -loglevel fatal -pretty -show_streams -select_streams v:0 -show_entries stream^=codec_type^,r_frame_rate^,width^,height^,sample_aspect_ratio:stream_disposition^=:format_tags^=timecode^,company_name^,product_name^,product_version "%~1" 2^>^&1') DO ( if "%%~g"=="TAG:company_name" set "T_Company_Name=%%~h" if "%%~g"=="TAG:product_name" set "T_Product_Name=%%~h" if "%%~g"=="TAG:product_version" set "T_Product_Version=%%~h" if "%%~g"=="TAG:timecode" set "TIMECODE=%%~h" if "%%~g"=="r_frame_rate" set "Frame_Rate=%%~h" if "%%~g"=="width" set "V_Width=%%~h" if "%%~g"=="height" set "V_Height=%%~h" if "%%~g"=="sample_aspect_ratio" set "V_PAR=%%~h" if "%%~g"=="codec_type" if "%%~h"=="audio" set /a AUCount+=1 ) if "%V_Width%"=="" ( echo ERROR: Video Width NOT FOUND! pause goto :eof ) if "%V_Height%"=="" ( echo ERROR: Video Height NOT FOUND! pause goto :eof ) if "%Frame_Rate%"=="" ( echo ERROR: Frame_Rate NOT FOUND! ) if "%V_PAR%"=="" ( echo ERROR: Video PAR NOT FOUND! pause goto :eof ) rem Set "V_Q=UD" rem if %V_Width% LEQ 1920 if %V_Height% LEQ 1120 \\ Set "V_Q=HD" rem if %V_Width% LEQ 1280 if %V_Height% LEQ 752 Set "V_Q=MD" if %V_Width% LEQ 1024 if %V_Height% LEQ 608 Set "V_Q=SD" if "%V_Width%"=="720" (if "%V_Height%"=="576" (set "fullSD=1")) if "%V_Width%"=="720" (if "%V_Height%"=="608" (set "fullSD=1")) if "%fullSD%"=="1" echo fullSD mode uguale a uno echo Using %V_Q% Mode echo PAR = %V_PAR% echo Frame_Rate = %Frame_Rate% if "%TimeCode%"=="" echo Warning! no TimeCode Found! if NOT "%TimeCode%"=="" echo Timecode= %TIMECODE% v:\automazioneclip\virtualdub\mediainfo.exe "%CD%\%~n1.mxf" dumpinfo:unicodefile.txt TYPE unicodefile.txt>mediainfo.txt findstr /c:"Codec ID : 0D01030102020201-0401020202010200" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "dvcam=1") findstr /c:"Commercial name : XDCAM HD422" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "fullHD=1") if "%fullHD%"=="1" CALL :Make_File_HD2SD "%WorkFolder%\%~n1.vcf" "%WorkFolder%\%~n1.avs" "%WorkFolder%\%~n1.avi" "%~f1" rem CALL :Make_File "%WorkFolder%\%~n1.vcf" "%WorkFolder%\%~n1.avs" "%WorkFolder%\%~n1.avi" "%~f1" echo FATTO echo. echo --------------------------------------------- echo. EndLocal goto :eof :Make_File_HD2SD <VCF_FILENAME> <AVS_FILENAME> <FILENAME> <ORG_FILENAME> echo *** from fullHD to fullSD using Virtualdub Only *** rem *** audio *** v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:1] [0:2] amerge,volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1_SD.wav" v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:3] [0:4] amerge,volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1ch3ch4_SD.wav" rem *** video *** echo VirtualDub.audio.SetSource^(0^);>%1 echo VirtualDub.audio.SetMode^(0^);>>%1 echo VirtualDub.audio.SetInterleave^(1,500,1,0,0^);>>%1 echo VirtualDub.audio.SetClipMode^(1,1^);>>%1 echo VirtualDub.audio.SetEditMode^(1^);>>%1 echo VirtualDub.audio.SetConversion^(0,0,0,0,0^);>>%1 echo VirtualDub.audio.SetVolume^(^);>>%1 echo VirtualDub.audio.SetCompression^(^);>>%1 echo VirtualDub.audio.EnableFilterGraph^(0^);>>%1 echo VirtualDub.video.SetInputFormat^(0^);>>%1 echo VirtualDub.video.SetOutputFormat^(11^);>>%1 echo VirtualDub.video.SetMode^(3^);>>%1 echo VirtualDub.video.SetSmartRendering^(0^);>>%1 echo VirtualDub.video.SetPreserveEmptyFrames^(0^);>>%1 echo VirtualDub.video.SetFrameRate2^(0,0,1^);>>%1 echo VirtualDub.video.SetIVTC^(0, 0, 0, 0^);>>%1 echo VirtualDub.video.SetCompression^(0x6a6d7674,0,10000,0^);>>%1 echo VirtualDub.video.SetCompData(28,"TUpQRxgAAAAAAAAAAgAAAAgAAAACAAAAAQAAAA==");>>%1 echo VirtualDub.video.filters.Clear^(^);>>%1 echo VirtualDub.video.filters.Add^("alias format"^);>>%1 echo VirtualDub.video.filters.instance[0].Config^(2, 0^);>>%1 echo VirtualDub.video.filters.Add^("deinterlace"^);>>%1 echo VirtualDub.video.filters.instance[1].Config^(0,0,1^);>>%1 echo VirtualDub.video.filters.Add^("resize"^);>>%1 echo VirtualDub.video.filters.instance[2].Config^(720,576,0,4,3,0,320,240,4,3,0,135,1,0x000000^);>>%1 echo VirtualDub.video.filters.Add^("interlace"^);>>%1 echo VirtualDub.video.filters.instance[3].Config^(0, 1^);>>%1 echo VirtualDub.video.filters.Add^("convert format"^);>>%1 echo VirtualDub.video.filters.instance[4].Config^(39^);>>%1 echo VirtualDub.audio.filters.Clear^(^);>>%1 if NOT "%TimeCode%"=="" echo VirtualDub.project.ClearTextInfo^(^);>>%1 if NOT "%TimeCode%"=="" echo VirtualDub.project.AddTextInfo^("ISMP", "%TIMECODE%"^);>>%1 echo VirtualDub.SaveAVI^("%DestFolder%\\%~n1_SD.avi"^);>>%1 echo VirtualDub.Close^(^);>>%1 %VD_LOC% /min %4 /s %1 for %%v in ("%DestFolder%\\%~n1_SD.avi") do ( if %%~zv LSS 128 ( echo ERROR!!! Extra Small File Size Detected!!! pause ) ) v:\automazioneclip\virtualdub\cfourcc.exe -i "%CD%\%~n1_SD.avi" -u MJPG -d MJPG rem DEL "%DestFolder%\*.VCF" DEL "%DestFolder%\unicodefile.txt" DEL "%DestFolder%\mediainfo.txt" goto :eof :Make_File <VCF_FILENAME> <AVS_FILENAME> <FILENAME> <ORG_FILENAME> rem *** TRY extract audio from .MXF IMX SD FILE *** Set "TokenS=0" IF "%~x4"==".MXF" Set "TokenS=1" IF "%~x4"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" (if "%V_Width%"=="720" (v:\automazioneclip\core\ffmpeg.exe -loglevel fatal -y -i %4 -map_channel 0.1.0 -map_channel 0.1.1 -af "volume=volume=9dB:precision=fixed" "%DestFolder%\%~n1_SD.wav")) If "%TokenS%"=="1" (if "%V_Width%"=="720" (v:\automazioneclip\core\ffmpeg.exe -loglevel fatal -y -i %4 -map_channel 0.1.2 -map_channel 0.1.3 -af "volume=volume=9dB:precision=fixed" "%DestFolder%\%~n1ch3ch4_SD.wav")) rem *** TRY extract audio from .MXF XDCAM-HD 4:2:2 FILE *** Set "TokenS=0" IF "%~x4"==".MXF" Set "TokenS=1" IF "%~x4"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" (if "%V_Width%"=="1920" (v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:1] [0:2] amerge,volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1_SD.wav")) If "%TokenS%"=="1" (if "%V_Width%"=="1920" (v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:3] [0:4] amerge,volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1ch3ch4_SD.wav")) rem *** TRY extract audio from .MXF DVCAM *** Set "TokenS=0" IF "%~x4"==".MXF" Set "TokenS=1" IF "%~x4"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" (if "%dvcam%"=="1" (v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:1] [0:2] amerge,volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1_SD.wav")) If "%TokenS%"=="1" (if "%dvcam%"=="1" (v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:3] [0:4] amerge,volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1ch3ch4_SD.wav")) rem *** TRY extract audio from GOPRO MP4 file *** Set "TokenS=0" IF "%~x4"==".MP4" Set "TokenS=1" IF "%~x4"==".mp4" Set "TokenS=1" If "%TokenS%"=="1" (v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:1] volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1_SD.wav") rem *** TRY extract audio from .MP4 OTHER TYPE *** Set "TokenS=0" IF "%~x4"==".MP4" Set "TokenS=1" IF "%~x4"==".mp4" Set "TokenS=1" If "%TokenS%"=="1" (v:\automazioneclip\core\ffmpeg.exe -y -i %4 -filter_complex "[0:0] volume=1.5" -c:a pcm_s16le "%DestFolder%\%~n1_SD.wav") echo *** from various format to MorganMJPEG AVI SD 720x576i@25fps *** rem ***Make The .vcf Script File*** echo VirtualDub.audio.SetSource^(0^);>%1 echo VirtualDub.audio.SetMode^(0^);>>%1 echo VirtualDub.audio.SetInterleave^(1,500,1,0,0^);>>%1 echo VirtualDub.audio.SetClipMode^(1,1^);>>%1 echo VirtualDub.audio.SetEditMode^(1^);>>%1 echo VirtualDub.audio.SetConversion^(0,0,0,0,0^);>>%1 echo VirtualDub.audio.SetVolume^(^);>>%1 echo VirtualDub.audio.SetCompression^(^);>>%1 echo VirtualDub.audio.EnableFilterGraph^(0^);>>%1 echo VirtualDub.video.SetInputFormat^(0^);>>%1 echo VirtualDub.video.SetOutputFormat^(11^);>>%1 echo VirtualDub.video.SetMode^(1^);>>%1 echo VirtualDub.video.SetSmartRendering^(0^);>>%1 echo VirtualDub.video.SetPreserveEmptyFrames^(0^);>>%1 echo VirtualDub.video.SetFrameRate2^(0,0,1^);>>%1 echo VirtualDub.video.SetIVTC^(0, 0, 0, 0^);>>%1 echo VirtualDub.video.SetCompression^(0x6a6d7674,0,10000,0^);>>%1 echo VirtualDub.video.SetCompData^(28,"TUpQRxgAAAAAAAAAAgAAAAgAAAACAAAAAQAAAA=="^);>>%1 echo VirtualDub.video.filters.Clear^(^);>>%1 echo VirtualDub.video.filters.Add^("deinterlace"^);>>%1 echo VirtualDub.video.filters.instance[0].Config^(0,0,1^);>>%1 echo VirtualDub.video.filters.Add^("resize"^);>>%1 echo VirtualDub.video.filters.instance[1].Config^(720,576,0,4,3,0,320,240,4,3,0,135,1,0x000000^);>>%1 echo VirtualDub.video.filters.Add^("interlace"^);>>%1 echo VirtualDub.video.filters.instance[2].Config^(0, 1^);>>%1 echo VirtualDub.audio.filters.Clear^(^);>>%1 echo VirtualDub.audio.filters.Clear^(^);>>%1 if NOT "%TimeCode%"=="" echo VirtualDub.project.ClearTextInfo^(^);>>%1 if NOT "%TimeCode%"=="" echo VirtualDub.project.AddTextInfo^("ISMP", "%TIMECODE%"^);>>%1 echo VirtualDub.SaveAVI^("%DestFolder%\\%~n1_SD.avi"^);>>%1 echo VirtualDub.Close^(^);>>%1 rem ***Make The .avs Script File*** echo Import("C:\Program Files\AviSynth\plugins\IResize.avsi")>%2 echo FFVideoSource^(%4^)>>%2 echo ConvertToYUY2^(interlaced=true^)>>%2 if "%dvcam%"=="1" echo ReverseFieldDominance^(^)>>%2 echo src = last >>%2 echo src = src.width==720^&^&src.height==608?src.crop^(0,32,0,0^):src >>%2 echo src = src.width==1920 ^&^& src.height==1088 ? src.crop^(0,0,1920,1080^): src >>%2 echo src = src.width^>720 ^|^| src.height^>608?src.ColorMatrix^(mode="Rec.709->Rec.601"^): src >>%2 echo src.width!=720 ^|^| src.height!=576 ? src.IResize^(720,576^): src >>%2 if "%Frame_Rate%" == "50/1" echo src.framerate^<26 ? AssumeTFF^(^).SeparateFields^(^).SelectEvery^(4,0,3^).Weave^(^) >>%2 echo AssumeFPS^(25^)>>%2 echo processing source file %4 rem ***Call VirtualDub*** if NOT EXIST %VD_LOC% ( echo Um, where the hell is VirtualDubMod? pause ) %VD_LOC% /min %2 /s %1 for %%v in ("%DestFolder%\\%~n1_SD.avi") do ( if %%~zv LSS 128 ( echo ERROR!!! Extra Small File Size Detected!!! pause ) ) v:\automazioneclip\virtualdub\cfourcc.exe -i "%CD%\%~n1_SD.avi" -u MJPG -d MJPG DEL "%DestFolder%\*.ffindex" DEL "%DestFolder%\*.VCF" rem DEL "%DestFolder%\*.avs" DEL "%DestFolder%\unicodefile.txt" DEL "%DestFolder%\mediainfo.txt" set "fullSD=0" set "dvcam=0" v:\automazioneclip\virtualdub\cfourcc.exe -i "%CD%\%~n1_SD.avi" -u MJPG -d MJPG goto :eof :GetTargetName Set "FileName=" Set /p FileName=InputFileName .mxf .mp4 or .avi or InputFolder - INVIO per convertire tutto (EXIT esce): rem Add or remove double-quotes if necessary if NOT DEFINED FileName ( Set "FileName-DQ=" goto :DQSkip ) Set "FileName-DQ=%FileName:"=%" if NOT DEFINED FileName-DQ ( Set "FileName=" Set "FileName-DQ=" goto :DQSkip ) if EXIST "%FileName-DQ%" ( if "%FileName-DQ%"=="%FileName-DQ: =%" ( Set "FileName=%FileName-DQ%" ) else ( Set FileName="%FileName-DQ%" ) ) :DQSkip if /I "%FileName-DQ%"=="" Set FileName="%CD%" if /I "%FileName-DQ%"=="CD" Set FileName="%CD%" if /I "%FileName-DQ%"=="EXIT" goto :eof if /I "%FileName-DQ%"=="NOEXIT" goto :GetTargetName if DEFINED FileName ( Set /a ARGLVL+=1 CALL :ARGS %FileName% Set /a ARGLVL-=1 ) goto :GetTargetName
referring to
https://forum.videohelp.com/threads/367336-VirtualDub-should-do-2-simply-operations-but
post #16 -
xdcamhd422 is jet 422, but the "convert format" filter is necessary to the "alias format" filter that do the rec.709-->rec.601 colormatrix conversion
-
Last edited by _Al_; 27th Sep 2014 at 09:06.
-
Code:
START "Indexing" /D"%~dp1" /LOW /MIN FFMSINDEX "%~f1" "%~f1.ffindex"