Do-It-Yourself Lib-Ray

Someday in the not-too-distant future, we'll have a wizard that will make it easy to make a Lib-Ray release based on templates. Until then, we are making them by using existing free-software tools, and it's fairly complicated. Also, the design is changing rapidly as we try to solve problems and come up with a better way to do things.

I have, however, documented how to do a lot of these steps, and this page links to my articles on the subject, with headings for which versions of Lib-Ray they apply to.

Lib-Ray "0.4" Prototype

I am just starting on a new prototype, based on the idea of replacing the Javascript links idea with "server-side" CGI-type links (i.e. like "http://localhost?variable=value"). It has been pointed out to me that this might really simplify the design and we'll finish faster if this works. I do have a few reservations about whether it will create additional problems. But that's why we make prototypes.

I have decided not to finish the "0.3" prototype unless problems with 0.4 make it necessary to go back.

For most of the completed work (i.e. the feature video and menu design/layout) the 0.3 design is unchanged. This is just a change in how controls are implemented.

I will start documenting 0.4 once I understand it myself.

Lib-Ray "0.3" Prototype

The big change for 0.3 was changing over to MKV/VP8 for the feature video. This is a big change from Ogg/Theora, and most of the tools for generating the video file are different. The resulting video is MUCH better quality, though, and the VP8 codec seems to be as "free" as Theora. So this change seems to be very successful.

I also decided with 0.3, that it was going to make more sense to adopt flash memory media (MMC or SDHC cards) rather than sticking to optical disks.

I have recently (September 2012) decided not to finish the menu design for 0.3 (see 0.4 above). But I documented the process of creating the feature video file, and some design issues for languages and localization which are mostly unchanged. These are in a series of articles for Free Software Magazine, listed here:

Lib-Ray Video Standard: Moving to SDHC Flash Media

In Spring 2011, I started a project to attempt to create a free-culture compatible / non-DRM alternative to Blu-Ray for high-definition video releases on fixed-media, and after about a year hiatus, I'm getting back to it with some new ideas. The first is that I've concluded that optical discs are a bust for this kind of application, and that the time has come to move on to Flash media, specifically SDHC/SDXC as the hardware medium. This is a more expensive choice of medium, and still not perfect, but it has enough advantages to make it a clear choice now.

Lib-Ray Video Standard: Using Google/On2's VP8 Video Codec
When I started working on a no-DRM, open-standards-based solution for distributing high-definition video on fixed media ("Lib-Ray"), I naturally thought of Theora, because it was developed as a free software project. Several people have suggested, though, that the VP8 codec would be a better fit for my application. This month, I've finally gotten the necessary vpxtools and mkvtoolnix packages installed on my Debian system, and so I'm having a first-look at VP8. The results are very promising, though the tools are somewhat finicky.
Lib-Ray Video Standard: FLAC and Vorbis codecs for Sound
In my previous column, I described the success I've had with using VP8 for compressing the video for the Lib-Ray main feature multimedia file. At the end of that process, though, I still have a silent film. We also need to get the audio, and make a decision about the format. WebM calls for Vorbis sound, which probably makes sense for internet downloads, but this is where we part ways -- for my application, bit-perfect audio with FLAC seems to make more sense, at least for the main audio tracks (Vorbis is still in the picture for things like commentaries).
Lib-Ray Video Standard: Assembling the Matroska MKV container file with mkvtoolnix-gtk
In my previous installments, I described the success I've been having with compressing "Sita Sings the Blues" with the VP8 video codec, and at the end I had a video file. Then I converted the audio to get a FLAC copy of the soundtrack (opting to retain this rather than compress into Vorbis format). Now in this installment, I'll show how I used mkvtoolnix-gtk to build a complete MKV file with VP8 video, FLAC audio, and named chapters. The result is the complete "main feature" multimedia file that will form the core of the Lib-Ray prototype.
Lib-Ray Video Standard: Handling Languages and Localization
I'm used to thinking of region codes as an unmitigated evil, but they do serve one useful purpose: they divide DVD editions up so that any given regional edition has fewer languages to support. It's uncommon to find a DVD with more than just three or four languages in subtitles or audio tracks. Early on in the concept for Lib-Ray, though, I decided to do away with region-coding, and instead allow for broader localization in the design. This means there's just one edition worldwide, which is very helpful, but it does also mean that the subtitle menu in particular can become very cumbersome to navigate. How will we solve this user interface design problem?

Lib-Ray "0.2" Prototype

The theme of the 0.2 design was to try to create a menu system that would conform entirely to HTML5 standards and Javascript DOM so that, at least in principle, a modern web browser could be used as the player. Trying to make this work ultimately required too many compromises, and the Ogg/Theora video didn't quite live up to my hopes for high-quality/high-definition video.

