Not been around for a while.
Still doing the batch file thing.
Check your paths, people....
Code:@echo off :: 2 pass for most videos to AVI with MP3 audio @ 128kbps. if not exist AVI\*.* md AVI set /p rate=Enter bitrate(k)? Title Bitrate=%rate% set /p sample=Sample clip only?(y/n) if /i %sample%==y goto sample for %%a in ("*.mp4") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mp4") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.mts") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mts") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.avi") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.avi") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.mkv") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mkv") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.mpg") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mpg") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.vob") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.vob") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.webm") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.webm") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" goto end :sample for %%a in ("*.mp4") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:07:00 -to 00:07:30 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mp4") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:07:00 -to 00:07:30 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.mts") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mts") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.avi") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.avi") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.mkv") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mkv") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.mpg") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mpg") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.vob") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.vob") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.webm") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.webm") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -ss 00:06:00 -to 00:06:20 -f avi -vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" :end
Code::: To unpack bframes. The slightly annoying, but truthful message, spat out by ffmpeg. :: Only .AVI as input. @echo off if not exist avi\*.* md avi for %%a in ("*.avi") do "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -codec copy -bsf:v mpeg4_unpack_bframes -y "avi\%%~na.avi" goto end :end
Code::: MediaInfo - batch file mode. Works on .AVI videos. :: 3 examples. :: Uncomment the wanted ..... (means remove the double colons....) :: Change the output path to your fancied destination. Mine's e:\a\ echo off if exist ~largemovies.txt del /q ~largemovies.txt for %%a in (*.avi) do set avi=%%a&& call :MI goto end :MI ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=General;%%OverallBitRate%%" "%avi%" >> ~tmpfile.txt ::set /p OverallBitRate= < ~tmpfile.txt ::del ~tmpfile.txt ::if %OverallBitRate% gtr 1600000 echo "%avi%" >> ~largemovies.txt && echo %OverallBitRate% >> ~largemovies.txt ::if %OverallBitRate% gtr 1600000 copy "%avi%" e:\a\ ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=Video;%%BitRate%%" "%avi%" >> ~tmpfile.txt ::set /p BitRate= < ~tmpfile.txt ::del ~tmpfile.txt ::if %BitRate% gtr 1600000 echo "%avi%" >> ~largemovies.txt && echo %BitRate% >> ~largemovies.txt ::if %bitrate% gtr 1600000 copy "%avi%" e:\a\ ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=Audio;%%Channel(s)%%" "%avi%" >> ~tmpfile.txt ::set /p Channel(s)= < ~tmpfile.txt ::del ~tmpfile.txt ::if %Channel(s)% neq 2 echo "%avi%" >> ~largemovies.txt && echo %Channel(s)% >> ~largemovies.txt ::if %Channel(s)% neq 2 copy "%avi%" e:\a\ goto :eof :end ~largemovies.txt
Code:@echo off :: Works on .AVI files. :: VirtualDub to add the video clip name, as a subtitle, at the start for 5 seconds. (My mate's line dancing tutorials.) :: textsub.vdf (I'm using TextSub 2.23) filter must be in the \virtualdub\plugins folder. :: Xvid must be installed. :: Do we have any AVI clips? if not exist *.avi goto ErrMsg01 :: If yes, make the output folder. if not exist AVI\*.* md AVI :: Create the .srt (subtitle) file for each AVI. for %%a in ("*.avi") do echo 1 > "%%~na.srt" for %%a in ("*.avi") do echo 00:00:00,000 --^> 00:00:05,000 >> "%%~na.srt" for %%a in ("*.avi") do echo %%~na >> "%%~na.srt" for %%a in ("*.avi") do echo. >> "%%~na.srt" ::Create the .style (font & colour) file for each AVI. for %%a in ("*.avi") do echo [V4 Styles] > "%%~na.srt.style" for %%a in ("*.avi") do echo Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel Encoding >> "%%~na.srt.style" for %%a in ("*.avi") do echo Style: Default, Arial, 36, ^&H00FFFFFF, ^&H000000FF, ^&H00000000, ^&H00000000, 0, 0, 1, 2, 2, 2, 10, 10, 10, 0, 1 >> "%%~na.srt.style" :: Create .jobs script for each AVI video for %%a in ("*.avi") do echo // $signature 0 1 > "%%~na.jobs" for %%a in ("*.avi") do echo // $numjobs 1 >> "%%~na.jobs" for %%a in ("*.avi") do echo // $job "Job 1" >> "%%~na.jobs" for %%a in ("*.avi") do echo // $input "%%a" >> "%%~na.jobs" for %%a in ("*.avi") do echo // $output "AVI\%%~na.avi" >> "%%~na.jobs" for %%a in ("*.avi") do echo // $state 0 >> "%%~na.jobs" for %%a in ("*.avi") do echo // $id e38e29ba033ff831 >> "%%~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("%%a","",0); >> "%%~na.jobs" for %%a in ("*.avi") do echo Frames = VirtualDub.video.length; >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetSource(1); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetMode(0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetInterleave(1,500,1,0,0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetClipMode(1,1); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetEditMode(1); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetConversion(0,0,0,0,0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetVolume(); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.SetCompression(); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.audio.EnableFilterGraph(0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetInputFormat(0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetOutputFormat(7); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetMode(3); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetSmartRendering(0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetPreserveEmptyFrames(0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetFrameRate2(0,0,1); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetIVTC(0, 0, 0, 0); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.SetCompression(0x64697678,0,10000,0); >> "%%~na.jobs" :: 1 pass XviD compression @ 2500 kbps for %%a in ("*.avi") do echo VirtualDub.video.SetCompData(3540,"AAAAAMQJAACQsggALlx2aWRlby5wYXNzAAAuAHAAYQBzAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAkAEAAE1QRUc0IEFkdmFuY2VkIFNpbXBsZSBAIEw1AAAgAFMAaQBtAHAAbABlACAAQAAgAEwANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAChVc2VyIGRlZmluZWQpAABmAGkAbgBlAGQAKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAIERITFRcZGxESExUXGRscFBUWFxgaHB4VFhcYGhweIBYXGBocHiAjFxgaHB4gIyYZGhweICMmKRscHiAjJiktEBESExQVFhcREhMUFRYXGBITFBUWFxgZExQVFhcYGhsUFRYXGRobHBUWFxgaGxweFhcYGhscHh8XGBkbHB4fIQEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAACWAAAAZAAAAAEAAAAAAAAABAAAAAMAAAABAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAZAAAAPQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABkAAAAZAAAAAEAAAAKAAAAAQAAABQAAAAAAAAAAAAAAAUAAAAFAAAABQAAAAAoCgAAAAAAAQAAAAEAAAAeAAAAAAAAAAIAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAYAAAAEAAAAAAAAAAEAAAABAAAAAQAAAJYAAAAAAAAAAQAAABQAAAABAAAAFAAAAAEAAAAUAAAAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8DAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA"); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.filters.Clear(); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.filters.Add("TextSub 2.23"); >> "%%~na.jobs" for %%a in ("*.avi") do echo VirtualDub.video.filters.instance[0].Config("%%~na.srt", 1, "25.00000"); >> "%%~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("AVI\\%%~na.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 // $done >> "%%~na.jobs" :: Virtualdub to create the AVI with the video clip name as a 5 second subtitle for %%a in ("*.jobs") do "c:\vidaud\virtualdub32\virtualdub.exe" /s "%%a" /r /x :: Clean up for %%a in ("*.avi") do del "%%~na.srt" "%%~na.jobs" "%%~na.srt.style" echo. && echo All done! New clips, with titles, are in the AVI folder echo Press any key to exit. &pause > nul goto end :ErrMsg01 cls echo &echo. &echo &echo. &echo echo COULD NOT FIND ANY AVI CLIPS!!! echo Press any key to exit. &pause > nul goto end :end
Hope these are of use, to someone.
I'll be back in a week.
:p
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 1 to 30 of 63
Thread
-
Last edited by pcspeak; 11th Dec 2016 at 01:01. Reason: Tidied up the batch files. (Mostly the commented lines.)
-
I've changed the MI batch file to allow for more videos.
Not just AVI. Also added another example.
Code:echo off if exist ~largemovies.txt del /q ~largemovies.txt for %%a in (*.avi) do set video=%%a&& call :MI for %%a in (*.mp4) do set video=%%a&& call :MI for %%a in (*.flv) do set video=%%a&& call :MI for %%a in (*.mkv) do set video=%%a&& call :MI for %%a in (*.webm) do set video=%%a&& call :MI for %%a in (*.mpg) do set video=%%a&& call :MI for %%a in (*.vob) do set video=%%a&& call :MI for %%a in (*.m2v) do set video=%%a&& call :MI goto end :MI :: Get the overall bitrate (Video & Audio) of the clip. ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=General;%%OverallBitRate%%" "%video%" >> ~tmpfile.txt ::set /p OverallBitRate= < ~tmpfile.txt ::del ~tmpfile.txt ::if %OverallBitRate% gtr 1600000 echo "%video%" >> ~largemovies.txt && echo %OverallBitRate% >> ~largemovies.txt ::if %OverallBitRate% gtr 1600000 copy "%video%" e:\a\ :: Get the bitrate of just the video. ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=Video;%%BitRate%%" "%video%" >> ~tmpfile.txt ::set /p BitRate= < ~tmpfile.txt ::del ~tmpfile.txt ::if %BitRate% gtr 1600000 echo "%video%" >> ~largemovies.txt && echo %BitRate% >> ~largemovies.txt ::if %bitrate% gtr 1600000 copy "%video%" e:\a\ :: Find the number of audio channels. ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=Audio;%%Channel(s)%%" "%video%" >> ~tmpfile.txt ::set /p Channel(s)= < ~tmpfile.txt ::del ~tmpfile.txt ::if %Channel(s)% neq 2 echo "%video%" >> ~largemovies.txt && echo %Channel(s)% >> ~largemovies.txt ::if %Channel(s)% neq 2 copy "%video%" e:\a\ :: Find the audio format. "MPEG Audio" = MP3. (and may be others??) ::"C:\VidAud\MediaInfoCLI\mediainfo.exe" "--Inform=Audio;%%Format%%" "%video%" >> ~tmpfile.txt ::set /p Format= < ~tmpfile.txt ::del ~tmpfile.txt ::if "%Format%" neq "MPEG Audio" echo "%video%" >> ~largemovies.txt && echo %Format% >> ~largemovies.txt ::if "%Format%" neq "MPEG Audio" copy "%video%" e:\a\ goto :eof :end ~largemovies.txt
XviD encoded AVI/MP3
I'm sort of stuck in a Rock 'n' Roll/Line Dancing fix.
The above format plays on, pretty much, all dvd players.
That's how my mate's students want it.
Cheers.Last edited by pcspeak; 4th May 2016 at 00:44.
-
Now getting videos taken with mobile phones, video cameras,
tablets and whatever else is out there.
The definition is pretty good, if somewhat shaky on occassion.
Usualy taken with no idea of which way is up.
Code:@echo off :: 1 pass most videos to AVI and MP3 in separate folders. :: Rotate the video and demux to sub folders. if not exist AVI\*.* md AVI if not exist MP3\*.* md MP3 echo To rotate - select a number on your keyboard and then press Enter. echo 0 - No Rotation echo 1 - Clockwise 90 degrees echo 2 - Anticlockwise 90 degrees echo 3 - 180 Degrees set /p r1=0, 1, 2, 3. ? if /i %r1%==1 set r2=-vf transpose=1 if /i %r1%==2 set r2=-vf transpose=2 if /i %r1%==3 set r2=-vf transpose=1,transpose=1 for %%a in (*.mp4) do if not exist "avi\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vtag XVID %r2% -c:v mpeg4 -b:v 1500k -an -threads 0 -y "avi\%%~na.avi" for %%a in (*.avi) do if not exist "avi\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vtag XVID %r2% -c:v mpeg4 -b:v 1500k -an -threads 0 -y "avi\%%~na.avi" for %%a in (*.mov) do if not exist "avi\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi -vtag XVID %r2% -c:v mpeg4 -b:v 1500k -an -threads 0 -y "avi\%%~na.avi" for %%a in (*.avi) do if not exist "mp3\%%~na.mp3" "c:\vidaud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -vn -c:a libmp3lame -ac 2 -b:a 192k -ar 44100 "MP3\%%~na.mp3" for %%a in (*.mov) do if not exist "mp3\%%~na.mp3" "c:\vidaud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -vn -c:a libmp3lame -ac 2 -b:a 192k -ar 44100 "MP3\%%~na.mp3" for %%a in (*.mp4) do if not exist "mp3\%%~na.mp3" "c:\vidaud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -vn -c:a libmp3lame -ac 2 -b:a 192k -ar 44100 "MP3\%%~na.mp3"
Second step is to resize and clean up the video to make DVD compliant.
Code:@echo off :: Mux a new MP3 created by Audacity. :: Look for AVI & MP3 files with matching names. :: If found, mux the video with the new MP3, discarding the old audio. if not exist avi\*.* md avi for %%a in ("*.mp3") do if exist "%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%~na.avi" -i "%%a" -map 0:v -map 1:a -c:v copy -c:a copy -y "avi\%%~na.avi" goto end :end
Last edited by pcspeak; 17th Apr 2016 at 14:18.
-
Had a look at the first batch file I posted.
There's a lot of repetition.
I've now set the filters and sample length as 'Environment Variables'.
I only need to change filters and/or samplelength in one place.
Code:@echo off :: 2 pass most videos to AVI with MP3 audio. if not exist AVI\*.* md AVI set /p rate=Enter bitrate(k)? :: Change filters and sample length here! set filters=-vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 set samplelength=-ss 00:06:00 -to 00:06:30 set /p sample=Sample clip only?(y/n) if /i %sample%==y goto sample for %%a in ("*.mp4") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mp4") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.mts") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mts") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.avi") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.avi") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.mkv") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mkv") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.mpg") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mpg") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.vob") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.vob") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.webm") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.webm") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" for %%a in ("*.m2v") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.m2v") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -i "%%~na.ac3" -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na.avi" goto end :sample for %%a in ("*.mp4") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mp4") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.mts") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mts") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.avi") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.avi") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.mkv") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mkv") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.mpg") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.mpg") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.vob") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.vob") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.webm") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.webm") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" for %%a in ("*.m2v") do Title P1-%rate%k-%%a && if not exist "%%~na-0.log" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~na" -vtag XVID -an -threads 0 -y NUL for %%a in ("*.m2v") do Title P2-%rate%k-%%a && if not exist "AVI\%%~na.avi" "C:\VidAud\ffmpeg32\bin\ffmpeg.exe" -i "%%a" -i "%%~na.ac3" %samplelength% -f avi yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~na" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~na-%rate%.avi" :end
I have 3 internal drives. Drive C: is a SSD.
I've modified my batch file to output to two destinations.
c:\vid1\ --> d:\vid1\ (vid1-D.cmd)
c:\vid2\ --> e:\vid2\ (vid2-E.cmd)
I split the videos between the input folders and run both batch files at the same time.
This gives approx. 33% reduction in total processing time.
Still allows me to do other things.
This is not really the way to go with no SSD.
There will be a lot of drive thrashing and drive life will be reduced.
Cheers.
Last edited by pcspeak; 19th Apr 2016 at 22:13.
-
how about
Code:@echo off setlocal :: 2 pass most videos to AVI with MP3 audio. set "ffmpeg=C:\VidAud\ffmpeg32\bin\ffmpeg.exe" if not exist AVI\*.* md AVI set /p rate=Enter bitrate(k)? :: Change filters and sample length here! set filters=-vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 set samplelength=-ss 00:06:00 -to 00:06:30 set /p sample=Sample clip only?(y/n) if /i not [%sample%]==[y] set "samplelength=" for %%a in ("*.mp4","*.mts","*.avi","*.mkv","*.mpg","*.vob","*.webm","*.m2v") do call :process "%%a" endlocal echo DONE & pause goto :eof :process Title P1-%rate%k-%~1 if not exist "%%~n1-0.log" "%ffmpeg%" -i "%~1" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%%~n1" -vtag XVID -an -threads 0 -y NUL Title P2-%rate%k-%~1 if not exist "AVI\%%~n1.avi" "%ffmpeg%" -i "%~1" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%%~n1" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%%~n1.avi" goto :eof
-
@ pcspeak & _Al_
The long format helps me grasp the short format.
Keep going. -
Nice one _Al_.
I started this batch file well over 2 years ago.
It was only to handle one type of video out of my JVC camera.
It just grew.
I'm not too worried about the size of the batch file.
I realized that others may want to change the batch file to suit.
Hence the variables to make MY most often changes, simple.
I, sort of, agree with sambat. When I revisit I like to have as much detail as convenient.
Thanks for your input. I WILL borrow 1 or 2 techniques.
Thanks to you too, sambat.
Cheers -
@ _Al_
I made a couple of changes to your batch file to suit my DOS environment.
After running the batch file exactly per your post the output video on my pc
didn't had the correct name, just the input parameter description.
\AVI\%~n1.avi
I changed the format of some parameters.
Now works here.
I never use SETLOCAL & ENDLOCAL
Added a few cosmetic spaces for readability.
(If a file has to take up a 4k sector then I'm going to use up to the full 4k.)
Code:@echo off :: 2 pass most videos to AVI with MP3 audio. :: Path to ffmpeg.exe goes here. set ffmpeg=C:\VidAud\ffmpeg32\bin\ffmpeg.exe if not exist AVI\*.* md AVI set /p rate=Enter bitrate(k)? :: Change filters and sample length here! set filters=-vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 set samplelength=-ss 00:06:00 -to 00:06:30 set /p sample=Sample clip only?(y/n) if /i not [%sample%]==[y] set "samplelength=" for %%a in ("*.mp4", "*.flv", "*.mts", "*.avi", "*.mkv", "*.mpg", "*.vob", "*.webm") do call :process "%%a" goto end :process Title P1-%rate%k-%~1 if not exist "%%~n1-0.log" "%ffmpeg%" -i "%~1" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 1 -passlogfile "%~n1" -vtag XVID -an -threads 0 -y NUL Title P2-%rate%k-%~1 if not exist "AVI\%%~n1.avi" "%ffmpeg%" -i "%~1" %samplelength% -f avi %filters% -c:v mpeg4 -b:v %rate%k -pass 2 -passlogfile "%~n1" -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 -threads 0 -y "AVI\%~n1.avi" goto :eof :end
-
Yes, I left double %% there
-double "%%" characters is in that for ... in ...
-one "%" character, if it suppose to be passed variable from a function (our function/subroutine is "process")
also change:
if not exist "%%~n1-0.log"
to:
if not exist "%~n1-0.log"
and
if not exist "AVI\%%~n1.avi"
to:
if not exist "AVI\%~n1.avi" -
if not exist "%%~n1-0.log"
to:
if not exist "%~n1-0.log"Last edited by pcspeak; 18th May 2016 at 00:34.
-
This is a slight rehash of a batch file I posted earlier in this thread.
It uses a couple of recommendations suggested by _Al_.
The output is AVI.
The video filters have not changed, much.
Please note the following methods are not my innovation.
Greater minds have been at work.
The input audio is expected to be 6channel (5.1).
Output will be 2channel (stereo).
An attempt is made to reduce the volume of all audio except
the actor's dialogue, which I suspect is the centre channel(s).
Then the audio is normalized.
The output audio will have the volume enhanced to increase
the level of very soft sounds, and the peak volumes reduced
to remove "most" clipping.
If the input audio is 2channel?
The filter is set to do only the normalization.
I've tested it on 2 DVDs (5.1) and 1 web download (stereo).
The download was a reality show. Which show? Don't ask. I'm not proud of myself.
Code:@echo off :: Most videos to AVI. if not exist NEW\*.* md NEW :: Path to ffmpeg.exe. set ffmpeg=C:\VidAud\ffmpeg32\bin\ffmpeg.exe :: Path to MediaInfo Command Line. set MI_CLI=C:\VidAud\MediaInfoCLI\mediainfo.exe set /p bitrate=Bitrate? for %%a in ("*.mp4", "*.flv", "*.wmv", "*.mts", "*.avi", "*.mkv", "*.mpg", "*.mov", "*.vob", "*.webm", "*.ts") do call :process "%%a" goto end :process :: Set filters here. set vfilters=-vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2 set afilters=-af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0.30*BR",dynaudnorm :: Set sample length here. set samplelength=-ss 00:05:00 -to 00:05:30 set /p sample=Sample clip only?(y/n) if /i not [%sample%]==[y] set "samplelength=" :: If audio channels=2 change the audio filters. set video=%~1 %MI_CLI% "--Inform=Audio;%%Channel(s)%%" "%video%" >> tmpfile.txt set /p Channel(s)= < tmpfile.txt del tmpfile.txt set video= if %Channel(s)% equ 2 set afilters=-af dynaudnorm Title "%bitrate%k-%~n1" if exist "NEW\%~n1.avi" ( echo %~n1.avi already exists... set /p ok=Overwrite the video? [Y,N] ) if /i [%ok%]==[n] goto :eof "%ffmpeg%" -i "%~1" %samplelength% -f AVI %vfilters% -c:v mpeg4 -b:v %bitrate%k -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 %afilters% -threads 0 -y "NEW\%~n1.AVI" goto :eof :end echo All done. echo Press any key to exit... &pause>nul
Cheers
Last edited by pcspeak; 30th Nov 2016 at 23:37.
-
Beer for 2 pass, any file and target size (4GiB-1) - another beer for ability to select particular language tracks (both audio and sub).
-
Tried the 32 and 64 bit versions of ffmpeg.
After I insert the bitrate and tell it that I want a sample, I echo the variables and the command line just before it calls ffmpeg: the variables seem seem ok, then It gives the error.
Bitrate?1200
Sample clip only?(y/n)y
"2.mpg"
-ss 00:05:00 -to 00:05:30
-vf yadif=0:-1:0,unsharp,scale=640:trunc(ow/a/2)*2
1200
-af "pan=stereo|FL=FC+0.30*FL+0.30*BL|FR=FC+0.30*FR+0. 30*BR",dynaudnorm
echo "%ffmpeg%" -i "%~1" %samplelength% -f AVI %vfilters% -c:v mpeg4 -b:v %bitrate%k -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 %afilters% -threads 0 -y "NEW\%~n1.AVI"
'""' is not recognized as an internal or external command,
operable program or batch file.
Press any key to exit... -
Hi.
Just tested on my machine. Worked for me. ????
set ffmpeg=C:\Program Files (x86)\ffmpeg32\bin\ffmpeg.exe
"%ffmpeg%" -i "%~1" %samplelength% -f AVI %vfilters% -c:v mpeg4 -b:v %bitrate%k -vtag XVID -c:a libmp3lame -b:a 128k -ar 44100 -ac 2 %afilters% -threads 0 -y "NEW\%~n1.AVI"'""' is not recognized as an internal or external command,
operable program or batch file.
Press any key to exit... "
Cheers.Last edited by pcspeak; 1st Dec 2016 at 17:31. Reason: misread sambat's post.
-
Simply placing quotes just around the path failed, thus:
set ffmpeg="C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe"
I placed the quotes immediately in front of ffmpeg and it worked, thus:
set "ffmpeg=C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe"
The last line in the fifth post was how I fixed it.
http://superuser.com/questions/119610/spaces-and-parenthesis-in-windows-path-variable-...up-batch-files -
Allowing spaces in file names, whilst handy, has been a real pain for batch coders. And full on programmers.
Thousands upon thousands of errors have occurred because of.
I can live with:
Programs
ProgramFiles
ProgramFiles-x86
MyDocs
Documents
MyDocuments
etc. etc. etc.
One of those Microsoft decisions that, in hindsight, was a bad one.
Mind you, long file names are a good thing.
Microsoft seems to think so too.Code:'C:\Windows\SoftwareDistribution\DeliveryOptimization\f9b50ea393d519f560d8fd6bc7947e7cfdaf8095\'
8.3 file names were starting to get seriously vague.
Anyhoo, it keeps us on our toes.Last edited by pcspeak; 1st Dec 2016 at 23:06.
-
@pandy
Sorry. You're on your own.
p.s. Op shops. Weekend markets. garage sales. Average price $2.00 for a scratch free DVD. Release dates are from 5-10 years ago.
I start with DVDShrink. Preferences: Target=DVD-9, 1 VOB(no splitting). Default language - Eng. Audio 5.1. Forced subs. Then Re-author.
DVDDecrypter with similar preferences as above.
vobmerge still works for me.
Basically I end up with a single VOB containing the subs and audio I want. I feed it to my batch files.
I have an almost identical batch file to the one above that outputs an MP4.
Forced subs only? We'd best start a new thread.Last edited by pcspeak; 1st Dec 2016 at 23:35.
-
I use:
set ffmpeg=C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe
...
"%ffmpeg%" etc...
I don't know how this: works for you. It does not work for me:
'C:\Program' is not recognized as an internal or external command, operable program or batch file. -
-
Last edited by pcspeak; 11th Dec 2016 at 01:00. Reason: I was dumb enough to leave the double quotes in. :o(
-
Guys I have plenty of subroutines that one can simply call with "CALL variable1 variable2 ..." function. They rather be within script otherwise firewalls complain and it is not that nice if they are all in some BAT file (like "DVavi helper.zip" was done years back). Those subroutines can be just stocked at the bottom of the same script out of sight, making that script more clean. Those subroutines can be submerged into themselves, I myself have 5-6 levels submerged and it simply works ...
These subroutines can get mediainfo into variables, check avisynth output (before actually you render a video), autocrop etc.
I can post them here one by one slowly to not overwhelm anyone or let some time for questions
First thing you do though is to get Notepad++ , copy/paste script in there, set language to batch and it is much more easier to read in script
First basic one is getting mediainfo from video into variables, you need to download mediainfo CLI from here not mediainfo from mediainfo website first
Code:@echo off SETLOCAL ENABLEDELAYEDEXPANSION echo video mediainfo into variables set "video=C:\video\my_video.avi" set "mediainfo=C:\tools\Mediainfo CLI\Mediainfo.exe" set "temp_folder=C:\Temp" if not exist "%temp_folder%" echo creating temp folder: "%temp_folder%"& MD "%temp_folder%" call :run_mediainfo "%video%" echo. echo MediaInfo reports: if defined serving echo video: frame serving %format%,%w% x %h%, %fps% fps, ar^=%ar%, %duration% if not defined serving echo video: %format%, %w% x %h%, %fps% fps, %scan_type%, %scan_order%, ar^=%ar%, %cs%, %ch_sub%, %duration% echo audio: sampling rate %sampling% echo. ENDLOCAL&echo press any key to exit&pause>nul&exit :run_mediainfo <video file> set field_order=unknown set format=unknown set scan_order=unknown set scan_type=unknown set fps=unknown set ar=unknown set w=unknown set h=unknown set duration=unknown set fps=unknown set ar=unknown set cs=unknown set ch_sub=unknown set sampling=unknown or no audio if not exist "%mediainfo%" echo ERROR, Mediainfo path is not defined or file is missing & goto :eof if not exist "%~1" echo ERROR, Filename path is not defined or file is missing& goto :eof "%mediainfo%" "%~1" > "%temp_folder%\mediainfo.txt" set info="%temp_folder%\mediainfo.txt" findstr /c:"Scan order " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 (set /p scan_order= < "%temp_folder%\temp.txt" & set scan_order=!scan_order:*: =!) else (set "scan_order=") findstr /c:"Scan type " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 set /p scan_type= < "%temp_folder%\temp.txt" & set scan_type=!scan_type:*: =! findstr /b /i /c:"Duration " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 set /p duration= < "%temp_folder%\temp.txt" & set duration=!duration:*: =! findstr /b /i /c:"Format " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 set /p format= < "%temp_folder%\temp.txt" & set format=!format:*: =! findstr /b /i /c:"Width " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 set /p w= < "%temp_folder%\temp.txt" & set w=!w:*:=! & set w=!w: pixels=! & set w=!w: =! findstr /b /i /c:"Height " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 ( set /p h= < "%temp_folder%\temp.txt" set h=!h:*:=! set h=!h: pixels=! set h=!h: =! ) findstr /b /i /c:"Display aspect ratio " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 ( set /p ar= < "%temp_folder%\temp.txt" set ar=!ar:*: =! ) findstr /b /i /c:"Frame rate " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 ( set /p fps= < "%temp_folder%\temp.txt" set fps=!fps:*: =! for /f "tokens=1 delims= " %%x in ("!fps!") do set "fps=%%x" ) findstr /b /i /c:"Color space " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 ( set /p cs= < "%temp_folder%\temp.txt" set cs=!cs:*: =! ) findstr /b /i /c:"Chroma subsampling " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 ( set /p ch_sub= < "%temp_folder%\temp.txt" set ch_sub=!ch_sub:*: =! ) findstr /b /i /c:"Sampling rate " %info% > "%temp_folder%\temp.txt" if %errorlevel%==0 ( set /p sampling= < "%temp_folder%\temp.txt" set sampling=!sampling:*: =! ) set "serving=" findstr /b /i /c:"Format : VFW" %info%>nul if %errorlevel%==0 set serving=yes goto :eof
Last edited by _Al_; 2nd Dec 2016 at 15:54.
-
Jagabo years back introduced here that wonderful idea of dropping files on batch file, which has exactly the the same effect as writing command line manually.
So taking above example, you grab any video file and you drop it on batch file getting mediaifo on screen and in variables that you can sort out later for any purpose:
Code:@echo off SETLOCAL ENABLEDELAYEDEXPANSION echo video mediainfo into variables set "mediainfo=C:\tools\Mediainfo CLI\Mediainfo.exe" set "temp_folder=C:\Temp" if not exist "%temp_folder%" echo creating temp folder: "%temp_folder%"& MD "%temp_folder%" call :run_mediainfo "%~1" echo. echo MediaInfo reports: if defined serving echo video: frame serving %format%,%w% x %h%, %fps% fps, ar^=%ar%, %duration% if not defined serving echo video: %format%, %w% x %h%, %fps% fps, %scan_type%, %scan_order%, ar^=%ar%, %cs%, %ch_sub%, %duration% echo audio: sampling rate %sampling% echo. ENDLOCAL&echo press any key to exit&pause>nul&exit rem here youpaste that :run_mediainfo subroutine
You might create batch script where dropping videofile on batch script would bring same text view as installed mediainfo does. So you dot need to install media info at all. You just use portable version, CLI version. You do not need to call :run_mediainfo for this:
Code:@echo off SETLOCAL echo video mediainfo into text output set "mediainfo=C:\tools\Mediainfo CLI\Mediainfo.exe" set "temp_folder=C:\Temp" if not exist "%temp_folder%" MD "%temp_folder%" "%mediainfo%" "%~1" > "%temp_folder%\mediainfo.txt" START "notepad.exe" "%temp_folder%\mediainfo.txt" ENDLOCAL&exit
So here is a batch, you can drop a video file on it and it tests paths used in script, just subroutine is called for particular path (in that script dropped videofile and mediainfo path):
Code:@echo off SETLOCAL ENABLEDELAYEDEXPANSION echo video mediainfo into variables set "mediainfo=C:\tools\Mediainfo CLI\Mediainfo.exe" set "temp_folder=C:\Temp" set "fail=" call :illegal_character_check "%temp_folder%" call :illegal_character_check "%~1" call :illegal_character_check "%mediainfo%" if defined fail ENDLOCAL&echo press any key to exit&pause>nul&exit if not exist "%temp_folder%" MD "%temp_folder%" call :run_mediainfo "%~1%" echo. echo MediaInfo reports: if defined serving echo video: frame serving %format%,%w% x %h%, %fps% fps, ar^=%ar%, %duration% if not defined serving echo video: %format%, %w% x %h%, %fps% fps, %scan_type%, %scan_order%, ar^=%ar%, %cs%, %ch_sub%, %duration% echo audio: sampling rate %sampling% echo. ENDLOCAL&echo press any key to exit&pause>nul&exit :illegal_character_check <file> rem definitively allowed characters: space and . _-:\0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz set "var=%~1" for %%i in (^& ^^ + ^( ^) @ # $ { } [ ] ' ; , ` ^%% ^") do set var=!var:%%i=! :search for /f "tokens=1* delims=~=" %%j in ('echo !var!') do ( set var=%%j%%k set flag=%%k ) if not "%flag%"=="" goto :search if exist "%var%" goto :eof set fail=yes echo Did not pass illegal character check: echo "%~1" echo remove illegal characters to avoid problems with this batch script or Avisynth echo. goto :eof rem here you paste that :run_mediainfo subroutine
Code:if defined fail ENDLOCAL&echo press any key to exit&pause>nul&exit
Last edited by _Al_; 23rd Jan 2017 at 14:50.
-
MediaInfoCLI can find out only one concrete thing using other method but unfortunately this method cannot find scan order or chroma and some other things:
Code:@echo off SETLOCAL echo video mediainfoCLI set "mediainfo=C:\tools\Mediainfo CLI\Mediainfo.exe" set "temp_folder=C:\Temp" if not exist "%temp_folder%" MD "%temp_folder%" "%Mediainfo%" --Inform=Video;%%FrameRate%% "%~1" > "%temp_folder%\temp.tmp" set /p fps=<"%temp_folder%\temp.tmp" echo Mediainfo reports: fps=%fps% ENDLOCAL&echo press any key to exit&pause>nul&exit
means that it is looked only in video section not audio section
more in manual that is included when you download MediainfoCLI.zip
So advantage: you do not need to parse anything to get the value, you get it right away
disadvantage: not all video properties can be found using this (above method parsing mediainfo.txt file yes)
EDIT: downloading latest mediainfo CLI it detects even scan order, chroma subsumpling, I think everything it suppose to. maybe I messed up something before, .., so this method might be used to get any video parameters. All parameters that can be found could be printed running this BAT, the list is long so it is better to print it in txt file, in this case parameters.txt rather that print it in command prompt:
Code:@echo off SETLOCAL echo video mediainfoCLI set "mediainfo=C:\tools\Mediainfo CLI\Mediainfo.exe" set "temp_folder=C:\Temp" if not exist "%temp_folder%" MD "%temp_folder%" "%Mediainfo%" --Info-Parameters > "%temp_folder%\parameters.txt" START "notepad.exe" "%temp_folder%\parameters.txt" ENDLOCAL&exit
Last edited by _Al_; 26th Dec 2016 at 22:04.
-
Creating Avisynth script dropping avi videofile onto this batch file:
Code:@echo off SETLOCAL ENABLEDELAYEDEXPANSION set "temp_folder=C:\Temp" if not exist "%temp_folder%" MD "%temp_folder%" REM checking for illegal character input call :illegal_character_check "%~1" if defined fail ENDLOCAL&echo press any key to exit&pause>nul&goto :eof rem checking if extension is avi for %%i in ("%~1") do set "extension=%%~xi"& set "name=%%~ni" if /i not [%extension%] == [.avi] echo file is not avi& pause& goto :eof echo Avisource("%~1") > "%temp_folder%\%name%.avs" echo LanczosResize(1920,1080) >> "%temp_folder%\%name%.avs" echo created avisynth script: type "%temp_folder%\%name%.avs" pause& goto :eof rem here you include :illegal_character_check subroutine
-
Now that script above could be modified to add a subroutine that checks if there is a syntax error in the script. Just syntax error, not if script is functioning well or proper filters were used etc.
This is done by creating a wrapper for original avisynth script and loading that into avsmeter (make sure it is latest), it could be virtualdub or something else, point is just to load it somewhere and it would create error log if there is syntax error, then if that happens error info is printed in command prompt:
Code:@echo off SETLOCAL ENABLEDELAYEDEXPANSION set "AVSMeter=C:\tools\AVSMeter\AVSMeter.exe" set "temp_folder=C:\Temp" if not exist "%temp_folder%" MD "%temp_folder%" REM checking for illegal character input call :illegal_character_check "%~1" call :illegal_character_check "%AVSMeter%" if defined fail ENDLOCAL&echo press any key to exit&pause>nul&goto :eof rem checking if extension is avi for %%i in ("%~1") do set "extension=%%~xi"& set "name=%%~ni" if /i not [%extension%] == [.avi] echo file is not avi& pause& goto :eof echo Avisource("%~1") > "%temp_folder%\%name%.avs" echo LLanczosResize(1920,1080) >> "%temp_folder%\%name%.avs" REM checking script for errors call :check_avs_for_errors "%temp_folder%\%name%.avs" if exist "%temp_folder%\error.log" endlocal & echo press any key to exit ... & pause>nul & goto :eof echo generated avisynth script is printed between lines: echo ------------------------------------------------------------- type "%temp_folder%\%name%.avs" echo ------------------------------------------------------------- echo. pause& ENDLOCAL& goto :eof rem here you include :illegal_character_check subroutine :check_avs_for_errors <avs script> rem goal is to run avisynth script wrapper with avsmeter.exe just to run avisynth script, where wrapper would generate error.log if there is a syntax error in script echo avisynth script syntax error check, wait ... if exist "%temp_folder%\error.log" del "%temp_folder%\error.log" REM creating wrapper for catching avisynth error echo script = "%~1" > "%temp_folder%\avswrapper.avs" echo log = "%temp_folder%\error.log" >> "%temp_folder%\avswrapper.avs" echo try { Import(script) } >> "%temp_folder%\avswrapper.avs" echo catch (err) { >> "%temp_folder%\avswrapper.avs" echo WriteFileStart(BlankClip(), log, "script", """ ": " """, "err", append=true) >> "%temp_folder%\avswrapper.avs" echo } >> "%temp_folder%\avswrapper.avs" for %%i in ("%avsmeter%") do set "avsmeter_path=%%~dpi" if exist "%avsmeter_path%AVSMeter.ini" del "%avsmeter_path%AVSMeter.ini" temp.ini "%AVSMeter%" "%temp_folder%\avswrapper.avs" -range=0,1 2>nul if exist "%avsmeter_path%temp.ini" del "%avsmeter_path%AVSMeter.ini" if exist "%avsmeter_path%temp.ini" ren "%avsmeter_path%temp.ini" AVSMeter.ini if exist "%avsmeter_path%temp.ini" del "%avsmeter_path%temp.ini" if not exist "%temp_folder%\error.log" goto :eof echo. echo ERROR, syntax error detected in this avisynth script: type "%~1" echo ERROR Line: type "%temp_folder%\error.log" | findstr /v avswrapper.avs goto :eof
not sure why it prints error line two times ... but it worksLast edited by _Al_; 26th Dec 2016 at 22:23.
-
AvsMeter is a great utility, not only to analyze speed, but also it can get video properties coming out of Avisynth script, that could be really handy sometimes. Like check frame rate, width, height before video is even actually encoded, before video really exists and more importantly it could be handy to get those values into batch script variables, so time is not wasted to actually encode it first if script processes things automatically.
avsmeter command line could be:
"avsmeter.exe" "my_script.avs" -log
where log is specified in avsmeter.ini, that is in the same folder as avsmeter.exe
so for example to get frame rate, height and width coming out of avisynth script, drop avisynth file onto this batch script,
correct the path for avsmeter first depending where it is in your PC:
Code:@echo off echo Getting some avisynth script output properties into variable with avsmeter utility set "avsmeter=C:\tools\AVSMeter\AVSMeter.exe" if "%~1" =="" echo you need to drop avisynth script file onto this batch script & pause& goto :eof if /i not "%~x1" == ".avs" echo dropped file does not have avs extension& pause& goto :eof if exist "%temp%" set "temp_folder=%temp%" if not exist "%temp_folder%" set "temp_folder=C:\temp" if not exist "%temp_folder%" MD "%temp_folder%" rem getting avsmeter.exe path for %%i in ("%avsmeter%") do set "avsmeter_path=%%~dpni" rem avsmeter.INI must be in the same directory as avsmeter.exe rem I did not figured out how to specify path for log in avsmeter command line, it only worked to write it in INI file: echo LogDirectory=%temp_folder% > "%avsmeter_path%.ini" echo. rem avsmeter command line analysing only couple of first frames, no need for higher range for what we need rem also not printing anything into cmd prompt window, only to create log file rem remember it might index a file if not avisource is used, but that index file is needed later anyway ... "%avsmeter%" "%~1" -log -range=0,1 for %%i in ("%~1") do set "avisynth_name=%%~ni" findstr /b /i /c:"Frame height:" "%temp_folder%\%avisynth_name%.log" > "%temp_folder%\temp.txt" set /p line= < "%temp_folder%\temp.txt" set line=%line:Frame height:=% set height=%line: =% findstr /b /i /c:"Frame width:" "%temp_folder%\%avisynth_name%.log" > "%temp_folder%\temp.txt" set /p line= < "%temp_folder%\temp.txt" set line=%line:Frame width:=% set width=%line: =% findstr /b /i /c:"Framerate:" "%temp_folder%\%avisynth_name%.log" > "%temp_folder%\temp.txt" set /p line= < "%temp_folder%\temp.txt" set line=%line:Framerate:=% for /f "tokens=1,2 delims= " %%x in ("%line%") do set fps=%%x echo. echo Avisynth script output is %width%x%height%, %fps%fps echo. pause
Last edited by _Al_; 7th Jan 2017 at 13:56.
-
Or you can find out avisynth version installed in PC and compare it if version is at least 2.6.0, just run this batch, no file dropping needed:
again , fix your avsmeter path in that script first
Code:@echo off echo Getting Avisynth version into variable with avsmeter set "avsmeter=C:\tools\AVSMeter\AVSMeter.exe" if exist %SYSTEMROOT%\SysWOW64\avisynth.dll set "avs=yes" if exist %SYSTEMROOT%\System32\avisynth.dll set "avs=yes" if not defined avs ( echo WARNING, avisynth.dll was not detected in SysWOW64 or System32 directory, Avisynth is perhaps not installed echo. ) if exist "%temp%" set "temp_folder=%temp%" if not exist "%temp_folder%" set "temp_folder=C:\temp" if not exist "%temp_folder%" MD "%temp_folder%" for %%i in ("%avsmeter%") do set "avsmeter_path=%%~dpni" echo LogDirectory=%temp_folder% > "%avsmeter_path%.ini" echo blankclip() > "%temp_folder%\blank.avs" echo wait ... "%avsmeter%" "%temp_folder%\blank.avs" -log 2>nul findstr /b /i /c:"File version" "%temp_folder%\blank.log" > "%temp_folder%\temp.txt" rem storing that line into a variable set /p line= < "%temp_folder%\temp.txt" rem deleting "File version:" string from that line set line=%line:File version:=% rem deleting spaces from that line, to keep avisynth number version only set line=%line: =% echo Avisynth version is %line% echo. echo parsing result to find out if version is at least 2.6.0 rem parsing that line to get first and second number between dots for /f "tokens=1,2 delims=." %%x in ("%line%") do set first=%%x& set second=%%y set "ok=" if %first% EQU 2 if %second% GEQ 6 set ok=yes if %first% GTR 2 set ok=yes echo. if defined ok echo Avisynth version %line% works for us, HCEncoder 028 should have Avisynth version higher than 2.6 if not defined ok echo WARNING, HcEncoder 028 recommends at least Avisynth 2.6.0.0 yours is %line% pause
Similar Threads
-
Batch Rename Video Files
By TheRandomOne in forum Newbie / General discussionsReplies: 8Last Post: 22nd Jan 2016, 10:36 -
Batch muxing video files with subtitles
By calexicoca in forum SubtitleReplies: 4Last Post: 16th May 2015, 09:31 -
Batch muxing video files on a mac
By okizen in forum Video ConversionReplies: 4Last Post: 28th Nov 2014, 15:25 -
Need help converting batch video files!
By tcarp in forum Video ConversionReplies: 3Last Post: 13th Mar 2014, 08:10 -
Batch processing all my video files.
By Paxmilitaris in forum Newbie / General discussionsReplies: 1Last Post: 25th Mar 2013, 16:43