Avidemux Forum

Avidemux => Main version 2.6 => Topic started by: anyluck on August 24, 2013, 07:21:57 AM

Title: Batch Resizing with varying frame heights
Post by: anyluck on August 24, 2013, 07:21:57 AM
Hello Everyone!!

I LOVE avidemux for quick edits..  then I found out I can batch resize files which i desperately need to do to improve performance on my video stream.

I have the following resize.js code:
//AD  <- Needed to identify //
//--automatically built--


adm.videoCodec("x264", "general.params=AQ=20", "general.threads=99", "general.fast_first_pass=True", "level=31", "vui.sar_height=1", "vui.sar_width=1", "MaxRefFrames=2", "MinIdr=100", "MaxIdr=500", "i_scenecut_threshold=40", "MaxBFrame=2", "i_bframe_adaptive=0", "i_bframe_bias=0", "i_bframe_pyramid=0", "b_deblocking_filter=False", "i_deblocking_filter_alphac0=0", "i_deblocking_filter_beta=0", "cabac=True", "interlaced=False", "analyze.b_8x8=True", "analyze.b_i4x4=False"
, "analyze.b_i8x8=False", "analyze.b_p8x8=False", "analyze.b_p16x16=False", "analyze.b_b16x16=False", "analyze.weighted_pred=0", "analyze.weighted_bipred=False", "analyze.direct_mv_pred=0", "analyze.chroma_offset=0", "analyze.me_method=0", "analyze.mv_range=16", "analyze.subpel_refine=7", "analyze.chroma_me=False", "analyze.mixed_references=False", "analyze.trellis=1", "analyze.psy_rd=0.000000", "analyze.psy_trellis=0.000000", "analyze.fast_pskip=True", "analyze.dct_decimate=False", "analyze.noise_reduction=0", "analyze.psy=True"
, "analyze.intra_luma=21", "analyze.inter_luma=21", "ratecontrol.rc_method=0", "ratecontrol.qp_constant=0", "ratecontrol.qp_min=0", "ratecontrol.qp_max=0", "ratecontrol.qp_step=0", "ratecontrol.bitrate=0", "ratecontrol.vbv_max_bitrate=0", "ratecontrol.vbv_buffer_size=0", "ratecontrol.vbv_buffer_init=0", "ratecontrol.ip_factor=0.000000", "ratecontrol.pb_factor=0.000000", "ratecontrol.aq_mode=0", "ratecontrol.aq_strength=0.000000", "ratecontrol.mb_tree=False", "ratecontrol.lookahead=0");
adm.addVideoFilter("swscale", "width=320", "height=240", "algo=2", "sourceAR=1", "targetAR=1");
adm.audioCodec(0, "copy");
adm.setContainer("AVI", "odmlType=1");


..triggered by resize_mp4.bat:
set avidemux="C:\Program Files\avidemux_2.6.1_win64\avidemux.exe"
for %%f in (*.mp4) do %avidemux% --load "%%f" --run "C:\WMT PREP\resize.js" --save "%%f_resized.mp4" --quit


...this would work like a charm..  but I need a wildcard to insert into the "height=240" field of the .js file.
All of the frame widths and heights vary, and if I can set them to a fixed width while maintaining aspect ratio that would be perfect.. but the heights will still vary..

Is there any way to code the .js to indicate all files need to be resized to 320 pixels wide, while maintaining original aspect ratio, and let the frame height vary from file to file??

Any help is greatly appreciated!!!
Thanks for such a powerful tool!
Title: Re: Batch Resizing with varying frame heights
Post by: anyluck on August 31, 2013, 06:22:11 PM
nothing??   =(
Title: Re: Batch Resizing with varying frame heights
Post by: anyluck on August 31, 2013, 08:46:45 PM
since im thinking there might be no solution to this.. i scripted the following in autohotkey to automate this process...

^+r::
Loop {
WinWaitActive, VIDEO PREP
        Sleep, 500
IfWinExist, VIDEO PREP
WinActivate
        Send {F2}
        Send ^c
        Send {ESC}
        Send +{F10}
        Send h
        Send a
WinWaitActive, Avidemux
        Sleep, 500
IfWinExist, Avidemux
WinActivate
        Send ^!f
WinWaitActive, Video Filter Manager
        Sleep, 500
IfWinExist, Video Filter Manager
WinActivate
        Click 251,413
        Click 251,413
WinWaitActive, Resize
        Sleep, 500
IfWinExist, Resize
WinActivate
        Click 90,155
        Click 90,155
        Send 320
        Send {Enter}
        Send {Enter}
        Sleep 500
        Click 92,195
        Sleep 500
        Click 92,303
        Send ^s
        Sleep 500
        Send C:\VIDEO PREP\RESIZED\{Enter}
        Sleep 500
        Send ^v
        Sleep 500
        Send _resized{Enter}
        WinWaitClose, Encoding...
WinWaitActive, Info
        Sleep, 500
IfWinExist, Info
WinActivate
        Send {Space}
        Sleep 500
        Send !{F4}
WinWaitActive, VIDEO PREP
        Sleep, 500
IfWinExist, VIDEO PREP
WinActivate
        Send {Down}
}


...the only problem is, Avidemux has a bug in which every 5-7 videos or so will crash when you paste the filename in the text field when saving....  very very frustrating as I was *so* close to automating this procedure on the thousands of videos that I have to resize.

Anyone have any input on this????? I'm sure someone out there had to batch resize videos with varying resolutions to conform to a certain width... Any help at all is greatly appreciated.....
Title: Re: Batch Resizing with varying frame heights
Post by: tuxutat on September 01, 2013, 11:45:30 AM
Avidemux isn't really the best tool for this, use ffmpeg instead. I do some resizing with that myself, here's a commandline for what you want to do:

ffmpeg -i "input.mp4" -vf scale=w=320:h=-1 -crf:v 20 -acodec copy -vcodec libx264 -threads 0 -f mp4 -y "output.mp4"

Get it from here: http://ffmpeg.zeranoe.com/builds/ (http://ffmpeg.zeranoe.com/builds/)
Title: Re: Batch Resizing with varying frame heights
Post by: anyluck on September 03, 2013, 02:14:39 PM
AMAZING!! I am eternally grateful!!
Cant wait till i get to that machine to try it out! Thanks again!

Can input.mp4 and output.mp4 be wildcards so i can run it as a batch? or does this require that i specify a file each time?
Title: Re: Batch Resizing with varying frame heights
Post by: tuxutat on September 03, 2013, 03:16:13 PM
You'll have to use "for .. in .." like in your first post.
Title: Re: Batch Resizing with varying frame heights
Post by: anyluck on September 05, 2013, 06:12:21 PM
tuxutat.. may you live for a thousand years.