In 2011, I created a prototype for Lib-Ray based on using Ogg/Theora video for the feature video file. I was under the impression at the time that only Theora would be acceptable for free-software/open-standards reasons (and VP8 had only very recently been re-released by Google).

Of course, this design is obsolete now, but it still shows the basic idea behind Lib-Ray, and may be useful to read, at least until I get more up-to-date documentation written.

I documented the process of creating the "Sintel" prototype disk in my column at Free Software Magazine. Here are links to the individual articles:

Five ideas for escaping the Blu-Ray blues

Some of us want to be able to release high-definition video (possibly even 3D) without evil copy protection schemes. I’ve been avoiding Blu-Ray as a consumer since it came out, mostly because Richard Stallman said it has an evil and oppressive DRM scheme. After my first serious investigation, I can confirm his opinion, and frankly, it’s a pretty bleak situation. What can we do about it? Here’s five ideas for how we might release high definition video.

Understanding Surround and Binaural Sound

Film soundtracks are usually made available in either “Stereo” or “5.1 Surround” sound, although other possibilities exist. Quite a few of the source sound recordings I’ve been using are “binaural” recordings, which sound eerily realistic over earphones, but often less impressive when played back on speakers. What does this stuff mean, and how can I use free software tools to make the most of it? This will be an ongoing learning experience, but I want to start with a brief description of these most common technologies, and how they are supported by the file formats we have available to us: Vorbis, FLAC, and WAV.

Assembling Ogg Soundtracks for an Ogg Video with Audacity, VLC, and Command Line Tools

Ogg Vorbis and Ogg FLAC (the Ogg stream version of the Free Lossless Audio Codec) are popular free-licensed and patent-free codecs for handling sound. These are the formats I’ll be using in a complex Ogg Theora video file that I am creating as part of my “Lib-Ray” experiment in creating an alternative format for distributing high definition video. In order to do this, I’ll need to solve several technical challenges using the FLAC command line tools, Audacity, and VLC, which I’ll demonstrate here.

Assembling Video from a PNG Stream for an Ogg Video with png2theora

Ogg Theora is the codec of choice for free-licensed, patent-free video, and so that is the one I’ll be using in my experiment in creating an alternative format for distributing high definition video. The original, full-quality animation for “Sintel” is provided as a series of PNG images representing each frame, and so I’ll need to turn that into a high-quality Theora video stream for my prototype “Lib-Ray” version of “Sintel”. In this column, I’ll show how I do that.

Creating Subtitles from SRT Sources for an Ogg Video with kateenc

One of the more interesting aspects of Ogg Video is that it allows an essentially unlimited number of subtitle tracks to be included. This is especially useful for free-culture videos, since they are generally released globally, and there are often contributed subtitles. In fact, for “Sintel”, I was able to find 44 subtitle files. I will be including them all as Ogg Kate streams in my prototype “Lib-Ray” version of “Sintel”, and in this column I will demonstrate the use of several command line utilities useful for this, especially the kateenc tool for creating the streams.

Assembling and Testing a Complex Ogg Theora Video with Command Line Tools and VideoLAN Client (VLC)

Unless you’ve been hiding in a cave for the last few years, you probably know about the free multimedia codecs with the fishy-sounding names from Ogg Vorbis (for sound) and Ogg Theora (for video). You might be less familiar with other family and friends, including FLAC (lossless audio), Skeleton (metadata stream), and Kate (subtitles). However, together this collection of codecs can be used with the Ogg container format to provide all of the functionality of a DVD video file — multiple soundtracks, full surround sound, high definition, and selectable subtitles. Having created the various streams for a prototype release of “Sintel” in my last few columns, I’m now going to integrate them into a single video file and test it with some players.

Emulating disk menus with HTML5 and Chromium for Lib-Ray

The final (and probably most interesting) step in creating my Lib-Ray prototype (for releasing high-definition video without DRM or other anti-features) is to make a disk menu system to access the video data that I’ve already prepared. This column will actually document my second prototype design, as opposed to the first prototype which I presented at Texas Linux Fest in April 2011. This second is a big improvement and conforms much better to the draft HTML5 standard from the WHAT Working Group, and is much more functional in the existing Chromium browser, although improvements are still needed.

Lib-Ray "0.1" Prototype

The 0.1 design was very short-lived. I created this design in April of 2011, as my first attempt. It's what I presented as a concept at the Texas LinuxFest in Austin. It suggested a completely custom Javascript DOM be created especially for Lib-Ray and hooked into an external video player with some vague and unspecific "glue code".

Although I did create Sintel disks based on this, I did not release them widely nor document them, and I immediately switched to the 0.2 concept as soon as I got back -- partly because of feedback from the conference. So that was obviously very useful!