Sir Didymus
24th September 2006, 15:02
Please do not consider the small program below as other else than what it is stated in the title: it is just a small Command Line middleware to launch MuxMan (the great authoring program of mpucoder) with some command line argument.
Link to release 1.3:
http://www.mediafire.com/?kmtmsuvzmrb
For release 1.3 the argument list is as follows:
//
// ---------------------------------------------------------------------------
// -------- General Arguments ------------------------------------------------
// ---------------------------------------------------------------------------
// -arglist file_name, optional; if this mode (and argument) is used, no other
// arguments should be present; file_name should be a text file containing
// all of the other BatchMux arguments, ONE SINGLE LINE CONTAINING two
// strings ([arg] [val]) separated by spaces and optionally delimited by "
// -d destination_folder, mandatory
// -mxp target script_file, optional; default to C:BatchMux.mxp
// -l log_file, optional; default to C:MuxMan.log
// -muxman folder, place where to look for the MuxMan.exe file, optional,
// default NULL string, meaning the same folder where BatchMux is executed
// -palette palette_file, optional; PgcEdit compatible ascii file containing
// 16 colour entries (index, red, green, blue) adopted for redefining the
// default color palette used by MuxMan
// -preparer "32_char_string"; optional copyright string setting the DVD
// preparer field in the VIDEO_TS.IFO and VIDEO_TS.BUP files. Note: it is
// overridden by the -norun option
// -norun allows to open the MuxMan GUI, to load the script file and to stop
// -prio REALTIME | HIGH | ABOVENORMAL | NORMAL | BELOWNORMAL | LOW
// allows to launch MuxMan with a given execution priority, optional,
// default to NORMAL
// ---------------------------------------------------------------------------
// -------- Content Section Arguments ----------------------------------------
// ---------------------------------------------------------------------------
// ======== VIDEO ========
// -[SEGi]v[_j] video_file[s], mandatory; note: in all of the arguments with
// the "SEGi" prefix, the i index should be an integer value, in the range
// [2...999]; also, segments sequence should be progressive: e.g if segment
// 4 is missed, all segment arguments from 5 to 999, if present, are
// ignored; the [_j] extension, with j in the range [2..99], allows to join
// a file list (in a plain, sequential way), to compose the asset of the
// given segment
// -[SEGi]vidmode 4:3 | PS_LB | PS | LB display mode for the video asset,
// optional, if present and compatible with the actual video mode, it is
// honored, based on the authoring application rules; if not present, it is
// not included in the script
// -[SEGi]vduration[_j] ACTUAL | DEFAULT | hh:mm:ss:ff, duration of the video
// play item, optional; default DEFAULT. Duration=ACTUAL is valid for
// motion video only. For the last file of the list Duration=DEFAULT means
// until the audio track ends. For other positions in the list it means:
// 15 frames for stills (image or single frame mpeg); 5 sec. for stillshow
// video (multiple I frames with a sequence end code for each frame);
// actual duration for motion video
// ======== AUDIO ========
// -[SEGi]a1[_j] audio1_file[s] ... -[SEGi]a8[_j] audio8_file[s]; all
// optional; the [_j] extension, with j in the range [2..99], allows to
// join a file list (in a plain, sequential way), to compose the asset[s]
// of the given segment
// -[SEGi]a1lang xx ... -[SEGi]a8lang xx two characters language code for the
// audio assets, all optional; default unspecified
// -[SEGi]a1ext 0|1|2|3|4 ... -[SEGi]a8ext 0|1|2|3|4 language extensions for
// the audio assets, where 0 --> unspecified, 1 --> normal, 2 --> visually
// impaired, 3 --> director comments, 4 --> alternate director comments;
// all optional; default 1 - normal
// -[SEGi]a1delay xxx ... -[SEGi]a8delay xxx audio delays, positive and
// negative values, in ms, in the range [-300...300]; all optional;
// default 0
// ======== SUBPICTURES ========
// -[SEGi]s1 subpic1_file ... -[SEGi]s32 subpic32_file; all optional
// -[SEGi]s1lang xx ... -[SEGi]s32lang xx two characters language code for the
// subpic files, default unspecified
// -[SEGi]s1ext 0|1|2|3|5|6|7|9|13|14|15 ...
// -[SEGi]s32ext 0|1|2|3|5|6|7|9|13|14|15
// language extensions for the subpicture files, where 0 --> unspecified,
// 1 --> normal, 2 --> large, 3 --> children 5 --> normal captions,
// 6 --> large captions, 7 --> children captions, 9 --> forced,
// 13 --> director comments, 14 --> large director comments,
// 15 --> children director comments; all optional; default 1 - normal
// -[SEGi]s1dmode LB | PAN | LB_PAN | WIDE | WIDE_LB | WIDE_PAN | WIDE_LB_PAN
// ... -[SEGi]s32dmode LB | PAN | LB_PAN | WIDE | WIDE_LB | WIDE_PAN |
// WIDE_LB_PAN display modes and track assignement for the subpicture
// streams; all optional; default --> WIDE_LB if video A/R is 16:9,
// unspecified if video A/R is 4:3
// ======== HIGHLIGHTS =========
// -[SEGi]hlstart[_j] hh:mm:ss:ff; highlight start time, relative to start of
// video segment; default 00:00:00:00
// -[SEGi]hldurat[_j] hh:mm:ss:ff; highlight duration, relative to start of
// highlight; default 00:00:00:00
// -[SEGi]hlmnu[_j] menu_file; in PgcEdit mnu format; all mnu items may be
// overridden by other hl arguments (see below), if present
// -[SEGi]hlbset[_j] hh:mm:ss:ff; button selection end time, relative to
// start of highlight; default 00:00:00:00
// -[SEGi]hlbutm{l}[_j] NORMAL | LB | PAN | WIDE; display mode for group {l}
// buttons; l=1,2,3; default --> NORMAL, i.e. unspecified
// -[SEGi]hloffsbutnr[_j] 0..36; highlight start button number; default 0
// -[SEGi]hlnumselbut[_j] 0..36; number of buttons selectable with the remote;
// default 0
// -[SEGi]hlfselbutnr[_j] 0..36; force selected button number; default 0
// -[SEGi]hlfactbutnr[_j] 0..36; force activated button number; default 0
// -[SEGi]hlcsm[_j] color_scheme_file; in PgcEdit csm format
// -[SEGi]but{k}g{l}[_j] button_file; in PgcEdit gbv format, where {k} is the
// button ID and {l} is the group ID --> {k} == 1 ... 36 and {l} == 1, 2, 3
// ======== CHAPTERS, PROGRAMS, CELLS ========
// -[SEGi]celltc timecode_file; optional file containing timecode boundaries
// for the cells in the hh:mm:ss:ff - 11 char fixed ndtc format
// -[SEGi]cellfr framecnt_file; optional file containing framecount boundaries
// for the cells in the "usual" CellTimes format - plain frame indexes
// -[SEGi]progtc timecode_file; optional file containing timecode boundaries
// for the programs in the hh:mm:ss:ff - 11 char fixed ndtc format -
// program boundaries must be a subset of the cell boundaries;
// default (no timecode_file) --> 1 SINGLE PROGRAM for the segment
// -[SEGi]progfr framecnt_file; optional file containing framecount boundaries
// for the programs - plain frame indexes format - program boundaries must
// be a subset of the cell boundaries;
// default (no framecnt_file) --> 1 SINGLE PROGRAM for the segment
// -[SEGi]chaptc timecode_file; optional file containing timecode boundaries
// for the chapters in the hh:mm:ss:ff - 11 char fixed ndtc format -
// chapter boundaries must be a subset of the program boundaries;
// default (no timecode_file) --> 1 SINGLE CHAPTER for the segment
// -[SEGi]chapfr framecnt_file; optional file containing framecount boundaries
// for the chapters - plain frame indexes format - program boundaries
// must be a subset of the program boundaries;
// default (no framecnt_file) --> 1 SINGLE CHAPTER for the segment
// ---------------------------------------------------------------------------
// -------- Organisation and Navigation Section Arguments --------------------
// ---------------------------------------------------------------------------
// -hcn file_name; hard coded navigation with static, motion, single page or
// multipage menus; interim solution providing the placement of the last
// segment(s) in the VMG domain as different page menus
//
Examples of usage, for simple and complex DVD compilations, including multipage menues are included in the links below.
The program is someway limited in many aspects; for example - at least in the actual release - the number of segments is limited to 99. Both the organisation of the segments and the DVD navigation are hardcoded.
Version 1.3 is supporting the creation of simple menus, static, motion, single page or multipage, placed in the VMG domain.
The related navigation, for the moment, is hardcoded. Up to 255 cells, 99 programs and 99 chapters are supported.
A set of reference examples, including all of the needed menu assets to build static and motion menus is here:
http://www.mediafire.com/?z8fykh2rpbc
Overall rationale for the existance of BatchMux.exe is based on the following considerations:
1. Simplicity and straight usage. Even though MuxMan 0.16.6 fully supports command line arguments, the usage of some authoring parameters is only possible by means of scripting. That's not a complex job. The compilation of a MuxMan script is possible (for instance) by loading in the GUI the needed assets files, by making some configuration of the DVD project an by saving the project itself. However the command line control provided by BatchMux is simple, and it should like to users not familiar or not interested in mxp scripting.
2. Enabling of automation for existing applications. The usage of MuxMan as a reference authoring application should be encouraged as much as possible. The quality of its output is significantly better respect to other authoring packages, getting rid - definitely - of "stuttering", "freezing" and other sad effects, mostly caused by some weakness of the adopted authoring packages. On the other hand, the direct integration of MuxMan as authoring engine into thirdy party applications, may turn out as being not possible or too complex, due to the need of creating the mxp MuxMan script. BatchMux.exe may be helpful in this scenario... Actually it made possible the development of the MuxMan plugin to author DVD inside the DVD2SVCD package, it was also adopted in FAVC of MrOdwin and inside AVSTODVD of MrC...
Usage: run BatchMux with the above arguments... No argument, or -help for printing out the list of the CLI arguments...
Cheers,
SD
Edit 11-09-2008: link update to release 1.3
Main changes:
- Added sanity checks for the lenght of log file path and destination folder (both should not exceed 120 characters)
- Added -progtc, -progfr, -chaptc, -chapfr switches to support the generation of programs and chapters in the DVD compilation
- Bugfix. Corrected a mistake, introduced in version 1.2, concerning the wrong attribution of chapters in multi-title compilations
Edit 25-08-2008: link update to release 1.2
Main changes:
- Reference examples completely revised: now they include all of the assets to show the usage of BatchMux to build single page and multipage menus
- First release supporting multipage menues, hardcoded organisation and navigation
- Completely reworked the harcoded navigation for static and motion menus
- Removed all -hcni switches; now the navigation is partially configurable by means of a proper cfg file
- Added -hcn file_name switch, to support the configuration of the hardcoded navigation
- Changed the default assignement, in the mxp output, of the -[SEGi]hlbset[_j] argument. Now it is set to -1, instead of 00:00:00:00; same as for the -[SEGi]hldurat[_j] argument
- Radically improved the DVD navigation: now supporting prev&next title jump, the resume function and the titles are now all one-sequential
Edit 21-07-2008: link update to release 1.1
Main Changes:
- Added -prio argument, to set the exec priority of MuxMan.exe
- Added -hcn3 and -hcn4 arguments to implement the menu navigation without the "PlayAll" button
Edit 15-05-2007: link update to release 1.0
Main Changes:
- First release supporting menues, hardcoded organisation and navigation
- Added -hcn1 and -hcn2 argument to implement static and motion menus
Link to release 1.3:
http://www.mediafire.com/?kmtmsuvzmrb
For release 1.3 the argument list is as follows:
//
// ---------------------------------------------------------------------------
// -------- General Arguments ------------------------------------------------
// ---------------------------------------------------------------------------
// -arglist file_name, optional; if this mode (and argument) is used, no other
// arguments should be present; file_name should be a text file containing
// all of the other BatchMux arguments, ONE SINGLE LINE CONTAINING two
// strings ([arg] [val]) separated by spaces and optionally delimited by "
// -d destination_folder, mandatory
// -mxp target script_file, optional; default to C:BatchMux.mxp
// -l log_file, optional; default to C:MuxMan.log
// -muxman folder, place where to look for the MuxMan.exe file, optional,
// default NULL string, meaning the same folder where BatchMux is executed
// -palette palette_file, optional; PgcEdit compatible ascii file containing
// 16 colour entries (index, red, green, blue) adopted for redefining the
// default color palette used by MuxMan
// -preparer "32_char_string"; optional copyright string setting the DVD
// preparer field in the VIDEO_TS.IFO and VIDEO_TS.BUP files. Note: it is
// overridden by the -norun option
// -norun allows to open the MuxMan GUI, to load the script file and to stop
// -prio REALTIME | HIGH | ABOVENORMAL | NORMAL | BELOWNORMAL | LOW
// allows to launch MuxMan with a given execution priority, optional,
// default to NORMAL
// ---------------------------------------------------------------------------
// -------- Content Section Arguments ----------------------------------------
// ---------------------------------------------------------------------------
// ======== VIDEO ========
// -[SEGi]v[_j] video_file[s], mandatory; note: in all of the arguments with
// the "SEGi" prefix, the i index should be an integer value, in the range
// [2...999]; also, segments sequence should be progressive: e.g if segment
// 4 is missed, all segment arguments from 5 to 999, if present, are
// ignored; the [_j] extension, with j in the range [2..99], allows to join
// a file list (in a plain, sequential way), to compose the asset of the
// given segment
// -[SEGi]vidmode 4:3 | PS_LB | PS | LB display mode for the video asset,
// optional, if present and compatible with the actual video mode, it is
// honored, based on the authoring application rules; if not present, it is
// not included in the script
// -[SEGi]vduration[_j] ACTUAL | DEFAULT | hh:mm:ss:ff, duration of the video
// play item, optional; default DEFAULT. Duration=ACTUAL is valid for
// motion video only. For the last file of the list Duration=DEFAULT means
// until the audio track ends. For other positions in the list it means:
// 15 frames for stills (image or single frame mpeg); 5 sec. for stillshow
// video (multiple I frames with a sequence end code for each frame);
// actual duration for motion video
// ======== AUDIO ========
// -[SEGi]a1[_j] audio1_file[s] ... -[SEGi]a8[_j] audio8_file[s]; all
// optional; the [_j] extension, with j in the range [2..99], allows to
// join a file list (in a plain, sequential way), to compose the asset[s]
// of the given segment
// -[SEGi]a1lang xx ... -[SEGi]a8lang xx two characters language code for the
// audio assets, all optional; default unspecified
// -[SEGi]a1ext 0|1|2|3|4 ... -[SEGi]a8ext 0|1|2|3|4 language extensions for
// the audio assets, where 0 --> unspecified, 1 --> normal, 2 --> visually
// impaired, 3 --> director comments, 4 --> alternate director comments;
// all optional; default 1 - normal
// -[SEGi]a1delay xxx ... -[SEGi]a8delay xxx audio delays, positive and
// negative values, in ms, in the range [-300...300]; all optional;
// default 0
// ======== SUBPICTURES ========
// -[SEGi]s1 subpic1_file ... -[SEGi]s32 subpic32_file; all optional
// -[SEGi]s1lang xx ... -[SEGi]s32lang xx two characters language code for the
// subpic files, default unspecified
// -[SEGi]s1ext 0|1|2|3|5|6|7|9|13|14|15 ...
// -[SEGi]s32ext 0|1|2|3|5|6|7|9|13|14|15
// language extensions for the subpicture files, where 0 --> unspecified,
// 1 --> normal, 2 --> large, 3 --> children 5 --> normal captions,
// 6 --> large captions, 7 --> children captions, 9 --> forced,
// 13 --> director comments, 14 --> large director comments,
// 15 --> children director comments; all optional; default 1 - normal
// -[SEGi]s1dmode LB | PAN | LB_PAN | WIDE | WIDE_LB | WIDE_PAN | WIDE_LB_PAN
// ... -[SEGi]s32dmode LB | PAN | LB_PAN | WIDE | WIDE_LB | WIDE_PAN |
// WIDE_LB_PAN display modes and track assignement for the subpicture
// streams; all optional; default --> WIDE_LB if video A/R is 16:9,
// unspecified if video A/R is 4:3
// ======== HIGHLIGHTS =========
// -[SEGi]hlstart[_j] hh:mm:ss:ff; highlight start time, relative to start of
// video segment; default 00:00:00:00
// -[SEGi]hldurat[_j] hh:mm:ss:ff; highlight duration, relative to start of
// highlight; default 00:00:00:00
// -[SEGi]hlmnu[_j] menu_file; in PgcEdit mnu format; all mnu items may be
// overridden by other hl arguments (see below), if present
// -[SEGi]hlbset[_j] hh:mm:ss:ff; button selection end time, relative to
// start of highlight; default 00:00:00:00
// -[SEGi]hlbutm{l}[_j] NORMAL | LB | PAN | WIDE; display mode for group {l}
// buttons; l=1,2,3; default --> NORMAL, i.e. unspecified
// -[SEGi]hloffsbutnr[_j] 0..36; highlight start button number; default 0
// -[SEGi]hlnumselbut[_j] 0..36; number of buttons selectable with the remote;
// default 0
// -[SEGi]hlfselbutnr[_j] 0..36; force selected button number; default 0
// -[SEGi]hlfactbutnr[_j] 0..36; force activated button number; default 0
// -[SEGi]hlcsm[_j] color_scheme_file; in PgcEdit csm format
// -[SEGi]but{k}g{l}[_j] button_file; in PgcEdit gbv format, where {k} is the
// button ID and {l} is the group ID --> {k} == 1 ... 36 and {l} == 1, 2, 3
// ======== CHAPTERS, PROGRAMS, CELLS ========
// -[SEGi]celltc timecode_file; optional file containing timecode boundaries
// for the cells in the hh:mm:ss:ff - 11 char fixed ndtc format
// -[SEGi]cellfr framecnt_file; optional file containing framecount boundaries
// for the cells in the "usual" CellTimes format - plain frame indexes
// -[SEGi]progtc timecode_file; optional file containing timecode boundaries
// for the programs in the hh:mm:ss:ff - 11 char fixed ndtc format -
// program boundaries must be a subset of the cell boundaries;
// default (no timecode_file) --> 1 SINGLE PROGRAM for the segment
// -[SEGi]progfr framecnt_file; optional file containing framecount boundaries
// for the programs - plain frame indexes format - program boundaries must
// be a subset of the cell boundaries;
// default (no framecnt_file) --> 1 SINGLE PROGRAM for the segment
// -[SEGi]chaptc timecode_file; optional file containing timecode boundaries
// for the chapters in the hh:mm:ss:ff - 11 char fixed ndtc format -
// chapter boundaries must be a subset of the program boundaries;
// default (no timecode_file) --> 1 SINGLE CHAPTER for the segment
// -[SEGi]chapfr framecnt_file; optional file containing framecount boundaries
// for the chapters - plain frame indexes format - program boundaries
// must be a subset of the program boundaries;
// default (no framecnt_file) --> 1 SINGLE CHAPTER for the segment
// ---------------------------------------------------------------------------
// -------- Organisation and Navigation Section Arguments --------------------
// ---------------------------------------------------------------------------
// -hcn file_name; hard coded navigation with static, motion, single page or
// multipage menus; interim solution providing the placement of the last
// segment(s) in the VMG domain as different page menus
//
Examples of usage, for simple and complex DVD compilations, including multipage menues are included in the links below.
The program is someway limited in many aspects; for example - at least in the actual release - the number of segments is limited to 99. Both the organisation of the segments and the DVD navigation are hardcoded.
Version 1.3 is supporting the creation of simple menus, static, motion, single page or multipage, placed in the VMG domain.
The related navigation, for the moment, is hardcoded. Up to 255 cells, 99 programs and 99 chapters are supported.
A set of reference examples, including all of the needed menu assets to build static and motion menus is here:
http://www.mediafire.com/?z8fykh2rpbc
Overall rationale for the existance of BatchMux.exe is based on the following considerations:
1. Simplicity and straight usage. Even though MuxMan 0.16.6 fully supports command line arguments, the usage of some authoring parameters is only possible by means of scripting. That's not a complex job. The compilation of a MuxMan script is possible (for instance) by loading in the GUI the needed assets files, by making some configuration of the DVD project an by saving the project itself. However the command line control provided by BatchMux is simple, and it should like to users not familiar or not interested in mxp scripting.
2. Enabling of automation for existing applications. The usage of MuxMan as a reference authoring application should be encouraged as much as possible. The quality of its output is significantly better respect to other authoring packages, getting rid - definitely - of "stuttering", "freezing" and other sad effects, mostly caused by some weakness of the adopted authoring packages. On the other hand, the direct integration of MuxMan as authoring engine into thirdy party applications, may turn out as being not possible or too complex, due to the need of creating the mxp MuxMan script. BatchMux.exe may be helpful in this scenario... Actually it made possible the development of the MuxMan plugin to author DVD inside the DVD2SVCD package, it was also adopted in FAVC of MrOdwin and inside AVSTODVD of MrC...
Usage: run BatchMux with the above arguments... No argument, or -help for printing out the list of the CLI arguments...
Cheers,
SD
Edit 11-09-2008: link update to release 1.3
Main changes:
- Added sanity checks for the lenght of log file path and destination folder (both should not exceed 120 characters)
- Added -progtc, -progfr, -chaptc, -chapfr switches to support the generation of programs and chapters in the DVD compilation
- Bugfix. Corrected a mistake, introduced in version 1.2, concerning the wrong attribution of chapters in multi-title compilations
Edit 25-08-2008: link update to release 1.2
Main changes:
- Reference examples completely revised: now they include all of the assets to show the usage of BatchMux to build single page and multipage menus
- First release supporting multipage menues, hardcoded organisation and navigation
- Completely reworked the harcoded navigation for static and motion menus
- Removed all -hcni switches; now the navigation is partially configurable by means of a proper cfg file
- Added -hcn file_name switch, to support the configuration of the hardcoded navigation
- Changed the default assignement, in the mxp output, of the -[SEGi]hlbset[_j] argument. Now it is set to -1, instead of 00:00:00:00; same as for the -[SEGi]hldurat[_j] argument
- Radically improved the DVD navigation: now supporting prev&next title jump, the resume function and the titles are now all one-sequential
Edit 21-07-2008: link update to release 1.1
Main Changes:
- Added -prio argument, to set the exec priority of MuxMan.exe
- Added -hcn3 and -hcn4 arguments to implement the menu navigation without the "PlayAll" button
Edit 15-05-2007: link update to release 1.0
Main Changes:
- First release supporting menues, hardcoded organisation and navigation
- Added -hcn1 and -hcn2 argument to implement static and motion menus