Batch to multiple sizes

Discussion of the HandBrake command line interface (CLI)
Forum rules
An Activity Log is required for support requests. Please read How-to get an activity log? for details on how and why this should be provided.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Batch to multiple sizes

Post by johnzapf »

I would like handbrake to be able batch a file to multiple sizes. when I use VOD with Wowza media server I have to have each file sized to all sizes so that JWPlayer will be able to auto select the best file based on internet speed, IE: 1920x108,1280x720, 960x540, 640x360.

to save time so I dont have to do each file manually.

0.10.5.0 64bit

Windows 10 Pro 64bit
rollin_eng
Veteran User
Posts: 4840
Joined: Wed May 04, 2011 11:06 pm

Re: Batch to multiple sizes

Post by rollin_eng »

The simplest way to do this would be to create a batch file, something like:

handbrakecli -i c:\in.mkv -o c:\out1920.mkv -w 1920 etc
handbrakecli -i c:\in.mkv -o c:\out1280.mkv -w 1280 etc
handbrakecli -i c:\in.mkv -o c:\out960.mkv -w 960 etc
handbrakecli -i c:\in.mkv -o c:\out640.mkv -w 640 etc

then just adjust as necessary.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

ok, sounds great but how and where do I do that?

John
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

ok this is working,

I would like it to just get any file I have in the "VIDEO" folder and output to the "MP4" folder keeping the same name on the file, is that possible? ie: C:\Users\John\Desktop\VIDEO\test.mov to C:\Users\John\Desktop\MP4\test1920.mp4, etc... I don't want to have to change the name of the file or the script each time.

I want to put a file in the Video folder (filename.mov) and have it output to the MP4 folder (filename1920.mp4) and I dont want to have to change the "filename" is there a wildcard or code for "filename"?

handbrakecli -i C:\Users\John\Desktop\VIDEO\test.mov -o C:\Users\John\Desktop\MP4\1920.mp4 -w 1920 --preset="Normal"
handbrakecli -i C:\Users\John\Desktop\VIDEO\test.mov -o C:\Users\John\Desktop\MP4\1280.mp4 -w 1280 --preset="Normal"
handbrakecli -i C:\Users\John\Desktop\VIDEO\test.mov -o C:\Users\John\Desktop\MP4\960.mp4 -w 960 --preset="Normal"
handbrakecli -i C:\Users\John\Desktop\VIDEO\test.mov -o C:\Users\John\Desktop\MP4\640.mp4 -w 640 --preset="Normal"
Woodstock
Veteran User
Posts: 4614
Joined: Tue Aug 27, 2013 6:39 am

Re: Batch to multiple sizes

Post by Woodstock »

Batch file for which operating system?

Windows uses %~n1 for "file name without extension", so I have batch files like this:

Code: Select all

title "%~n1" Droid & "C:\Program Files\Handbrake\HandBrakeCLI.exe" -i "Z:\Fairy Tail\%~n1.mkv" -t 1 -o "V:\Anime\Tablet\dubbed\Fairy Tail\%~n1.m4v" -O -f mp4 -w 720 --loose-anamorphic  -e x264 -q 22 --vfr  -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0 --gain=0 --audio-copy-mask none --audio-fallback ffac3 --subtitle 2 --subtitle-burn=1 -x weightp=0:cabac=0 --verbose=1 --previews 30 

title "%~n1" & "C:\Program Files\Handbrake\HandBrakeCLI.exe" -i "Z:\Fairy Tail\%~n1.mkv" -t 1 -o "V:\Anime\dubbed\Fairy Tail\%~n1.mkv"  -f mkv --strict-anamorphic  -e x264 -q 20 --vfr  -a 1,2,4 -E faac,copy:ac3,faac -B 160,0,160 -6 dpl2,auto,dpl2 -R Auto,Auto,Auto -D 0,0,0 --gain=0,0,0 --audio-copy-mask none --audio-fallback ffac3 --subtitle 2,1 --markers="C:\Users\jeffb\AppData\Local\Temp\Fairy Tail HD165-1-chapters.csv" -x ref=1:weightp=1:subq=2:rc-lookahead=10:trellis=0:8x8dct=0 --verbose=1 --previews 30 
I can then call the batch file with the name of the source as an argument, and it will deal with the file names for output from that source.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

OS is windows 10 Pro 64bit

%~n1 is not working for me?

