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!
nothing?? =(
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.....
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/)
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?
You'll have to use "for .. in .." like in your first post.
tuxutat.. may you live for a thousand years.