These are the release notes for tovid versions 0.30 through 0.39, with the newest on top.
tovid 0.32 Edit
It has been more than two years since the last release of tovid. I (Eric/wapcaplet) have been on a long break from development, to raise my son (now 3 years old), get a real job, and generally tend to more pressing matters. The Python rewrite of tovid still hasn't left the ground, there are a bunch of unresolved defects, I let the tovid.org domain lapse out of my hands and into those of some Russian dude who won't reply to his email, and in general things are a big mess.
So, in an effort to get things moving again, we're putting this release out there. If things are broken or confusing, that's what the next release is for. After two years, I figure a half-assed release is better than no release at all.
Starting with this release, all of tovid's executable scripts are now called via a single frontend script, simply called tovid, which takes as its first argument the "command" you want to run. For example, instead of running the todisc script directly, you run it with tovid disc. Here are the new command names:
- tovid gui
- Was todiscgui. Run the graphical interface to making discs.
- tovid mpg
- Was tovid. Encode videos to MPEG format.
- tovid disc
- Was todisc. Create a DVD with menus.
- tovid titlesets
- New. Create a DVD with multiple titlesets using the 'tovid gui' to set options.
- tovid id
- Was idvid. Identify one or more video files.
- tovid dvd
- Was makedvd. Author and/or burn a DVD.
- tovid menu
- Was makemenu. Create an MPEG menu.
- tovid vcd
- Was makevcd. Author and/or burn an (S)VCD.
- tovid xml
- Was makexml. Create DVD or (S)VCD .xml file.
- tovid postproc
- Was postproc. Post-process an MPEG video file.
Since tovid is still predominantly bash-based, the actual executable scripts are much as they were before, except they will now be installed to a location that is not normally included in your system $PATH, such as /usr/lib/tovid.
This change will hopefully solve a couple of problems--first, it will keep your /usr/bin or /usr/local/bin folder from being cluttered with all of tovid's auxiliary scripts, and second, it will make tovid more extensible in the future if additional commands are added.
One consequence of this change is that the manual pages have also been merged into a single entry, man tovid. I realize that nobody likes ginormous manual pages, and this is not an ideal solution, partly because of the manpage format's general lack of readability, indexing, or inter-linking (I mean, the manpage format is like 40 years old!) This problem may be mitigated in the future by including comprehensive built-in help, or by switching to a more modern documentation format based on ReStructuredText or something similar; nothing is definite yet. For now, I'm afraid you'll just have to suck it up and do man tovid. It may not be great, but I promise it will never get as bad as mplayer's manpage.
The GUI formerly known as todiscgui is now the tovid GUI. Apologies to anyone who preferred the wxWidgets-based GUI, but that beast was just too hard to continue maintaining. It was my first real GUI, and my first real Python experience, and basically just seems old and busted to me now. If you loved it and want to resurrect it under a new project, be my guest--but I am done with it, and have no interest in continuing development of it.
The One GUI to Rule Them All is now just called tovid gui. Run that to start the GUI interface (or use your installed desktop icon, assuming that's working). This thing has changed enormously since the 0.31 release, with too many modifications to remember or explain, but here's a very short summary:
- Pretty much every single todisc / tovid disc option is represented now
- Log window that shows the output of todisc / tovid disc as it runs, with the ability to interactively answers questions as it prompts for them
- GUI settings can be saved to a bash script, then loaded again later (note that this is not entirely working, and you will have problems with some options)
- Associative listbox controls for options that are associated one-to-one or one-to-many with the list of video files
- Font chooser shows a preview of the selected font
- todisc now does slideshows. These can be single slideshows, multiple slideshows on one menu, or mixed videos and slideshows on the same menu. They can of course be used in titlesets as well. Additionally you can have submenus with slideshows: if -ani-submenu is used then the submenu will be an animated slideshow with transitions, else the submenu will be a static 'polaroid stack' montage of slides. The slideshows lead to a static display of slides, slide by slide.
- todisc now supports multiple cpus. By default one job for each cpu found will be run - this can be limited or increased with -jobs N. This results in a large speedup - on my athlon X2 3600 it runs 30% faster when using both processors compared to just using one. This should scale well for greater than 2 cpus as well.
- Encoding menus from images now uses ppm output and pipes, which results in less encoding steps and better quality, and better speed in many cases. Slideshows in SVN got a huge speed boost (600%) when the change to this technique was made.
- grouped files can now have submenus.
- thumb titles now go directly on the thumb image/video, allowing for multiline titles and keeping thumbs in aspect.
- submenu chapters now can have titles using '-chapter-titles'.
- You can now set the length of submenus, using -submenu-length N N N. This is particularly useful for slideshow submenus.
- Submenus can now have a background image or colour using -submenu-background or -submenu-bg-colour.
- -menu-fade now takes an optional argument, the time at which the menu start to fade in over top of the background. This means that you can use a video as a sort of 'transition' to the menu: this transition video will play/show as long as the duration you choose. Additionally, you can now use -menu-fade for a static menu. The '-transition-to-menu' option has been added for convenience: if you use this option the background will stop being animated at the exact point the thumbs finish fading in.
- -menu-fade now encodes just the images that change (animated) resulting in a speed up for faded menus.
- -button-style text now works for all arrangements. It also looks much better.
- Added -nomenu option for quick mpeg -> DVD with no menu
- Added possibility of playall button on VMGM menu
- Added 6 new thumb shapes (-thumb-shape)
- Added capability for user to supply thumb masks in $PREFIX/lib/tovid/masks or ~/.tovid/masks
- You can now use thumb shapes on the showcase image/video as well. (you can now do all effects on a showcase image/video that you can do on a video thumbnail.)
- Any makempg options can now be passed directory on the command line to todisc (they will be used by makempg if file(s) need re-encoding)
- submenus now working for grouped videos AND slideshows
- You can now use an image background for submenus, using -submenu-background.
- You can also use a background color instead, using -submenu-bg-color (-bg-color for main menu) Each submenu can have the same background, or you can use a different one for each.
- Added -grid option, which makes a second preview with a numbered grid on it to assist with options that require screen geometries
- todisc now honors WORKING_DIR variable in ~/.tovid/preferences
- todisc honors the new environment variable TOVID_WORKING_DIR
- many bug fixes were made and other changes that have been left out here. The diff to 0.31 is large: -2437 +6274
The man pages have been updated - see 'man tovid' for details and some examples of usage.
postproc had been broken because mplayer was not dumping streams properly. The script now uses ffmpeg to demux, and it is working again.
tovid 0.31 Edit
- xml files for DVDs are stamped with makexml's version
- output messages cleaned up
- mixed-aspect DVDs fixed: only widescreen titlesets get widescreen="nopanscan" video tags
- script exits on a 'file not found' error
- makedvd checks that input xml files were made with makexml and prompts to continue if not
- new option: -noask (which assumes answers that lead to script completion)
- available space for output dvd image found according to free space on output directory's filesystem (and no longer the pwd)
- Up to 36 buttons/entries allowed in DVD menus
- Sorting bug for DVD menu entries fixed (now ok for 10+ entries)
- ffmpeg's new API for -ab supported
- titlesets supported with -titleset OPTIONS -end-titleset, and -vmgm OPTIONS -end-vmgm. OPTIONS are any options that one can normally use with todisc as making each titleset (and the root or "VMGM" menu) will be a separate call to todisc. Between -vmgm -end-vmgm you only need -titles TITLES and OPTIONS - it will be a text menu with optional showcase image/video so no -files FILES are needed
- "switched menus" feature added with -switched-menu option. This features a showcase image or video that changes as you go forward or backward to the next menu button using up or down on the dvd remote
- '-quick-menu' feature added. This uses ffmpeg rather than imagemagick for making animated menus, so it is VERY fast. It makes a *-text-menu* style menu with a showcase video.The showcase video ( -showcase VIDEO ) is mandatory, unless doing '-switched-menu' in which case it is not needed. Note: this option is a natural for switched menu creation as it is so fast and switched menus would take a long time otherwise.
- A quick intuitive navigation system with '-quick-nav' option. The right and left arrow keys on the remote will advance to the next video in each titleset. If at the beginning of a titleset, left will go to the previous titleset, or the last titleset if we are already at the beginning. If at the last titleset, right will go to the first titleset. If used in conjunction with -switched-menus, the left and right remote buttons will also activate the next switched menu in the current titleset. Note: '-quick-nav' is an option for when using multiple titlesets only.
- '-chapters' now supports a user supplied chapter list in HH:MM:SS format, as well as just specifying the number of chapters with an integer.
- locales other than English should now be supported.
- If the input VIDEO is mpeg2, then use tcdemux to create a nav_log that will be saved as $VIDEO.nav_log. Subsequent calls to idvid will use this log to speed up id'ing the file. This will also help makexml/makemenu/tovidgui and todisc/todiscgui as the long process of getting the frame counts will only need to be done once.
- New options:
- -interlaced_bf -- Encode the video as interlaced with bottom fields first (common in DV footage).
- -fit NUM -- Fit the video into NUM MiB.
- Fixed bug in relation to tovidgui: if a video is projected to need more disk space than is currently available, tovid will ask the user if it should continue anyway. tovidgui, on the other hand, cannot pass answers to tovid and thus progress is impeded. This question is now under control of the options -noask and -from-gui and tovid now assumes a yes answer (as in 'yes, encode anyway') when either option is present.
Metagui is a new high-level GUI design interface using Python, and the driving force behind todiscgui in this release. Its scope is general enough that it will likely be split into a new project, separate from tovid, in the near future.
- Improved rendering speed by using streamed PPM instead of individual PNG files
- Interlaced rendering for Flipbooks
- PhotoZoom effect added
- Keyword arguments are supported, with ffmpeg_encode implementing interlace, quant, vbitrate and abitrate
- fit function translated from tovid
- New playtime module for predicting an A/V stream's length, output size, or bitrate, given values for the other two
- kill and get_error methods added to cli.Command
- Optional length accuracy in media.load_media
- Added odict, an ordered dictionary from a Python Cookbook recipe
- Install python modules as architecture independent (since they are ;-)
- New make targets: install-bash and uninstall-bash -- (un)install only the bash scripts.
tovid 0.30 Edit
There's a lot to celebrate in this release. The todisc script now has a full-featured GUI, and the existing tovidgui is more stable than ever, with some new features of its own. makemenu got some style, and todisc itself was improved and bugfixed. See below for full details and screenshots.
New in 0.30
- New GUI for todisc using the Python built-in toolkit Tkinter
- Interface includes files, titles, disc format and TV system, showcase, menu title and backgrounds, thumbnail, font, and audio configuration, and nearly every other todisc option
- Use the command todiscgui to run the gui
- A todiscgui.desktop file is included and installed to allow running todiscgui from the menu
- Includes two graphical themes
- More fonts now available in font-selection dialog
- Allowed adding of "Groups of Videos" to use makexml's -group ... -endgroup options.
- Full control over text fill and outline. New possibilies:
- transparent fill
- gradient fill
- fractal fill
- pattern fill
- any color (including transparent) outline
- adjustable outline width
- Full control over DVD button fill and outline. New possibilities:
- separate button font from main text
- special DVD button shapes (as seen here)
- transparent fill
- solid fill
- transparent outline
- solid outline
- New makemenu options supported:
- Add an "export to script" button in the encode pane to save the commands that will be run.
- Added checks before encoding for possible problematic situations.
- Added checks to ensure maximum of 36 buttons for a DVD menu (9 for (S)VCD)?)
- Minor logic fixes in the disc layout tree
- Workaround for transcode stalling issues; if transcode appears to stall, send a HUP to try and recover
- -debug option removed
- added -text-menu option for todisc. Changed the makemenu option to -use-makemenu
- consolidated options: -showcase-video -showcase-image and -showcase-no-thumb are now : -showcase IMAGE|VIDEO (or just -showcase for no showcase thumb) and -bgvideo and -bgimage are now just -background IMAGE| VIDEO
- added -bgvideo-seek and -bgaudio-seek so all input material can be seeked in
- added -align which will align thumbs and titles north or south. (if -align north then title will align south)
- added -group to allow grouping videos in dvdauthor.xml. -group 1 2.mpg 3.mpg 4.mpg will group these 3 videos with the 1st video given with -files . . .
- allow showcase image/video or -background video for textmenu style
- improved quality of background video images by tweaking ffmpeg command
- offer to re-encode non-compliant -group'ed files as well
- added -highlight-colour and -select-colour for changing menu button colours ("color" spelling allowed)
- -textmenu takes an argument: the number of titles in column 1
- use multiline titles from main menu for submenu (if -submenu-titles not given)
- added -intro VIDEO option for adding a vmgm intro movie that plays before the root menu
- added -outlinewidth for spumux outlinewidth variable
- added -text-start for -text-menu menus. The titles will start at the given pixel on the Y axis.
- added -title-gap for -text-menu menus. The given value is the distance between titles vertically (Y axis).
- added -rotate-thumbs for rotating the thumbnail images. The given values are the rotate degrees, and there must be one value for each file given with -files.
- many other bug fixes and tweaks and no doubt some new bugs too !
- Some ffmpeg-based encoding issues resolved
- New -slice option, for encoding only a given segment of a video
- New -async option
- Prompt user on whether to remove intermediate files (.m2v, .ac3 etc.); can be overridden with -noask
- Default -quality changed to 6 instead of 8, to give smaller file size
- Fixed button layout bug for DVD menus: buttons appear where you would expect them.
- New options:
- -length -- for setting the length of menus (ie if you don't want a whole song, you can trim it)
- -align middle -- for putting the entries right in the center of the frame (was overridden by -align center).
- -noask -- for when you don't want an interactive makemenu (gui comes to mind...)
- -quiet -- for reduced scrolling :)
- for menu titles -- see an example
- -menu-title -- for adding a main title to your menu
- -menu-title-fontsize -- for setting the font size of the main title
- for DVD buttons -- see examples
- -button-font -- for changing the font of the buttons. (Webdings has some good symbols, but you don't want your text to be unreadable.)
- -button-outline -- for outlining the buttons, giving a nice two-color effect.
- -button play|movie|utf8 -- a few short cuts for using specific button shapes.
- New -tabular option for summarizing/comparing specs from several videos
- Using ffmpeg's reported bitrate, which seems to be more accurate than mplayer's
- Patch for multi-res files (from Nick Matteo).
- Actually works now ;0)
- -quiet -- for reduced scrolling :)
- -quiet -- for reduced scrolling :)
- Quits on vfat filesystems, since filename case is ignored and 'video_ts' isn't DVD compatible.
- Default DVD chapter creation corrected: video length was measured, but no chapters were made; now 5-minute chapters are made by default
- Console output cleanup
- -quiet -- for reduced scrolling :)
- Now works for (S)VCD and DVD
- Supports arbitrary chapter lists via the -chapters option
- Dependency-check for normalize-audio (Debian-specific package name of normalize)
- Simpler, more intuitive dependency checking. It's safe to delete $HOME/.tovid/dependency.list - the file is no longer used.
- Quit when more than one tovid is found on the system, preventing unpredictable behavior.
- New function get_filesystem $DIRECTORY to find what filesystem $DIRECTORY is on.
The development goals for the 0.30 libtovid sadly went unmet, but fortunately things are starting to show signs of stability. Several things were refactored, merged, or outright removed for simplicity's sake. Here are a few of the highlights:
- dvdauthor and vcdimager XML-generation capability is now neatly encapsulated by author.py, building on a generic XML backend in xml.py. This is the backend used by pymakexml (see above).
- spumux subtitle-multiplexing is now contained in spumux.py, again building on the XML backend.
- The render/drawing.py vector graphics backend was overhauled to allow rendering to arbitrary resolutions
- render/layer.py was revised to work with new rendering backend.
- cli.py now supports command-line execution and pipes via Command and Pipe classes. Stream redirection and capturing is handled properly.
- output.py makes colored console output easy.