dvdauthor [-o output-dir] {-x xml-config-file}
dvdauthor [-o output-dir] [-j | --jumppad | -g | --allgprm] [-T | --toc] [menu or title options]
At a high level, a DVD is a collection of menus and titles. ++Conceptually, a menu contains buttons which can be assigned actions ++and provides a list of choices to the end user, while a title contains ++the main content of the DVD. However, in reality many of the features ++available in menus (including buttons, pausing, and looping) are also ++available in titles.
The menus and titles are divided into titlesets and the VMGM menu set. ++A titleset can contain a number of menus and titles which are meant to ++act together. The "menu", "audio", "subtitle", and "angle" buttons on ++the DVD player's remote control will all access menus in the same ++titleset as the title which is being played. All the titles and menus ++of a given titleset have the same video, audio, and subtitle settings ++(the definitions for the menus are independent from the definitions ++for the titles), so if you want to have different settings (for ++example widescreen vs standard aspect ratios), then you need separate ++titlesets. Titlesets are not meant to jump to one another, so the ++VMGM menu domain is used. It is a collection of menus (no titles) ++that can access the menus and titles of all the titlesets.
One of the most frusterating things when deciding how to author a DVD ++is that there are often many ways to accomplish the same task. For ++example, you must decide whether to locate menus at the VMGM level or ++the titleset level. A typical setup is to locate the high level menus ++at the VMGM level, and the low level configuration menus (scene / ++audio / subtitle selection) at the titleset. If there are DVD extras, ++perhaps with a lower quality audio track and a 4:3 aspect ratio, then ++they would be in a separate titleset with a menu to select among the ++extras located at the titleset level.
dvdauthor works in discrete operations. It ++authors each titleset one at a time, and then finally authors the VMGM ++to complete the disc. At that point the contents can be written out ++to a DVD. If you are controlling dvdauthor with ++command line arguments, then each step will occur independently; ++however if you are using the XML configuration file, then you have the ++option of combining some or all the steps into one.
The VOBs passed to dvdauthor must have DVD ++NAV (VOBU) packets multiplexed in at the correct locations. Many ++tools can do this, including mplex from mjpegtools ++1.6.0 or later. dvdauthor will then fill these ++packets in with the correct data. Special care has been taken to ++ensure dvdauthor is fifo compliant; that is every ++source VOB can be the output of another program (such as ++mplex). This can make execution faster on many ++systems by avoiding extra filesystem accesses.
The destination directory to store the DVD-Video file structure in.
foo
Enable the use of all 16 general purpose registers. Prohibits the use of jumppad and some complex expressions that require temporary registers.
Creates the table of contents file instead of a ++titleset. If this option is used, it should be listed first, and you ++may not specify any titles.
Creates a menu.
Creates a title.
A plus (+) separated list of video options. Dvdauthor ++will try to infer any unspecified options. pal, ntsc, 4:3, 16:9, ++720xfull, 720x576, 720x480, 704xfull, 704x576, 704x480, 352xfull, ++352x576, 352x480, 352xhalf, 352x288, 352x240, nopanscan, noletterbox, crop. ++Default is ntsc, 4:3, 720xfull
A plus (+) separated list of options for an audio ++track, with each track separated by a comma (,). For example -a ++ac3+en,mp2+de specifies two audio tracks: the first is an English ++track encoded in AC3, the second is a German track encoded using ++MPEG-1 layer 2 compression. ac3, mp2, pcm, dts, 16bps, 20bps, 24bps, ++drc, surround, nolang, 1ch, 2ch, 3ch, 4ch, 5ch, 6ch, 7ch, 8ch, and any ++two letter ISO 639 language abbreviation. Default is 1 track, mp2, ++20bps, nolang, 2ch. 'ac3' implies drc, 6ch.
A plus (+) separated list of options for a subpicture ++track, with each track separated by a comma (,). nolang and any two ++letter language abbreviation (see -a) Default is no subpicture ++tracks.
Makes the current menu the default for certain ++circumstances. It is a comma separated list of any of:
for ++TOC menus: title
for VTS menus: root, ptt, audio, ++subtitle, angle
Specifies where to get the subpicture ++palette. Settable per title and per menu. If the filename ends in .rgb ++(case insensitive) then it is assumed to be RGB, otherwise it is ++YUV. Entries should be 6 hexadecimal ++digits. FILE defaults to ++xste-palette.dat
Specifies a comma (,) separated list of chapter ++markers. Each marker is of the form [[h:]mm:]ss[.frac] and is relative ++to the SCR of the next file listed (independent of any timestamp ++transposing that occurs within dvdauthor). The chapter markers ONLY ++apply to the next file listed. Defaults to 0.
Specifies either a file, a pipe, or a shell command ++ending in | which supplies an MPEG-2 system stream with VOB sectors ++inserted in the appropriate places (using mplex -f 8 to ++generate)
creates a button of the specified size. See ++LANGUAGE DESCRIPTION for a description of commandlist.
Executes the commandlist ++instructions either before or at the end of the menu/title. See ++LANGUAGE DESCRIPTION for the format of commandlist.
Here is the basic structure of the configuration file:
<dvdauthor [dest="output-dir"] [jumppad="1|on|yes" | allgprm="1|on|yes"]> ++ <vmgm> ++ [<fpc>commands;</fpc>] ++ <menus [lang="language-code"] > ++ <video [format="ntsc|pal"] [aspect="4:3|16:9"] ++ [resolution="XxY"] [caption="field1|field2"] ++ [widescreen="nopanscan|noletterbox|crop"] /> ++ <audio [format="mp2|ac3|dts|pcm"] [channels="numchannels"] ++ [quant="16bps|20bps|24bps|drc"] [dolby="surround"] ++ [samplerate="48khz|96khz"] [lang="language"] /> ++ [<audio ... />] ++ <subpicture lang="language" /> ++ <pgc [entry="title"] [palette="yuvfile|rgbfile"] ++ [pause="seconds|inf"]> ++ <pre> commands; </pre> ++ <vob file="file.mpg" [chapters="chapter-list"] ++ [pause="seconds|inf"] /> ++ [<vob ... />] ++ <button [name="buttonname"]> commands; </button> ++ [<button ... />] ++ <post> commands; </post> ++ </pgc> ++ [<pgc ... />] ++ </menus> ++ </vmgm> ++ <titleset> ++ <menus> ++ [<video ... />] ++ [<audio ... />] ++ <pgc [entry="entries"] ++ [palette="yuvfile|rgbfile"] [pause="seconds|inf"]> ++ [...] ++ </pgc> ++ [<pgc ... />] ++ </menus> ++ <titles> ++ [<video ... />] ++ [<audio ... />] ++ <pgc [palette="yuvfile|rgbfile"] [pause="seconds|inf"]> ++ [...] ++ </pgc> ++ [<pgc ... />] ++ </titles> ++ </titleset> ++ [<titleset ... />] ++</dvdauthor>
A breakdown of the config file:
Initiates dvdauthor. dest denotes the directory where dvdauthor will write the files. It overrides the -o option. Contains up to one <vmgm> tag and any number of <titleset>'s.
Constructs of a VMGM level menu set or a title set. ++Contains up to one <menus> tag and if a ++titleset, up to one <titles> tag.
Marks the list of menus or titles for this VMGM menu ++set or titleset, called in dvdauthor terminology a ++"pgcgroup." Contains up to one <video> tag, ++up to eight <audio> tags, up to 32 ++<subpicture> tags, and any number of ++<pgc> tags.
Manually configures the video ++parameters for this pgcgroup. If any of these are not set, then they ++will be inferred from the source stream. Note that the DVD format ++only specifically supports 720x480, 704x480, 352x480, and 352x240 ++resolutions for NTSC, and 720x576, 704x576, 352x576, and 352x288 ++resolutions for PAL, but DVD author will accept a wider range of ++inputs and round up to the nearest size.
Manually configures an audio channel for this ++pgcgroup. List once for each channel. Most parameters are inferred ++automatically from the source VOBs except for PCM parameters. ++However, language must be manually specified. Note that it is ++possible to just list the language attribute and let ++dvdauthor fill in the rest.
foo
A PGC is just a fancy term for either a menu or a ++title. It has a special meaning in the DVD spec so I have retained ++its use here. PGC's can have commands that get executed before they ++start playing or after they finish; see pre and ++post tags below.
If the PGC is a menu, you can specify one or more entries for ++it. This means that if you press the corresponding button on your DVD ++remote, then it will go to this menu. For a VMGM level menu, the only ++choice is title, which on my remote corresponds to ++the top menu button. For a titleset level menu, ++you can use root, subtitle, audio, angle, and ptt. If you want more ++than one, separate them by a space or a comma. Note that ++root entry is meant for commands that jump from a ++VMGM level menu to a titleset menu.
All button and menu masks and all subtitles within a PGC must ++share the same 16 color palette. If you use spumux ++to generate the subtitle/subpicture packets, then the color ++information will be automatically passed to ++dvdauthor; however, if you use another subtitler or ++want to have more control over the palette, you can manually specify ++it with the palette attribute. The first 16 ++entries of the file should be the 16 colors of the palette, listed as ++6 digit hexadecimal numbers representing either the RGB breakdown (if ++the filename ends in .rgb or the YUV breakdown (if ++the filename does not end in .rgb. After that, the ++button group information can be listed as pairs of 8 digit hexadecimal ++numbers; up to three button groups may be specified.
If you have a short video sequence or just want the video to ++pause at the end, you can use the pause attribute ++to set the number of seconds (as an integer) from 1 to 254. If you ++want the video to pause indefinitely, use ++inf.
Sets the commands to execute before or after a PGC ++plays. It can be used to loop the current video (by having a ++<post> jump ... </post> sequence), or to ++conditionally skip certain chapters if a flag has been set.
Sets the commands to execute when the disk is first ++put in the player (FPC = First Program Chain). It can be used to jump ++to a particular menu or initialize registers on startup. If not ++specified, an implicit one will be created that jumps to the first ++menu found, or if there is no menu it will jump to the first title..
foo
foo
foo
The language is quite simple and roughly looks like C.
Statements are terminated with a semicolon.
Statements can span multiple lines.
Multiple statements can appear on one line.
Whitespace (space, tab, newlines) are not important, except to separate keywords and identifiers.
The DVD virtual machine processes 16 bit values. It supports up ++to 16 general purpose registers; however dvdauthor ++reserves 3 for internal use. Thus register 0-12 are avaialable for ++use and are referred to as g0 through ++g12.
There are also 24 system registers, which can be referred to as ++s0 through s23. Not all of ++these can be set. Many of these have pseodonyms.
Denotes the ++audio channel, ranging from 0-7.
The subtitle ++track, ranging from 0-31. If you want the subtitle to always be ++displayed, then you should add 64 (i.e. choose 64-95). Simply ++selecting the track (0-31) means that only the forced subtitles will ++be displayed, whereas enabling the track (64-95) means that all the ++subtitles will be displayed. This allows you to have forced subtitles ++only for the parts of the movie where the actors are speaking a ++foreign (to the viewer) language, but still have normal subtitles for ++the hearing impaired. The hearing impaired viewers would enable the ++track (64-95) while the other viewers would just select the track ++(0-31) they would be able to share the ++track.
Selects the ++angle (currently untested).
Denotes the ++currently highlighted button. Note that the value is multiplied by ++1024, so the first button is 1024, the second is 2048, ++etc.
Expressions follow typical C syntax except that booleans are not ++convertible to integers and vice versa. Operators and comparisons ++are:
==, !=, >=, >, <=, <, &&, ||, !, eq, ne, ge, gt, le, lt, and, or, xor, not, +, -, *, /, %, &, |, ^
Since the code is encapsulated in XML, the parser will catch any ++unescaped < characters, thus alphabetic mnemonics have been ++provided for all comparison operators for consistency.
There is also a numerical function:
Computes a psuedo-random number, between 1 and the ++supplied number, inclusively.
Blocks are either a single statement (terminated by a ++semicolon), or a group of statements wrapped in curly braces. For ++example:
g3=s7;
{ ++ audio=1; ++ subtitle=65; ++ jump vmgm menu 3; ++}
The statements supported are fairly simple at the moment.
Sets a variable equal to the result of an equation.
Calculates the expression; if true, then it executes ++the block of code.
Jumps to a particular title or menu, or calls a ++particular menu, or returns to the calling title. You can only ++execute a call from a title to a menu; all other forms are illegal. ++The purpose of using call instead of ++jump (besides the fact that they support a mutually ++exclusive list of targets) is to allow the menu to return to the point ++in the title where the call originated using ++resume. You can manually specify the return cell ++by using the resume keyword, however if you do not ++specify one and you use the command in a post instruction block, then ++it will presume cell 1.
The following are possible targets:
Targets either the default menu, a menu number Y, or the menu denoted as the entry for Z. The menu is in either the VMGM or titleset domain. If you wish to target a menu in the current domain then you can omit the domain moniker.
Targets a title, or a chapter in a title. Numbering ++starts at 1. All of the titles on the disc are accessible in the VMGM ++domain, or you can access them by titleset ++instead.
Targets a chapter, program, or cell in the current ++title or menu (note that menus do not have chapters). You can use ++this to create looping menus: jump cell ++1;
This forms the most basic DVD. THe DVD player will start playing the movie when the disc is inserted and will stop at the end.
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc> ++ <vob file="video.mpg" /> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
Adding a second chapter is quite simple if it is in a separate file.
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc> ++ <vob file="video1.mpg" /> ++ <vob file="video2.mpg" /> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
DVDAuthor normally creates one ++chapter per file. This can be overridden using ++chapters="foo". The ++parameter is a comma separated list of timestamps of the form ++[[HH:]MM:]SS.
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc> ++ <vob file="video1.mpg" chapters="0" /> ++ <vob file="video2.mpg" /> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
This will create a movie with two chapters, one at the beginning (which is always required) and one five minutes into the video.
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc> ++ <vob file="video1.mpg" chapters="0,5:00" /> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
Having <post>commands will alter what happens when playback reaches the end of your title. You can repeat the current title by jumping to the first chapter.
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc> ++ <vob file="video1.mpg" /> ++ <post> ++ jump chapter 1; ++ </post> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
Having pause="foo" ++will cause playback to pause for either the specified number of ++seconds or indefinitely (inf). This can be used ++either at the end of the title (by supplying it as an attribute to ++pgc or at the end of a particular source, as an ++attribute to vob. The following will pause ++indefinitely at the end of the title:
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc pause="inf"> ++ <vob file="video1.mpg" /> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
while the following will pause for 5 seconds after the first chapter:
<dvdauthor> ++ <vmgm /> ++ <titleset> ++ <titles> ++ <pgc> ++ <vob file="video1.mpg" pause="5" /> ++ <vob file="video2.mpg" /> ++ </pgc> ++ </titles> ++ </titleset> ++</dvdauthor>
In these examples, dvdauthor is run as:
rm -r test && dvdauthor -o test -x dvdauthor.xml
It will create or append to the directory specified, so it is a ++good idea to remove the directory before running ++dvdauthor, otherwise the resulting structure will ++not be playable.
spumux takes an mpeg2 program stream as input and spits one back out, with subtitles multiplexed in. It is run as:
spumux spumux.xml < input.mpg > output.mpg
mplex comes from the mjpegtools package, ++available at http://mjpeg.sourceforge.net. It can take independent ++video and audio streams and create a single mpeg2 stream.
mplex -f 8 -o output.mpg video.m2v audio.m2a
When creating menus, it is necessary to create an mpeg2 video stream from one or more bitmap images. For NTSC you can do:
ppmtoy4m | mpeg2enc -a 2 -n n -f 8 -o output.m2v
and for PAL you can do:
ppmtoy4m | mpeg2enc -a 2 -n p -f 8 -o output.m2v
When creating menus with no sound, it is necessary to multiplex ++in an empty sound file. At 48kHz, NTSC has 1601.6 audio samples per ++frame while PAL has 1920 audio samples per frame. Determine how many ++samples you need, and run:
dd if=/dev/zero bs=4 count=number-of-samples | toolame -b 128 -s 48 /dev/stdin output.m2a
Next | ||
Examples |
The following are the ISO 639 langauges codes, adapted from ++http://sunsite.berkeley.edu/amher/iso_639.html.
Table A-1. Sorted By Language Name
Langauge Name | Code | Language Family |
---|---|---|
ABKHAZIAN | AB | IBERO-CAUCASIAN |
AFAN (OROMO) | OM | HAMITIC |
AFAR | AA | HAMITIC |
AFRIKAANS | AF | GERMANIC |
ALBANIAN | SQ | INDO-EUROPEAN (OTHER) |
AMHARIC | AM | SEMITIC |
ARABIC | AR | SEMITIC |
ARMENIAN | HY | INDO-EUROPEAN (OTHER) |
ASSAMESE | AS | INDIAN |
AYMARA | AY | AMERINDIAN |
AZERBAIJANI | AZ | TURKIC/ALTAIC |
BASHKIR | BA | TURKIC/ALTAIC |
BASQUE | EU | BASQUE |
BENGALI;BANGLA | BN | INDIAN |
BHUTANI | DZ | ASIAN |
BIHARI | BH | INDIAN |
BISLAMA | BI | [not given] |
BRETON | BR | CELTIC |
BULGARIAN | BG | SLAVIC |
BURMESE | MY | ASIAN |
BYELORUSSIAN | BE | SLAVIC |
CAMBODIAN | KM | ASIAN |
CATALAN | CA | ROMANCE |
CHINESE | ZH | ASIAN |
CORSICAN | CO | ROMANCE |
CROATIAN | HR | SLAVIC |
CZECH | CS | SLAVIC |
DANISH | DA | GERMANIC |
DUTCH | NL | GERMANIC |
ENGLISH | EN | GERMANIC |
ESPERANTO | EO | INTERNATIONAL AUX. |
ESTONIAN | ET | FINNO-UGRIC |
FAROESE | FO | GERMANIC |
FIJI | FJ | OCEANIC/INDONESIAN |
FINNISH | FI | FINNO-UGRIC |
FRENCH | FR | ROMANCE |
FRISIAN | FY | GERMANIC |
GALICIAN | GL | ROMANCE |
GEORGIAN | KA | IBERO-CAUCASIAN |
GERMAN | DE | GERMANIC |
GREEK | EL | LATIN/GREEK |
GREENLANDIC | KL | ESKIMO |
GUARANI | GN | AMERINDIAN |
GUJARATI | GU | INDIAN |
HAUSA | HA | NEGRO-AFRICAN |
HEBREW | IW | SEMITIC |
HINDI | HI | INDIAN |
HUNGARIAN | HU | FINNO-UGRIC |
ICELANDIC | IS | GERMANIC |
INDONESIAN | IN | OCEANIC/INDONESIAN |
INTERLINGUA | IA | INTERNATIONAL AUX. |
INTERLINGUE | IE | INTERNATIONAL AUX. |
INUPIAK | IK | ESKIMO |
IRISH | GA | CELTIC |
ITALIAN | IT | ROMANCE |
JAPANESE | JA | ASIAN |
JAVANESE | JV | OCEANIC/INDONESIAN |
KANNADA | KN | DRAVIDIAN |
KASHMIRI | KS | INDIAN |
KAZAKH | KK | TURKIC/ALTAIC |
KINYARWANDA | RW | NEGRO-AFRICAN |
KIRGHIZ | KY | TURKIC/ALTAIC |
KURUNDI | RN | NEGRO-AFRICAN |
KOREAN | KO | ASIAN |
KURDISH | KU | IRANIAN |
LAOTHIAN | LO | ASIAN |
LATIN | LA | LATIN/GREEK |
LATVIAN;LETTISH | LV | BALTIC |
LINGALA | LN | NEGRO-AFRICAN |
LITHUANIAN | LT | BALTIC |
MACEDONIAN | MK | SLAVIC |
MALAGASY | MG | OCEANIC/INDONESIAN |
MALAY | MS | OCEANIC/INDONESIAN |
MALAYALAM | ML | DRAVIDIAN |
MALTESE | MT | SEMITIC |
MAORI | MI | OCEANIC/INDONESIAN |
MARATHI | MR | INDIAN |
MOLDAVIAN | MO | ROMANCE |
MONGOLIAN | MN | [not given] |
NAURU | NA | [not given] |
NEPALI | NE | INDIAN |
NORWEGIAN | NO | GERMANIC |
OCCITAN | OC | ROMANCE |
ORIYA | OR | INDIAN |
PASHTO;PUSHTO | PS | IRANIAN |
PERSIAN (farsi) | FA | IRANIAN |
POLISH | PL | SLAVIC |
PORTUGUESE | PT | ROMANCE |
PUNJABI | PA | INDIAN |
QUECHUA | QU | AMERINDIAN |
RHAETO-ROMANCE | RM | ROMANCE |
ROMANIAN | RO | ROMANCE |
RUSSIAN | RU | SLAVIC |
SAMOAN | SM | OCEANIC/INDONESIAN |
SANGHO | SG | NEGRO-AFRICAN |
SANSKRIT | SA | INDIAN |
SCOTS | GAELIC | GD CELTIC |
SERBIAN | SR | SLAVIC |
SERBO-CROATIAN | SH | SLAVIC |
SESOTHO | ST | NEGRO-AFRICAN |
SETSWANA | TN | NEGRO-AFRICAN |
SHONA | SN | NEGRO-AFRICAN |
SINDHI | SD | INDIAN |
SINGHALESE | SI | INDIAN |
SISWATI | SS | NEGRO-AFRICAN |
SLOVAK | SK | SLAVIC |
SLOVENIAN | SL | SLAVIC |
SOMALI | SO | HAMITIC |
SPANISH | ES | ROMANCE |
SUNDANESE | SU | OCEANIC/INDONESIAN |
SWAHILI | SW | NEGRO-AFRICAN |
SWEDISH | SV | GERMANIC |
TAGALOG | TL | OCEANIC/INDONESIAN |
TAJIK | TG | IRANIAN |
TAMIL | TA | DRAVIDIAN |
TATAR | TT | TURKIC/ALTAIC |
TELUGU | TE | DRAVIDIAN |
THAI | TH | ASIAN |
TIBETAN | BO | ASIAN |
TIGRINYA | TI | SEMITIC |
TONGA | TO | OCEANIC/INDONESIAN |
TSONGA | TS | NEGRO-AFRICAN |
TURKISH | TR | TURKIC/ALTAIC |
TURKMEN | TK | TURKIC/ALTAIC |
TWI | TW | NEGRO-AFRICAN |
UKRAINIAN | UK | SLAVIC |
URDU | UR | INDIAN |
UZBEK | UZ | TURKIC/ALTAIC |
VIETNAMESE | VI | ASIAN |
VOLAPUK | VO | INTERNATIONAL AUX. |
WELSH | CY | CELTIC |
WOLOF | WO | NEGRO-AFRICAN |
XHOSA | XH | NEGRO-AFRICAN |
YIDDISH | JI | GERMANIC |
YORUBA | YO | NEGRO-AFRICAN |
ZULU | ZU | NEGRO-AFRICAN |
Table A-2. Sorted By Language Code
Langauge Name | Code | Language Family |
---|---|---|
AFAR | AA | HAMITIC |
ABKHAZIAN | AB | IBERO-CAUCASIAN |
AFRIKAANS | AF | GERMANIC |
AMHARIC | AM | SEMITIC |
ARABIC | AR | SEMITIC |
ASSAMESE | AS | INDIAN |
AYMARA | AY | AMERINDIAN |
AZERBAIJANI | AZ | TURKIC/ALTAIC |
BASHKIR | BA | TURKIC/ALTAIC |
BYELORUSSIAN | BE | SLAVIC |
BULGARIAN | BG | SLAVIC |
BIHARI | BH | INDIAN |
BISLAMA | BI | [not given] |
BENGALI;BANGLA | BN | INDIAN |
TIBETAN | BO | ASIAN |
BRETON | BR | CELTIC |
CATALAN | CA | ROMANCE |
CORSICAN | CO | ROMANCE |
CZECH | CS | SLAVIC |
WELSH | CY | CELTIC |
DANISH | DA | GERMANIC |
GERMAN | DE | GERMANIC |
BHUTANI | DZ | ASIAN |
GREEK | EL | LATIN/GREEK |
ENGLISH | EN | GERMANIC |
ESPERANTO | EO | INTERNATIONAL AUX. |
SPANISH | ES | ROMANCE |
ESTONIAN | ET | FINNO-UGRIC |
BASQUE | EU | BASQUE |
PERSIAN (farsi) | FA | IRANIAN |
FINNISH | FI | FINNO-UGRIC |
FIJI | FJ | OCEANIC/INDONESIAN |
FAROESE | FO | GERMANIC |
FRENCH | FR | ROMANCE |
FRISIAN | FY | GERMANIC |
IRISH | GA | CELTIC |
SCOTS GAELIC | GD | CELTIC |
GALICIAN | GL | ROMANCE |
GUARANI | GN | AMERINDIAN |
GUJARATI | GU | INDIAN |
HAUSA | HA | NEGRO-AFRICAN |
HINDI | HI | INDIAN |
CROATIAN | HR | SLAVIC |
HUNGARIAN | HU | FINNO-UGRIC |
ARMENIAN | HY | INDO-EUROPEAN (OTHER) |
INTERLINGUA | IA | INTERNATIONAL AUX. |
INTERLINGUE | IE | INTERNATIONAL AUX. |
INUPIAK | IK | ESKIMO |
INDONESIAN | IN | OCEANIC/INDONESIAN |
ICELANDIC | IS | GERMANIC |
ITALIAN | IT | ROMANCE |
HEBREW | IW | SEMITIC |
JAPANESE | JA | ASIAN |
YIDDISH | JI | GERMANIC |
JAVANESE | JV | OCEANIC/INDONESIAN |
GEORGIAN | KA | IBERO-CAUCASIAN |
KAZAKH | KK | TURKIC/ALTAIC |
GREENLANDIC | KL | ESKIMO |
CAMBODIAN | KM | ASIAN |
KANNADA | KN | DRAVIDIAN |
KOREAN | KO | ASIAN |
KASHMIRI | KS | INDIAN |
KURDISH | KU | IRANIAN |
KIRGHIZ | KY | TURKIC/ALTAIC |
LATIN | LA | LATIN/GREEK |
LINGALA | LN | NEGRO-AFRICAN |
LAOTHIAN | LO | ASIAN |
LITHUANIAN | LT | BALTIC |
LATVIAN;LETTISH | LV | BALTIC |
MALAGASY | MG | OCEANIC/INDONESIAN |
MAORI | MI | OCEANIC/INDONESIAN |
MACEDONIAN | MK | SLAVIC |
MALAYALAM | ML | DRAVIDIAN |
MONGOLIAN | MN | [not given] |
MOLDAVIAN | MO | ROMANCE |
MARATHI | MR | INDIAN |
MALAY | MS | OCEANIC/INDONESIAN |
MALTESE | MT | SEMITIC |
BURMESE | MY | ASIAN |
NAURU | NA | [not given] |
NEPALI | NE | INDIAN |
DUTCH | NL | GERMANIC |
NORWEGIAN | NO | GERMANIC |
OCCITAN | OC | ROMANCE |
AFAN (OROMO) | OM | HAMITIC |
ORIYA | OR | INDIAN |
PUNJABI | PA | INDIAN |
POLISH | PL | SLAVIC |
PASHTO;PUSHTO | PS | IRANIAN |
PORTUGUESE | PT | ROMANCE |
QUECHUA | QU | AMERINDIAN |
RHAETO-ROMANCE | RM | ROMANCE |
KURUNDI | RN | NEGRO-AFRICAN |
ROMANIAN | RO | ROMANCE |
RUSSIAN | RU | SLAVIC |
KINYARWANDA | RW | NEGRO-AFRICAN |
SANSKRIT | SA | INDIAN |
SINDHI | SD | INDIAN |
SANGHO | SG | NEGRO-AFRICAN |
SERBO-CROATIAN | SH | SLAVIC |
SINGHALESE | SI | INDIAN |
SLOVAK | SK | SLAVIC |
SLOVENIAN | SL | SLAVIC |
SAMOAN | SM | OCEANIC/INDONESIAN |
SHONA | SN | NEGRO-AFRICAN |
SOMALI | SO | HAMITIC |
ALBANIAN | SQ | INDO-EUROPEAN (OTHER) |
SERBIAN | SR | SLAVIC |
SISWATI | SS | NEGRO-AFRICAN |
SESOTHO | ST | NEGRO-AFRICAN |
SUNDANESE | SU | OCEANIC/INDONESIAN |
SWEDISH | SV | GERMANIC |
SWAHILI | SW | NEGRO-AFRICAN |
TAMIL | TA | DRAVIDIAN |
TELUGU | TE | DRAVIDIAN |
TAJIK | TG | IRANIAN |
THAI | TH | ASIAN |
TIGRINYA | TI | SEMITIC |
TURKMEN | TK | TURKIC/ALTAIC |
TAGALOG | TL | OCEANIC/INDONESIAN |
SETSWANA | TN | NEGRO-AFRICAN |
TONGA | TO | OCEANIC/INDONESIAN |
TURKISH | TR | TURKIC/ALTAIC |
TSONGA | TS | NEGRO-AFRICAN |
TATAR | TT | TURKIC/ALTAIC |
TWI | TW | NEGRO-AFRICAN |
UKRAINIAN | UK | SLAVIC |
URDU | UR | INDIAN |
UZBEK | UZ | TURKIC/ALTAIC |
VIETNAMESE | VI | ASIAN |
VOLAPUK | VO | INTERNATIONAL AUX. |
WOLOF | WO | NEGRO-AFRICAN |
XHOSA | XH | NEGRO-AFRICAN |
YORUBA | YO | NEGRO-AFRICAN |
CHINESE | ZH | ASIAN |
ZULU | ZU | NEGRO-AFRICAN |
Table A-3. Sorted By Language Group
Langauge Name | Code | Language Family |
---|---|---|
AYMARA | AY | AMERINDIAN |
GUARANI | GN | AMERINDIAN |
QUECHUA | QU | AMERINDIAN |
BHUTANI | DZ | ASIAN |
BURMESE | MY | ASIAN |
CAMBODIAN | KM | ASIAN |
CHINESE | ZH | ASIAN |
JAPANESE | JA | ASIAN |
KOREAN | KO | ASIAN |
LAOTHIAN | LO | ASIAN |
THAI | TH | ASIAN |
TIBETAN | BO | ASIAN |
VIETNAMESE | VI | ASIAN |
LATVIAN;LETTISH | LV | BALTIC |
LITHUANIAN | LT | BALTIC |
BASQUE | EU | BASQUE |
BRETON | BR | CELTIC |
IRISH | GA | CELTIC |
SCOTS GAELIC | GD | CELTIC |
WELSH | CY | CELTIC |
KANNADA | KN | DRAVIDIAN |
MALAYALAM | ML | DRAVIDIAN |
TAMIL | TA | DRAVIDIAN |
TELUGU | TE | DRAVIDIAN |
GREENLANDIC | KL | ESKIMO |
INUPIAK | IK | ESKIMO |
ESTONIAN | ET | FINNO-UGRIC |
FINNISH | FI | FINNO-UGRIC |
HUNGARIAN | HU | FINNO-UGRIC |
AFRIKAANS | AF | GERMANIC |
DANISH | DA | GERMANIC |
DUTCH | NL | GERMANIC |
ENGLISH | EN | GERMANIC |
FAROESE | FO | GERMANIC |
FRISIAN | FY | GERMANIC |
GERMAN | DE | GERMANIC |
ICELANDIC | IS | GERMANIC |
NORWEGIAN | NO | GERMANIC |
SWEDISH | SV | GERMANIC |
YIDDISH | JI | GERMANIC |
AFAN (OROMO) | OM | HAMITIC |
AFAR | AA | HAMITIC |
SOMALI | SO | HAMITIC |
ABKHAZIAN | AB | IBERO-CAUCASIAN |
GEORGIAN | KA | IBERO-CAUCASIAN |
ASSAMESE | AS | INDIAN |
BENGALI;BANGLA | BN | INDIAN |
BIHARI | BH | INDIAN |
GUJARATI | GU | INDIAN |
HINDI | HI | INDIAN |
KASHMIRI | KS | INDIAN |
MARATHI | MR | INDIAN |
NEPALI | NE | INDIAN |
ORIYA | OR | INDIAN |
PUNJABI | PA | INDIAN |
SANSKRIT | SA | INDIAN |
SINDHI | SD | INDIAN |
SINGHALESE | SI | INDIAN |
URDU | UR | INDIAN |
ALBANIAN | SQ | INDO-EUROPEAN (OTHER) |
ARMENIAN | HY | INDO-EUROPEAN (OTHER) |
ESPERANTO | EO | INTERNATIONAL AUX. |
INTERLINGUA | IA | INTERNATIONAL AUX. |
INTERLINGUE | IE | INTERNATIONAL AUX. |
VOLAPUK | VO | INTERNATIONAL AUX. |
KURDISH | KU | IRANIAN |
PASHTO;PUSHTO | PS | IRANIAN |
PERSIAN (farsi) | FA | IRANIAN |
TAJIK | TG | IRANIAN |
GREEK | EL | LATIN/GREEK |
LATIN | LA | LATIN/GREEK |
HAUSA | HA | NEGRO-AFRICAN |
KINYARWANDA | RW | NEGRO-AFRICAN |
KURUNDI | RN | NEGRO-AFRICAN |
LINGALA | LN | NEGRO-AFRICAN |
SANGHO | SG | NEGRO-AFRICAN |
SESOTHO | ST | NEGRO-AFRICAN |
SETSWANA | TN | NEGRO-AFRICAN |
SHONA | SN | NEGRO-AFRICAN |
SISWATI | SS | NEGRO-AFRICAN |
SWAHILI | SW | NEGRO-AFRICAN |
TSONGA | TS | NEGRO-AFRICAN |
TWI | TW | NEGRO-AFRICAN |
WOLOF | WO | NEGRO-AFRICAN |
XHOSA | XH | NEGRO-AFRICAN |
YORUBA | YO | NEGRO-AFRICAN |
ZULU | ZU | NEGRO-AFRICAN |
FIJI | FJ | OCEANIC/INDONESIAN |
INDONESIAN | IN | OCEANIC/INDONESIAN |
JAVANESE | JV | OCEANIC/INDONESIAN |
MALAGASY | MG | OCEANIC/INDONESIAN |
MALAY | MS | OCEANIC/INDONESIAN |
MAORI | MI | OCEANIC/INDONESIAN |
SAMOAN | SM | OCEANIC/INDONESIAN |
SUNDANESE | SU | OCEANIC/INDONESIAN |
TAGALOG | TL | OCEANIC/INDONESIAN |
TONGA | TO | OCEANIC/INDONESIAN |
CATALAN | CA | ROMANCE |
CORSICAN | CO | ROMANCE |
FRENCH | FR | ROMANCE |
GALICIAN | GL | ROMANCE |
ITALIAN | IT | ROMANCE |
MOLDAVIAN | MO | ROMANCE |
OCCITAN | OC | ROMANCE |
PORTUGUESE | PT | ROMANCE |
RHAETO-ROMANCE | RM | ROMANCE |
ROMANIAN | RO | ROMANCE |
SPANISH | ES | ROMANCE |
AMHARIC | AM | SEMITIC |
ARABIC | AR | SEMITIC |
HEBREW | IW | SEMITIC |
MALTESE | MT | SEMITIC |
TIGRINYA | TI | SEMITIC |
BULGARIAN | BG | SLAVIC |
BYELORUSSIAN | BE | SLAVIC |
CROATIAN | HR | SLAVIC |
CZECH | CS | SLAVIC |
MACEDONIAN | MK | SLAVIC |
POLISH | PL | SLAVIC |
RUSSIAN | RU | SLAVIC |
SERBIAN | SR | SLAVIC |
SERBO-CROATIAN | SH | SLAVIC |
SLOVAK | SK | SLAVIC |
SLOVENIAN | SL | SLAVIC |
UKRAINIAN | UK | SLAVIC |
AZERBAIJANI | AZ | TURKIC/ALTAIC |
BASHKIR | BA | TURKIC/ALTAIC |
KAZAKH | KK | TURKIC/ALTAIC |
KIRGHIZ | KY | TURKIC/ALTAIC |
TATAR | TT | TURKIC/ALTAIC |
TURKISH | TR | TURKIC/ALTAIC |
TURKMEN | TK | TURKIC/ALTAIC |
UZBEK | UZ | TURKIC/ALTAIC |
BISLAMA | BI | [not given] |
MONGOLIAN | MN | [not given] |
NAURU | NA | [not given] |
Output audio stream to stdout ++
Output video stream to stdout ++
output the previous stream to FILE instead of stdout ++
skip to first valid header -- ensures mplex can handle output ++
output mplex offset to stdout ++
show short help ++
spumux [-m dvd | -m cvd | -m svcd] [-s stream] [-v level] [-P] {file} {< mpeg} {> mpeg-with-subtitles}
spumux encodes the subtitles and multiplexes it into the mpeg2 program stream.
Sets the encoding for the subtitles. Can be dvd, cvd, or svcd. ++Default is dvd.
Sets the subtitle stream id. Default is 0.
Sets the verbosity level.
Enables a progress bar.
Here's a sample configuration file:
<subpictures> ++ <stream> ++ <spu start="start-time" [ end="end-time" ] [ image="picture.png" ] ++ [ highlight="picture.png" ] [ select="picture.png" ] ++ [ transparent="color-code" ] [ force="yes" ] ++ [ autooutline="infer" [ outlinewidth="width" ] ++ [ autoorder="rows" | autoorder="columns" ] ] ++ [ xoffset="x-coord" yoffset="y-coord" ] > ++ <button [ name="name" ] [ x0="x0" ] [ y0="y0" ] [ x1="x1" ] ++ [ y1="y1" ] [ up="name" ] [ down="name" ] ++ [ left="name" ] [ right="name" ] /> ++ <action [ name="name" ] /> ++ </spu> ++ </stream> ++</subpictures>
Each subtitle image is described by an <spu> tag. The start and ++optional end attributes describe when the subtitle will be displayed ++on the screen, in "HR:MM:SS.HU". The image attribute describes the ++main subtitle image, which can either be a PNG or BMP file. If your ++image is not a full screen image, you can use xoffset and yoffset to ++move the picture around. In the advent that the author is unable to ++use a graphics format with an alpha channel, then the transparent ++attribute can be used to describe which color should become fully ++transparent. The color is in hexadecimal as "RRGGBB". If you want to ++force the display of the subtitle, regardless of whether the user has ++enabled subtitles or not, you can use the force tag. When you are ++making menus, the force tag is required.
The remaining attributes and tags are related to menu creation. The ++highlight attribute shows what all the buttons look like when they are ++highlighted (i.e. when you are using the arrows in the menu), and the ++select attribute shows what all the buttons look like when the are ++selected (i.e. for the 1-2 seconds after you press enter in the menu). ++If either of these (or the image attribute) are omitted, then spumux ++creates a blank (totally transparent) image. Obviously at least one ++tag should be specified.
To aid in button creation, the autooutline attribute instructs spumux ++to infer where the buttons are located. It does this by attempting to ++draw rectangles around a composition of the highlight and select ++images which do not intersect any opaque or semi-opaque pixels. In ++order to support textual buttons, the attribute outlinewidth allows ++you to specify the width of the rectangle which is tested. Wider ++rectangles won't be able to squeeze between the letters. Finally, ++autoorder describes which way to order the automatically detected ++buttons, which is important for numerically selected buttons and for ++mapping buttons to button names or to the implied names.
The button and action tags describe the buttons (visibly selectable ++objects on the screen) and actions (commands that are executed as soon ++as the associated key is pressed on the remote). If you are using the ++autooutline feature, just designing buttons, are happy with the ++inferred button navigation, and can deal with the simplistic naming ++system, then you actually do not even need to specify any buttons or ++actions. Otherwise, read on.
The name attribute is used to give a button or action an easy to refer ++to name. By default they are numbered sequentially starting with "1". ++The up, down, left, and right names describe which button or action ++should be tied to the corresponding key when the current button is ++highlighted, though if omitted spumux will use a reasonably ++intelligent algorithm to determine which buttons to move to.
The (x0,y0) coordinates describe the upper left hand corner ++inclusively, while the (x1,y1) coordinates describe the lower right ++hand corner EXclusively. The coordinates start at 0,0 for the upper ++left hand corner. Ideally, the y0 and y1 coordinates should both be ++even, so the button edges fully empasses two interlaced scanlines, ++even if there is no data in the extra scanline. Some DVD players will ++fill in the extra scanline if it is not specified; spumux makes an ++effort to ensure that will be transparent but there is no guarantee.
Spumux is also able to handle text subtitles, which will be rendered to ++graphics by spumux. A lot of different text (must be non-graphic) formats ++are supported (.sub, .srt, .ssa, .smi, .rt , .txt, .aqt, .jss, .js, ass). ++Spumux will try to determine the format automatically.
If processing textbased subtitles no other streams can be defined, buttons ++or others need to be processed in another pass with spumux, using another ++xml file.
Following .xml file shows the available tags and their default settings. ++Only the textsub tag is mandatory, defaults are used if the specific tag ++is not specified.
<subpictures> ++ <stream> ++ <textsub filename="demo1.srt" characterset="ISO8859-1" ++ fontsize="28.0" font="arial.ttf" horizontal-alignment="left" ++ vertical-alignment="bottom" left-margin="60" right-margin="60" ++ top-margin="20" bottom-margin="30" subtitle-fps="25" ++ movie-fps="25" movie-width="720" movie-height="574" ++ force="yes" ++ /> ++ </stream> ++</subpictures>
The textsub tag defines the settings for the text to graphics rendering.
The filename attribute defines the path and name of the input text subtitle ++file, this is the only attribute that is mandatory.
The characterset attribute defines the characterset to be used, available ++charactersets can be found at http://www.gnu.org/software/libiconv.
The fontsize attribute defines the size of the font in font units. ++The font attribute defines the font used. Spumux will look into the home ++directory in subdirectory .spumux for fonts on linux systems and will ++look into the windows/fonts and subdirectory spumux of the cygwin/mingw ++home directory and into the exucution directory for windows based ++execution for the specified font. Looking for free fonts? One listing is ++here http://www.microsoft.com/typography/links/links.asp?type=free&part=1 ++(this is only about fonts, not about operating systems).
The horizontal-alignment attribute defines the horizontal alignment of the ++subtitles. Options are: "left", "right", "center" and "default". ++The "default" value causes spumux to use the attribute that is in the text ++subtitle file if the format supports such an attribute.
The vertical-alignment attribute defines the vertical alignment. ++Options are: "top", "center" and "bottom".
The margin attributes define the minimum blank pixel space between the ++border of the image and the border of the subtitle lines.
Defining the subtitle-fps and movie-fps attributes make it possible for ++spumux to recalculate the subtitle timing if these are not the same.
The movie-width and movie-height attributes define the maximum size of ++the subtitle page, these shouldn't be larger than the fram-size of the ++movie frame, normally they are the same. Some DVD-players more like ++subtitle frames that are 2 or 4 pixels smaller in height.
The force option allows you to force the display of the subtitle, ++regardless of whether the user has enabled subtitles or not.
DVDAuthor | ||
---|---|---|
Prev |
base name for script and images. Defaults to sub. ++
verbosity level. sub. Defaults to 0. ++
resize images to full size. Defaults to 720x576. ++
number of the substream to extract. Defaults to 0. ++
name of file with dvd palette. If palette file ends with .rgb, treated as a RGB else as a YCbCr color ++
print this help ++
print version number ++