MpegALot v1.1 - 06/2007

Jacob Klint (jklint@juno.com)
UC Irvine | The Paul Merage School of Business

http://www.merage.uci.edu/~dvdotnet

Download: http://webfiles.uci.edu/jklint/work/MpegALot_latest.zip

Introduction
System Requirements
Contacts
History
Credits
License
Usage
Advanced
Errata

Introduction (back to top)

MpegALot has one purpose - to facilitate the encoding of large amounts of videos to the MPEG4+AAC format (for ipod, PSP, etc). It has several useful features that greatly simplify this task (bolded items are ones I find especially useful and/or have not found in any other batch MPEG4 encoders):

 

System Requirements (back to top)

Software - MpegALot requires the Microsoft .NET 2.0 runtime (freely downloadable through Windows Update or at http://www.microsoft.com) and AviSynth (freely download at http://avisynth.org/SourceForge). MpegALot was developed and tested using Windows XP and Microsoft Visual Studio .NET 2005.

Hardware - How much RAM, CPU, hard disk space, etc do you need? As with all video encoding apps, the answer is "more than you have" :). The MpegALot GUI itself is not very resource-intensive (as far as .NET programs go, at least), but the encoding processes can heavily tax your machine. Some recommendations:

 

Contacts (back to top)

Questions? Comments? Suggestions? Email the author, Jacob Klint, at jklint@juno.com.

This and other projects are available at: http://www.merage.uci.edu/~dvdotnet.


Credits (back to top)

The GUI and the multi-threaded encoding frontend were created by the author, Jacob Klint. Several excellent open-source utilities handle the meat of the encoding work:

I am deeply indebted to the authors of the above programs for their contributions to the open-source community. I hope that my work serves to further the popularity and utility of their programs.