handbrakecli -i C:\Users\John\Desktop\VIDEO\%~n1.mov -o C:\Users\John\Desktop\MP4\%~n11920.mp4 -w 1920 --preset="Normal"
Woodstock
Veteran User
Posts: 4614
Joined: Tue Aug 27, 2013 6:39 am

Re: Batch to multiple sizes

Post by Woodstock »

You need quotes, like I had in my sample...

Code: Select all

handbrakecli -i "C:\Users\John\Desktop\VIDEO\%~n1.mov" -o "C:\Users\John\Desktop\MP4\%~n11920.mp4" -w 1920 --preset="Normal"
Without quotes around the file names, you can end up with incorrect names if the file name has spaces in it.

You'll also need quotes around the file name when you call the batch file.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

I tried that, not working. this is just a single file, not a DVD, etc...

libbluray/bdnav/index_parse.c:162: indx_parse(): error opening C:\Users\John\Desktop\VIDEO\.mov/BDMV/index.bdmv
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening C:\Users\John\Desktop\VIDEO\.mov/BDMV/BACKUP/index.bdmv
libbluray/bluray.c:2182: nav_get_title_list(C:\Users\John\Desktop\VIDEO\.mov) failed
[09:28:03] bd: not a bd - trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Encrypted DVD support unavailable.
libdvdread: Could not open input: No such file or directory
libdvdread: Can't open C:\Users\John\Desktop\VIDEO\.mov for reading
libdvdnav: vm: failed to open/read the DVD
[09:28:03] dvd: not a dvd - trying as a stream/file instead
[09:28:03] hb_stream_open: open C:\Users\John\Desktop\VIDEO\.mov failed
[09:28:03] scan: unrecognized file type
[09:28:03] libhb: scan thread found 0 valid title(s)
No title found.
Woodstock
Veteran User
Posts: 4614
Joined: Tue Aug 27, 2013 6:39 am

Re: Batch to multiple sizes

Post by Woodstock »

How are you calling the batch file?

This works inside a batch file, not as a command line by itself to make handbrake run. Handbrake doesn't have a looping structure built into it.

Use a text editor to create the batch file "test.bat", with the contents:

Code: Select all

handbrakecli -i "C:\Users\John\Desktop\VIDEO\%~n1.mov" -o "C:\Users\John\Desktop\MP4\%~n11920.mp4" -w 1920 --preset="Normal"
You would then execute using:

Code: Select all

test "my video name goes here.mov"
Then the %~n1 will be replaced with "video name goes here" (the extension is removed).

(note that there are several scripts in the Support/CLI section for Windows, using CMD, PowerShell, and other scripting languages to do this sort of thing)
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

I think you are misunderstanding what I am trying to do. I don't want to have to edit the batch file every time and put a name in there.

I want to put a file in the "VIDEO" folder what ever the name, kids.mov and have the batch file out put 4 sizes named kids1920.mp4, kids1280.mp4 etc... I want it to just pickup the and use the name of the original file. in Handbrake it will do this but wont do the 4 sizes at one time. the batch file does work doing the 4 sizes, but I want it to do it using the name of the file I put in the VIDEO folder, the name will be different every time.
mduell
Veteran User
Posts: 8187
Joined: Sat Apr 21, 2007 8:54 pm

Re: Batch to multiple sizes

Post by mduell »

That can all be automated with a minimal amount of scripting in the batch file.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

so how do I figure this out, 3 days of trying so far?

it takes me about 20 minute just to add one movie to Wowza, the code on website, the title picture, etc, just trying to make it a little simpler, I cant believe things like this are still so much work, seems simple. take a file, name it size it 4 ways and put it in the folder I want, wow, I guess I am asking way to much as always. so much for technology.

Thanks,
John
Woodstock
Veteran User
Posts: 4614
Joined: Tue Aug 27, 2013 6:39 am

Re: Batch to multiple sizes

Post by Woodstock »

Not saying to edit the file each time; The script I posted above is one I have for a particular long-running series, where there have been (so far) 239 episodes, and I have a few others. It would be possible to make it more flexible, but rarely do different series have the same audio/subtitle settings, so there are limits to "it does it without me having to edit".

In this case, you can look at several of the existing scripting examples here, and make one major change... When the command line is constructed, you make as many copies of that line as you want different resolutions.

