View Full Version : Batch file to encode x264 movies
hello
I have got the following settings:
--pass 3 --bitrate 5500 --stats ".stats" --min-keyint 20 --ref 10 --mixed-refs --bframes 16 --b-pyramid --bime --weightb --direct temporal --subme 7 --trellis 2 --analyse all --8x8dct --qpmin 3 --ratetol 4 --qcomp 0.7 --b-bias 1 --me esa --merange 30 --threads 2 --thread-input --progress --no-psnr --no-ssim --output "output" "input"
I'd like to implement them into a batch file to encode x264 files. The bad thing is just, that i dont have any idea how the encoding works, so i have no idea what the batch file has to look like.
Would be great if someone of you could help me here.
Greets
Puu
refulgentis
20th May 2008, 06:24
hello
I have got the following settings:
I'd like to implement them into a batch file to encode x264 files. The bad thing is just, that i dont have any idea how the encoding works, so i have no idea what the batch file has to look like.
Would be great if someone of you could help me here.
Greets
Puu
from another forum I'm on, using mplayer to pipe video to x264:
Not meant to be exhaustive in any way, I was just testing some encoding on linux since i have a spare dualcore server.
It worked fine, cant tell the difference to average windows avisynth based encode, and as a bonus my desktop
computer is no longer at 100% cpu 24/7 :)
I'll try to do some of that SH magic and make the script a bit interactive (naturally its easier to do some other stuff
on windows, like bitrate calculations with evodemux etc methods). Like source, codec types, fps, etc parameters!
Heres a simple sh script i use to encode
#!/bin/sh
#source for pass 1
mplayer -really-quiet -demuxer lavf -vc ffvc1 -nosound -fps 23.976 -sws 10 \
-vf crop=1912:1072,scale=1280:720 -vo yuv4mpeg:file=video.y4m video.EVO &
#x264 for pass 1
x264 --pass 1 --bitrate XXXX --stats ".stats" --bframes 3 --b-pyramid --direct auto \
--deblock -3:-3 --subme 1 --analyse none --me dia --threads auto --cqmfile "prestige.cfg" \
--progress --no-psnr --no-ssim --output /dev/null video.y4m
#source for pass 2
mplayer -really-quiet -demuxer lavf -vc ffvc1 -nosound -fps 23.976 -sws 10 \
-vf crop=1912:1072,scale=1280:720 -vo yuv4mpeg:file=video.y4m video.EVO &
#x264 for pass 2
x264 --pass 2 --bitrate XXXX --stats ".stats" --ref 5 --mixed-refs --no-fast-pskip \
--bframes 3 --b-pyramid --b-rdo --bime --weightb --direct auto --deblock -3:-3 --subme 7 \
--analyse all --8x8dct --trellis 1 --aq-strength 0.3 --me umh --threads auto \
--cqmfile "prestige.cfg" --progress --no-psnr --no-ssim --output encode.mkv video.y4m
What do you need?
- mplayer (build it yourself to get all the fancy features)
- x264 (i built it myself to get the adaptive quants patch)
What do you need to do?
- create a sandbox for your encodes "mkdir /whatever/wherever"
- create a named pipe for mplayer output where x264 can read from
# mkfifo video.y4m
Setup mplayer pipe output
- find out how to decode your source with mplayer, im using a .evo so i need a specific demuxer "-demuxer lavf", the .evo contains vc1 so i need the wvc1 codec "-vc ffvc1"
- set fps "-fps 23.976"
- set output, x264 accepts yuv2 or yuv4mpeg so we use "-vo yuv4mpeg:file=video.y4m" so mplayer decodes to the fifo pipe we created
- filter how you see fit, in the example i crop 4 pixels from every direction "-vf crop=1912:1072" with a software spline scaler "-sws10", and i also scale the resulting video to 720 ",scale=1280,720"
-- (note that by default the crop filter crops around the edges, you can set the crop point with "crop=1912:1072:x:y" where x and y are the coordinates, see manual for more info)
-- see manual for more video filter info
Setup x264
- do it like you would in windows, nothing to it
NOTE! you have to output the video twice to the pipe, once for each pass as each pass exhausts the pipe. mplayer just plays the video into the pipe
Leave any tips and criticism in the thread!
refulgentis
20th May 2008, 06:25
here's one I use in os x, using mencoder
#!/bin/sh
(( number= $# ))
for (( i = 0; i < $number; i++ ))
do
mencoder "$1" -of rawvideo -vf harddup -mc 0 -noskip -oac faac -ovc x264 -x264encopts crf=23:bframes=3:subq=5:me=umh:threads=4:cabac=0:level=31:ref=1:vbv-maxrate=4500:vbv-bufsize=2000 -o "$1".264 && mencoder "$1" -of rawaudio -vf harddup -mc 0 -noskip -ovc copy -oac faac -faacopts mpeg=4:br=128:object=2 -channels 2 -srate 48000 -o "$1".aac && mp4box -add "$1".aac#audio -add "$1".264#video -inter 0 -fps 23.976 "/Volumes/500/Source media/Conversions/mp4box.mp4" && ffmpeg -i "/Volumes/500/Source media/Conversions/mp4box.mp4" -y -vcodec copy -acodec copy "$1".mp4 && rm "/Volumes/500/Source media/Conversions/mp4box.mp4" && rm "$1".264 && rm "$1".aac
shift
done
this dumps video without any attempt to sync to x264, then dumps audio without any attempt to sync to faac. both files are placed in the directory of the original file, and have the same filename except .264 or .aac placed at the end.
then, mp4box muxes them, and then I pass the resulting mp4 back through ffmpeg. mp4box doesn't seem to write proper information for quicktime to understand the video files, and I can't get ffmpeg to mux my raw .264s properly.
this is perfect if you need itunes/quicktime compatible MP4s, and nearly every other situation doesn't work in special cases (ffmpeg can't decode mkvs with attachments properly and has segmentation faults often, mp4creator does something else odd that I can't remember). this situation works with everything i've thrown at it so far, but I haven't gotten too exotic yet, just .264 in avis or mkvs.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.