The icon for this program comes from the Tango project (http://tango.freedesktop.org/Tango_Desktop_Project).

 

History

This project is loosely based on and supercedes a previous command-line program of mine, "AutoMPEG4" (http://www.merage.uci.edu/~dvdotnet/autompeg4.html) . MpegALot addresses many of the deficiencies of that program and adds several new features.


License (back to top)

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, exluding commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

If you have any commercial interest in this product, please contact the author, Jacob Klint (jklint@juno.com)

Usage (back to top)

This section provides directions on how to use the MpegALot GUI. There are five sections: Menus, Sources, Encoding Options, and Running a Job.


figure 1 - the main MpegALot GUI

Menus (back to Usage)

File

figure 2 - the File menu

Command
Effect
New
Create a new job file
Open...
Open a job file from disk
Recent

List recently used job files for easy access

Active only when there are recently used files to list

Save

Save the current settings to a job file ("*.mpegalotjob.xml")

Save As...

Save the current settings to a new job file ("*.mpegalotjob.xml")

Exit
Quit the program

 

Edit

figure 3 - the Edit menu

Command
Effect
Add File(s)
Browse the disk for source files to add to the source list
Add Folder...
Browse the disk for a source folder to add to the source list
Select All

Select all the sources in the source list

Active only when sources are present

Open External

Open the selected source(s) - if the source is a folder, it will open in Windows Explorer; if the source is a video file, it will open with your default media player. This is the same as double-clicking the item in Explorer.

Active only when sources are selected

Remove

Remove the selected source(s) from the source list

Active only when sources are selected

 

View

figure 4 - the View menu

Command
Effect
Show Status Viewer

Display the Status Viewer window for monitoring job progress

See Running a Job for details on the Status Viewer

 

Tools

figure 5 - the Tools menu

Command
Effect
Start Encoding

Begin the encoding process. Command toggles between "Start Encoding" and "Stop Encoding" when clicked.

Active only when sources are present

Pause Encoding

Temporarily halts all encoding. Command toggles between "Pause Encoding" and "Resume Encoding" when clicked.

Active only while encoding

 

Help

figure 6 - the Help menu

Command
Effect
Open Guide (HTML)

Open this help document in your default web browser.

About MpegALot

Show version, author, and other basic information.

 

Sources (back to Usage)

figure 7 - the Sources area

A "source" is either a video file or a folder containing files (or other folders) to encode. You may add sources to a job in several ways:

Filter Effect
Name/Extension The most powerful filters. These let you specify strings that file/folder names or file extensions must or must NOT match. For file/folder names, "match" means that the name contains the string, while for extensions, "match" means the extension exactly equals the string (with or without the "."). Matching is not case-sensitive.

You may enter multiple strings in each filter box by separating them with commas. For the "Include" column, having multiple strings means that the source must match at least one of the entered strings, and for the "Exclude" column, it means that the source must not match ANY of the strings.

Files Check to include files in the list, clear to hide all files in the list
Folders Check to include folders in the list, clear to hide all folders in the list
Recurse through sub-folders

For folder sources, in addition to encoding files in the folder itself, look through all its sub-folders (and all their sub-folders...) for files to encode. These additional files are not immediately added to the source list because the searching through the sub-folders does not occur until you begin encoding. Also, the Name/Extension filters will be applied to files found during this recursive search.

You can use this filter only when the "Folders" checkbox is also checked.

 

Encoding Options (back to Usage)

figure 8 - the Encoding area

The encoding options cover basic AV settings such as bitrate, framerate, resolution, etc. These are standard options found in almost any video encoding application. For more details on these options, I recommend doing some research on sites such as http://www.doom9.org and http://www.videohelp.com.

However, there are some settings in this area that are specific to MpegALot and deserve some explanation:

Option Meaning
Simultaneous encoding processes

The maximum number of videos to encode simultaneously when doing batch encodings. Recommended is one per logical CPU core (ie, the number of processors shown in the Task Manager).

You may change this setting while encoding.

Encoding process priority

The task priority for encoding jobs. This is the same as setting priorities in the Task Manager.

You may change this setting while encoding.

Directory

Where to place encoded files. If you specify an absolute directory (eg, "c:\videos"), then all encoded files will be placed in that directory. If you specify a relative directory (eg, "videos" or "\videos"), then each encoded file will be placed in that directory relative to its source directory (eg, the source video "c:\sources\myvideo.avi" would output to "c:\sources\videos\myvideo.mp4").

The output filename is always the same as the input filename, but with the ".mp4" extension.

If output file already exists

Ask me what to do - each time an existing output file is found, pop up a dialog box asking for direction

Overwrite the existing file - replace the existing file without asking. The existing file will be moved to the Recycle Bin. MpegALot asks once for confirmation before beginning the encoding job.

Skip the file - leave the existing file alone and do not encode the source file.

Copy source metadata

Copy extra information (artist, title, year, genre, and copyright) from the source file to the output file.

The source metadata can either be embedded in the source file, or you can specify alternate information by placing a "*.metadata.xml" file in the same directory as the source file, where "*" is the complete name (including extension) of the source file (eg, for the source file "c:\videos\mysource.avi", create the file "c:\videos\mysource.avi.metadata.xml").

The *.metadata.xml file should contain the following text (standard XML - copy and paste into Notepad, etc):

<Metadata>
<artist>Jacob Klint </artist>
<title>my awesome movie</title>
<year>2020</year>
<genre>cool stuff</genre>
<copyright>me, 2020</copyright>
</Metadata>

You may omit any of the above fields to leave them blank in the output file.

AV Presets (Load/New)

The settings in the Audio and Video boxes can be saved and exported/imported as preset files, making it easy to load commonly used settings and to transfer settings between machines or users.

The export/import preset files (*.mpegalotpreset.xml) contain only AV settings, not any of the other settings such as output options, encoding process options, sources, etc.

 

Running a Job (back to Usage)

Once you have added one or more sources, the "Start Encoding" button in the lower-right-hand corner of the main application window becomes active. Click this button or the corresponding menu item in the "Tools" menu (see Menus) to begin the encoding process.

At this point, several things will happen:

The Status Viewer provides detailed feedback about the current state of your encoding jobs. The top panel has an entry for each of the currently encoding source files and reports information such as time elapsed/remaining, the current encoding step for that file, and a percentage complete progress bar. Note that the time and percentage values are only estimates and are not completely accurate. There is also a "cancel" button for each current file that allows you to cancel encoding just that file (MpegALot will ask for confirmation).

The lower pane of the Status Viewer is a copy of the information contained in the log. Log entries tell when encoding of each item starts or stops and whether or not the encoding was a success.

While encoding, you can:

Once encoding has ended (because of a manual stop, the closing of the program, or finishing processing all source files), the GUI will revert to its normal state and the status bar will indicate the application is "Idle".

 

Advanced (back to top )

This section covers advanced topics such as command-line usage and technical encoding details.

Command-Line

MpegALot accepts two command-line arguments:

mpegalot.exe <job file (no angle brackets)> [/start]

eg "mpegalot.exe c:\videos\myjob.mpegalotjob.xml" or "mpegalot.exe "c:\document and settings\user\desktop\myjob.mpegalotjob.xml" /start"

The first argument specifies a job file to open when the program first opens.

The second argument forces MpegALot to begin encoding and run without any user interaction - that means no confirmation dialogs for output file overwrites and automatically exiting once the job finishes running. However, if errors requiring user interaction occur, MpegALot will display the necessary dialog boxes. This mode is suitable for use with the Windows Task Scheduler.

You may interrupt "automatic" mode by manually stopping encoding.

Automatic mode requires that the first argument (input job file) also be specified.

Technical Details

MpegALot uses several utilities to do the "dirty work" of encoding and muxing. The video is first encoded to MPEG4 with MEncoder (either with CBR or 2-pass VBR), then muxed into an MP4 container in the temp directory using MP4Box. The audio is then encoded to AAC with FFMpeg, then muxed into the output container with MP4Box. If desired, MpegALot uses Atomic Parsley to write the source file's metadata into the output container. Finally, the output file is moved from the temp directory to the final output location.

 

Errata (back to top)

Only one instance of MpegALot can be run per user. If you or the Task Scheduler launches the program when it is already running, the existing instance will be brought forward.

If errors occur during encoding, MpegALot moves the temp files for that source into a "failed" subdirectory in the temp folder ("(your windows drive):\documents and settings\(your username)\application data\mpegalot") so you can investigate the failure. The "failed" directory is cleared out whenever you begin encoding. The MpegALot log file is also located in this temp directory, and is also cleared at the start of each encoding job.

MpegALot preserves all settings from session to session. These settings are saved as XML files in the application temp directory.

There are a few places in the GUI where you can mistakenly enter "bad" parameters. When MpegALot detects this, it will highlight the erroneous input area in red, put an error message in red text in the status bar, and prevent you from starting encoding. The input must be fixed before encoding can begin.

- last updated by Jacob Klint, 06/2007