Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
Thread Tools | Search this Thread | Display Modes |
25th September 2013, 14:40 | #1 | Link |
͡҉҉ ̵̡̢̛̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿
Join Date: Feb 2009
Location: No support in PM
Posts: 713
|
trimx264opt — A helper tool for x264 segmented encoding
Background
Now we have the --stitchable option in x264, it becomes much easier to encode a video in multiple segments. There are multiple uses for this: mix different settings that cannot be set in --zones, redo only specific parts where global parameters or bitrate are unsatisfactory, make simultaneous encode to take a better advantage of a large number of cores, etc. Cutting (at GOP boundaries) and joining segments together can be achieved without much effort with ordinary muxing tools. The problem is that x264 is not very handy when you need to encode just a part of a file. --seek and --frames could help but their behaviour with --qpfile, --zones and --tcfile-in is inconsistent. Plus, --seek often requires reading the source from the beginning. I looked for tools to overcome these problems but found nothing. Maybe I haven’t searched hard enough? Anyway, I finally came with my own (and modest) solution. What is it? trimx264opt is a Windows command line tool. It takes qpfile, zones and timecodes information and “shifts” a specified frame range to index 0. Therefore x264 can use directly these parameters to encode the source cut to this range, without the need of --seek or --frames. This can be done with Avisynth frameserving for example, with a Trim(beg, beg-end) after source loading. As trimx264opt itself does only the basic things and is not very convenient, I added encode-part.bat which provides a template for encoding a segment (it requires to set some environment variables to locate trimx264opt, x264 and possibly avs2pipemod). Ideally we would need some kind of wrapper over x264 but at the moment this tool does the job and really helps. Download r3: >>>> trimx264opt-r3.zip <<<< Note: I’m pretty sure this kind of segmented encoding can break the VBV constraints on segment boundaries, and I’m not sure if there is a solution and how to make it work. If anybody knows something, shoot!
__________________
dither 1.28.1 for AviSynth | avstp 1.0.4 for AviSynth development | fmtconv r30 for Vapoursynth & Avs+ | trimx264opt segmented encoding Last edited by cretindesalpes; 2nd August 2024 at 12:31. Reason: URL update |
26th December 2013, 08:26 | #2 | Link | |
Registered User
Join Date: Oct 2006
Posts: 26
|
cretindesalpes
Many thx! Very usefull tool and perfect solution! I'm using avs4x264mod to read stream directly thru DGDecodeNV.dll or like this. trimx264opt and avs4x264mod working together without problem with involved AviSynth routine. How is it possible to get working trimx264opt and another decode.dll? setpaths.bat Code:
set trimx264opt=trimx264opt.exe set avs2pipemod=avs2pipemod.exe set x264=avs4x264mod.exe *- (--qpfile "qp.log", each frame sign) Code:
C:\WINDOWS\system32\cmd.exe /c start /low /b encode-part.bat input.avs 8000 16000 "" "qp.log" "" 8 --x264-binary "x264.exe" --crf 18 --profile high422 --preset placebo --vbv-bufsize 40000 --vbv-maxrate 32500 --vbv-init 0.9 --slices 4 -I 24 -i 2 --ref 4 --mixed-refs --deblock -3:-3 --direct auto --bframes 3 --b-pyramid strict --weightb --weightp 2 --b-bias 0 --b-adapt 2 --me tesa --subme 11 --merange 16 --scenecut 40 --8x8dct --partitions i4x4,i8x8,p8x8,b8x8 --aq-mode 3 --aq-strength 0.6 --trellis 2 --psy-rd 0.6:0.15 --level 4.1 --ratetol 1.00 --cplxblur 20 --qblur 0.50 --nr 0 --rc-lookahead 24 --sync-lookahead 0 --qcomp 0.6 --qpmin 0 --qpmax 69 --qpstep 4 --ipratio 1.35 --chroma-qp-offset -2 --deadzone-inter 6 --deadzone-intra 6 --aud --nal-hrd vbr --threads 6 --mvrange 511 --no-dct-decimate --no-fast-pskip --sar 1:1 --no-chroma-me --constrained-intra --chromaloc 0 --colorprim bt709 --transfer bt709 --colormatrix bt709 --non-deterministic --cqmfile "Movie.[AVC].Matrix.cfg" --log-file "encode.log" --output "C:\Temp\[crf]..movie.264" --no-mbtree --open-gop --input-range tv --range tv --fps 24000/1001 --index movie.index Example: avisynth composed 2500 frames uniformly distributed of the video(25fps) pieces by 50 frames. Code:
selectTotal1=framecount()/100 selectTotal2=selectTotal1*2 selectrangeevery(selectTotal2,50) Quote:
Last edited by sarmano; 27th December 2013 at 03:28. |
|
Tags |
qpfile, stitchable, timecodes, x264, zones |
Thread Tools | Search this Thread |
Display Modes | |
|
|