The majority of the problem of scripting is finding what files to operate on. I've seen over a dozen scripts posted here, half for Windows, which do that part just fine, and build a command line to execute. You want to create 4 command lines instead of 1, with a few parameters different between them. It shouldn't take that one to modify one.

But even if you want to do it for your own education (a worthy goal in and of itself), studying how others do it is part of the learning process.
mduell
Veteran User
Posts: 8187
Joined: Sat Apr 21, 2007 8:54 pm

Re: Batch to multiple sizes

Post by mduell »

johnzapf wrote:so how do I figure this out, 3 days of trying so far?

it takes me about 20 minute just to add one movie to Wowza, the code on website, the title picture, etc, just trying to make it a little simpler, I cant believe things like this are still so much work, seems simple. take a file, name it size it 4 ways and put it in the folder I want, wow, I guess I am asking way to much as always. so much for technology.
I'm a bit confused, what have you been trying to do for 3 days?

The technology for this kind of automation is simple and readily available. A bit of variable substitution in the appropriate scripting language for your platform shouldn't take 3 days for someone of average intelligence.

Are you waiting for someone to spoon-feed you a script tailored specifically for your use case?
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

I can write the script, I am simply trying to find a command? if someone knows the command to use the original file name in the output file that would be great, that is all I am asking for.

Thanks.
mduell
Veteran User
Posts: 8187
Joined: Sat Apr 21, 2007 8:54 pm

Re: Batch to multiple sizes

Post by mduell »

Literally the first hit on Google for "variable substitution windows batch" covers it http://cplusplus.bordoon.com/cmd_exe_variables.html
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

Hmm, non of that works form me, thanks for trying, I will figure it out.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

Use a text editor to create the batch file "test.bat", with the contents:

handbrakecli -i "C:\Users\John\Desktop\VIDEO\%~n1.mov" -o "C:\Users\John\Desktop\MP4\%~n11920.mp4" -w 1920 --preset="Normal"


You would then execute using:

test "my video name goes here.mov"

---------------------
So what is the easiest way to run the bat file with "my video name goes here.mov"? having to open a command prompt and do it that way is not cool. is there a way to have the bat file prompt me for that name? just trying to save time not make things more work.
mduell
Veteran User
Posts: 8187
Joined: Sat Apr 21, 2007 8:54 pm

Re: Batch to multiple sizes

Post by mduell »

First Google hit for "windows batch request input" covers it: http://stackoverflow.com/questions/1223 ... nother-com

Noticing a pattern here?
rollin_eng
Veteran User
Posts: 4840
Joined: Wed May 04, 2011 11:06 pm

Re: Batch to multiple sizes

Post by rollin_eng »

johnzapf wrote: So what is the easiest way to run the bat file with "my video name goes here.mov"? having to open a command prompt and do it that way is not cool. is there a way to have the bat file prompt me for that name? just trying to save time not make things more work.
This should work:

set /P file=Enter file:
Handbrakecli -i d:\temp\%file% -o d:\temp\%file%1920.mp4
User avatar
s55
HandBrake Team
Posts: 10350
Joined: Sun Dec 24, 2006 1:05 pm

Re: Batch to multiple sizes

Post by s55 »

Moving to command line support forum.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

this almost works
set /P file=Enter file:
Handbrakecli -i d:\temp\%file% -o d:\temp\%file%1920.mp4

it prompts me, I type in test.mov and it starts BUT the out put file has the extension of the input file on it.

IE: test.mov1920.mp4 needs to end up just, test1920.mp4
rollin_eng
Veteran User
Posts: 4840
Joined: Wed May 04, 2011 11:06 pm

Re: Batch to multiple sizes

Post by rollin_eng »

You could ask for 2 inputs, file and extension or use the methods mduell posted above.
johnzapf
Posts: 29
Joined: Tue Jun 07, 2016 2:44 pm

Re: Batch to multiple sizes

Post by johnzapf »

Can you point me in the right direction on how to ask for 2 inputs, file and extension? I am not a code person at all that is why I am on this forum asking for help.
rollin_eng
Veteran User
Posts: 4840
Joined: Wed May 04, 2011 11:06 pm

Re: Batch to multiple sizes

Post by rollin_eng »

set /P filein=Enter input file:
set /P fileext=Enter input file extension:
Handbrakecli -i d:\temp\%filein%.%fileext% -o d:\temp\%filein%1920.mp4
Post Reply