Difference between revisions of "Batch Encoding"
From SDA Knowledge Base
Ballofsnow (Talk | contribs) (→The batch files: Added word-wrap on <pre> tags. Removed line break note.) |
Ballofsnow (Talk | contribs) (→Setup: nero) |
||
(13 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
This guide assumes you are familiar with encoding through CLI or you are comfortable with MeGUI. | This guide assumes you are familiar with encoding through CLI or you are comfortable with MeGUI. | ||
− | Why encode with batch files? This is a good question. When you are encoding many videos, you tend to use the same configuration settings for H.264 | + | Why encode with batch files? This is a good question. When you are encoding many videos, you tend to use the same configuration settings for H.264, AAC, Xvid and MP3. You may have even created your own profiles already. Once you are comfortable with MeGUI and realize how easy it is to use, you start getting annoyed of repeatedly clicking the same options. You already know what you want from the start, so why not simplify the process? |
However, there are some disadvantages to batch file encoding that you should know. In MeGUI you are able to postpone/delete jobs without interrupting the current encoding job. You can even stop the current job and the program will continue on with the rest. With batch files you'll have to stop the whole process cold, edit encode.bat and then run it again. | However, there are some disadvantages to batch file encoding that you should know. In MeGUI you are able to postpone/delete jobs without interrupting the current encoding job. You can even stop the current job and the program will continue on with the rest. With batch files you'll have to stop the whole process cold, edit encode.bat and then run it again. | ||
Line 11: | Line 11: | ||
==Setup== | ==Setup== | ||
− | Choose a folder where you will do all your operations and place the following files inside | + | Choose a folder where you will do all your operations and place the following files inside. |
− | * [http://www. | + | * [http://www.x264.nl/ x264.exe] |
− | * [ | + | * [[Media:NeroDigitalAudio.zip|neroaacenc.exe]] |
− | * [http://www. | + | * [http://www.videohelp.com/tools/mp4box mp4box.exe] |
* [[Media:BePipe.zip|BePipe.exe]] | * [[Media:BePipe.zip|BePipe.exe]] | ||
+ | * [[Media:xvid_encraw.zip|xvid_encraw.exe]] | ||
+ | * [[Media:ffmpeg.zip|ffmpeg.exe]] | ||
* Your avisynth scripts and source files (if your script uses relative paths) | * Your avisynth scripts and source files (if your script uses relative paths) | ||
Line 24: | Line 26: | ||
Create a batch file by first creating a text document and changing the extension to bat. | Create a batch file by first creating a text document and changing the extension to bat. | ||
− | Parameter list - 2pass | + | Parameter list - 2pass |
* %1 - avisynth script | * %1 - avisynth script | ||
* %2 - output file name without mp4 extension | * %2 - output file name without mp4 extension | ||
Line 33: | Line 35: | ||
* %7 - delete elementary streams after muxing, 0/blank=off, 1=on | * %7 - delete elementary streams after muxing, 0/blank=off, 1=on | ||
− | Parameter list - 1pass | + | Parameter list - 1pass |
* %1 - avisynth script | * %1 - avisynth script | ||
* %2 - output file name without mp4 extension | * %2 - output file name without mp4 extension | ||
Line 39: | Line 41: | ||
* %4 - quantizer - 17 should be used for 320x240 resolution, 19 for 640x480 or higher. | * %4 - quantizer - 17 should be used for 320x240 resolution, 19 for 640x480 or higher. | ||
* %5 - delete elementary streams after muxing, 0/blank=off, 1=on | * %5 - delete elementary streams after muxing, 0/blank=off, 1=on | ||
+ | |||
+ | Parameter list - xvid | ||
+ | * %1 - avisynth script | ||
+ | * %2 - output file name without avi extension | ||
+ | * %3 - video bitrate | ||
+ | * %4 - audio bitrate | ||
+ | * %5 - delete stats file, 0=off, 1=on | ||
+ | * %6 - delete elementary video stream, 0=off, 1=on | ||
Line 47: | Line 57: | ||
</nowiki></pre> | </nowiki></pre> | ||
− | '''encode.bat''' - The main batch file. The call lines are how you set up your jobs. Everything below that you'll change maybe once. Look at the parameter list to see what the values correspond to. As you can see, starting from the left, %1 refers to | + | '''encode.bat''' - The main batch file. The call lines are how you set up your jobs. Everything below that you'll change maybe once. Look at the parameter list to see what the values correspond to. As you can see, starting from the left, %1 refers to script_mq.avs and you keep going to the right, ending with %7 referring to the value 1 which means the elementary streams will be deleted after being multiplexed. |
− | You need to configure the lines with x264 to your liking. If you are using MeGUI and already have your own profiles, you can look at the command line by clicking on config and looking at the bottom part of the window. Or don't change anything, the settings here are quite reasonable. | + | You need to configure the lines with x264 and xvid to your liking. If you are using MeGUI and already have your own profiles, you can look at the command line by clicking on config and looking at the bottom part of the window. Or don't change anything, the settings here are quite reasonable. |
− | <pre style="word-wrap:break-word;"><nowiki> | + | <font color="green"><b>Tip:</b> You can tell the encoder to skip a call line by typing REM before it.</font> |
+ | |||
+ | <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><nowiki> | ||
+ | REM SDA batch encoder v1.1 | ||
@echo off | @echo off | ||
− | call :2pass | + | call :2pass script_mq.avs script_lq 128 64000 17 1 1 |
− | call :2pass | + | call :2pass script_mq.avs script_mq 512 64000 17 1 1 |
− | call :2pass | + | call :2pass script_hq.avs script_hq 2048 128000 19 1 1 |
− | call :2pass | + | call :2pass script_hq.avs script_iq 5000 320000 19 1 1 |
− | call :1pass | + | call :1pass script_hq.avs script_qp19_iq 320000 19 1 |
+ | |||
+ | call :xvid script_mq.avs script_mq 512 64 1 1 | ||
+ | call :xvid script_mq.avs script_lq 128 64 1 1 | ||
+ | |||
echo Finished! | echo Finished! | ||
Line 66: | Line 83: | ||
:2pass | :2pass | ||
− | x264.exe --pass 1 --bitrate %3 --stats "%2.stats" | + | REM TURBO |
+ | x264.exe --pass 1 --bitrate %3 --stats "%~dp1%2.stats" --bframes 5 --direct auto --subme 1 --analyse none --qpmin %5 --me dia --threads auto --thread-input --progress --no-psnr --no-ssim --output NUL %1 | ||
− | x264.exe --pass 2 --bitrate %3 --stats "%2.stats" --ref 8 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --weightb --subme 7 --trellis 1 --analyse p8x8,b8x8,i4x4,p4x4 --qpmin %5 --me umh --threads auto --thread-input --progress --no-psnr --no-ssim --output "%2_video.mp4 | + | x264.exe --pass 2 --bitrate %3 --stats "%~dp1%2.stats" --ref 8 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --weightb --direct auto --subme 7 --trellis 1 --analyse p8x8,b8x8,i4x4,p4x4 --qpmin %5 --me umh --threads auto --thread-input --progress --no-psnr --no-ssim --output "%~dp1%2_video.mp4" %1 |
− | bepipe.exe --script "DirectShowSource(^% | + | bepipe.exe --script "DirectShowSource(^%~f1^)" | "neroAacEnc.exe" -br %4 -lc -if - -of "%~dp1%2_audio.mp4" |
− | MP4Box.exe -new -add "%2_video.mp4" -add "%2_audio.mp4" "%2.mp4" | + | MP4Box.exe -new -add "%~dp1%2_video.mp4" -add "%~dp1%2_audio.mp4" "%~dp1%2.mp4" |
− | if "%6" == "1" del %2.stats | + | if "%6" == "1" del "%~dp1%2.stats" |
− | if "%7" == "1" del %2_video.mp4 | del %2_audio.mp4 | + | if "%7" == "1" del "%~dp1%2_video.mp4" | del "%~dp1%2_audio.mp4" |
GOTO :EOF | GOTO :EOF | ||
Line 81: | Line 99: | ||
:1pass | :1pass | ||
− | x264.exe --qp %4 --ref 8 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --weightb --nf --subme 7 --analyse p8x8,b8x8,i4x4,p4x4 --threads auto --thread-input --progress --no-psnr --no-ssim --output "%2_video.mp4" "%1" | + | x264.exe --qp %4 --ref 8 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --weightb --nf --direct auto --subme 7 --analyse p8x8,b8x8,i4x4,p4x4 --threads auto --thread-input --progress --no-psnr --no-ssim --output "%~dp1%2_video.mp4" %1 |
+ | |||
+ | bepipe.exe --script "DirectShowSource(^%~f1^)" | "neroAacEnc.exe" -br %3 -lc -if - -of "%~dp1%2_audio.mp4" | ||
+ | |||
+ | MP4Box.exe -new -add "%~dp1%2_video.mp4" -add "%~dp1%2_audio.mp4" "%~dp1%2.mp4" | ||
+ | |||
+ | if "%5" == "1" del "%~dp1%2_video.mp4" | del "%~dp1%2_audio.mp4" | ||
+ | |||
+ | GOTO :EOF | ||
+ | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | ||
+ | :xvid | ||
+ | |||
+ | xvid_encraw.exe -i %1 -bitrate %3 -pass1 "%~dp1%2.stats" -kboost 100 -ostrength 15 -oimprove 15 -odegrade 15 -overhead 0 -vhqmode 3 -qpel -gmc -closed_gop -lumimasking -max_bframes 3 -bvhq -threads 1 | ||
+ | |||
+ | xvid_encraw.exe -i %1 -bitrate %3 -pass2 "%~dp1%2.stats" -avi "%~dp1%2_video.avi" -kboost 100 -ostrength 15 -oimprove 15 -odegrade 15 -overhead 0 -vhqmode 3 -qpel -gmc -closed_gop -lumimasking -max_bframes 3 -bvhq -threads 1 | ||
+ | |||
+ | bepipe.exe --script "DirectShowSource(^%~f1^)" | lame.exe -b 64 --cbr -h --silent - "%~dp1%2_audio.mp3" | ||
− | + | ffmpeg.exe -i "%~dp1%2_audio.mp3" -acodec copy -i "%~dp1%2_video.avi" -vcodec copy -y "%~dp1%2.avi" | |
− | + | if "%5" == "1" del "%~dp1%2.stats" | |
− | if "% | + | if "%6" == "1" del "%~dp1%2_video.avi" | del "%~dp1%2_audio.mp3" |
GOTO :EOF | GOTO :EOF |
Latest revision as of 21:08, 27 October 2007
Contents
Introduction
This guide assumes you are familiar with encoding through CLI or you are comfortable with MeGUI.
Why encode with batch files? This is a good question. When you are encoding many videos, you tend to use the same configuration settings for H.264, AAC, Xvid and MP3. You may have even created your own profiles already. Once you are comfortable with MeGUI and realize how easy it is to use, you start getting annoyed of repeatedly clicking the same options. You already know what you want from the start, so why not simplify the process?
However, there are some disadvantages to batch file encoding that you should know. In MeGUI you are able to postpone/delete jobs without interrupting the current encoding job. You can even stop the current job and the program will continue on with the rest. With batch files you'll have to stop the whole process cold, edit encode.bat and then run it again.
Setup
Choose a folder where you will do all your operations and place the following files inside.
- x264.exe
- neroaacenc.exe
- mp4box.exe
- BePipe.exe
- xvid_encraw.exe
- ffmpeg.exe
- Your avisynth scripts and source files (if your script uses relative paths)
The batch files
Create a batch file by first creating a text document and changing the extension to bat.
Parameter list - 2pass
- %1 - avisynth script
- %2 - output file name without mp4 extension
- %3 - video bitrate
- %4 - audio bitrate
- %5 - minimum quantizer - 17 should be used for 320x240 resolution, 19 for 640x480 or higher.
- %6 - delete stats file after encoding, 0=off, 1=on
- %7 - delete elementary streams after muxing, 0/blank=off, 1=on
Parameter list - 1pass
- %1 - avisynth script
- %2 - output file name without mp4 extension
- %3 - audio bitrate
- %4 - quantizer - 17 should be used for 320x240 resolution, 19 for 640x480 or higher.
- %5 - delete elementary streams after muxing, 0/blank=off, 1=on
Parameter list - xvid
- %1 - avisynth script
- %2 - output file name without avi extension
- %3 - video bitrate
- %4 - audio bitrate
- %5 - delete stats file, 0=off, 1=on
- %6 - delete elementary video stream, 0=off, 1=on
runatlow.bat - This will run encode.bat in low priority mode like MeGUI does. It will let you run other things while the encoding is taking place without computer lag, though doing other things will slow down the encoding.
start /LOW /B encode.bat
encode.bat - The main batch file. The call lines are how you set up your jobs. Everything below that you'll change maybe once. Look at the parameter list to see what the values correspond to. As you can see, starting from the left, %1 refers to script_mq.avs and you keep going to the right, ending with %7 referring to the value 1 which means the elementary streams will be deleted after being multiplexed.
You need to configure the lines with x264 and xvid to your liking. If you are using MeGUI and already have your own profiles, you can look at the command line by clicking on config and looking at the bottom part of the window. Or don't change anything, the settings here are quite reasonable.
Tip: You can tell the encoder to skip a call line by typing REM before it.
REM SDA batch encoder v1.1 @echo off call :2pass script_mq.avs script_lq 128 64000 17 1 1 call :2pass script_mq.avs script_mq 512 64000 17 1 1 call :2pass script_hq.avs script_hq 2048 128000 19 1 1 call :2pass script_hq.avs script_iq 5000 320000 19 1 1 call :1pass script_hq.avs script_qp19_iq 320000 19 1 call :xvid script_mq.avs script_mq 512 64 1 1 call :xvid script_mq.avs script_lq 128 64 1 1 echo Finished! pause GOTO :EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :2pass REM TURBO x264.exe --pass 1 --bitrate %3 --stats "%~dp1%2.stats" --bframes 5 --direct auto --subme 1 --analyse none --qpmin %5 --me dia --threads auto --thread-input --progress --no-psnr --no-ssim --output NUL %1 x264.exe --pass 2 --bitrate %3 --stats "%~dp1%2.stats" --ref 8 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --weightb --direct auto --subme 7 --trellis 1 --analyse p8x8,b8x8,i4x4,p4x4 --qpmin %5 --me umh --threads auto --thread-input --progress --no-psnr --no-ssim --output "%~dp1%2_video.mp4" %1 bepipe.exe --script "DirectShowSource(^%~f1^)" | "neroAacEnc.exe" -br %4 -lc -if - -of "%~dp1%2_audio.mp4" MP4Box.exe -new -add "%~dp1%2_video.mp4" -add "%~dp1%2_audio.mp4" "%~dp1%2.mp4" if "%6" == "1" del "%~dp1%2.stats" if "%7" == "1" del "%~dp1%2_video.mp4" | del "%~dp1%2_audio.mp4" GOTO :EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :1pass x264.exe --qp %4 --ref 8 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --weightb --nf --direct auto --subme 7 --analyse p8x8,b8x8,i4x4,p4x4 --threads auto --thread-input --progress --no-psnr --no-ssim --output "%~dp1%2_video.mp4" %1 bepipe.exe --script "DirectShowSource(^%~f1^)" | "neroAacEnc.exe" -br %3 -lc -if - -of "%~dp1%2_audio.mp4" MP4Box.exe -new -add "%~dp1%2_video.mp4" -add "%~dp1%2_audio.mp4" "%~dp1%2.mp4" if "%5" == "1" del "%~dp1%2_video.mp4" | del "%~dp1%2_audio.mp4" GOTO :EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :xvid xvid_encraw.exe -i %1 -bitrate %3 -pass1 "%~dp1%2.stats" -kboost 100 -ostrength 15 -oimprove 15 -odegrade 15 -overhead 0 -vhqmode 3 -qpel -gmc -closed_gop -lumimasking -max_bframes 3 -bvhq -threads 1 xvid_encraw.exe -i %1 -bitrate %3 -pass2 "%~dp1%2.stats" -avi "%~dp1%2_video.avi" -kboost 100 -ostrength 15 -oimprove 15 -odegrade 15 -overhead 0 -vhqmode 3 -qpel -gmc -closed_gop -lumimasking -max_bframes 3 -bvhq -threads 1 bepipe.exe --script "DirectShowSource(^%~f1^)" | lame.exe -b 64 --cbr -h --silent - "%~dp1%2_audio.mp3" ffmpeg.exe -i "%~dp1%2_audio.mp3" -acodec copy -i "%~dp1%2_video.avi" -vcodec copy -y "%~dp1%2.avi" if "%5" == "1" del "%~dp1%2.stats" if "%6" == "1" del "%~dp1%2_video.avi" | del "%~dp1%2_audio.mp3" GOTO :EOF
Encoding
Most of the work is in setting up encode.bat, starting the encoding is as simple as running runatlow.bat or encode.bat itself.
Return to the front page.