OpenMovieEditor And Blender: More NLE Delights
We're getting close to the last stops on our tour of non-linear video editors (a.k.a. NLEs) for Linux. This week I've focused my attention on two editors, both of which surprised me in many ways.
Its Web site states that OpenMovieEditor has been "... designed for basic movie making capabilities... [and] to be powerful enough for the amateur movie artist, yet easy to use". In fact I found OpenMovieEditor to be a surprisingly capable NLE, modest in its stated goals yet possessing some features not commonly found in Linux NLEs.
OpenMovieEditor (Figure 1) leverages the capabilities of a variety of open-source projects, including libquicktime, FFmpeg, Inkscape, and the frei0r fx plugins popular with other A/V editors for Linux. However, the program has some of its own special attractions, such as support for the JACK audio server and transport control, a GUI for automation curves, and node-based compositing. This last feature is indeed unusual - most other NLEs employ layer compositing - and it is not amiss to plunder Wikipedia for this definition :
Node-based compositing represents an entire composite as a tree graph, linking media objects and effects in a procedural map, intuitively laying out the progression from source input to final output, and is in fact the way all compositing applications internally handle composites... Layer-based compositing represents each media object in a composite as a separate layer within a timeline, each with its own time bounds, effects, and keyframes.
Figure 2 displays OpenMovieEditor's node-based compositor. As you can see, the method presents its material quite differently than the typical track-based view, but I must admit that I find the track-oriented layout more familiar and preferable.
OpenMovieEditor's JACK support is seamless and works perfectly. By default it wants JACK configured for a sampling rate of 48 kHz, but it's a simple matter to reconfigure and restart JACK with that value. I was impressed with OpenMovieEditor's implementation of JACK's transport control, it's a convincing demonstration of the viability and utility of the JACK connection.
Figure 1 demonstrates the UI layout I've come to expect from desktop NLEs, i.e. panels for holding your audio/video source material, containers for the available effects and transitions, viewers for individual clips and for the mixed project, and track-based display for setting multiple clips into arbitrary sequences, including overlapped clips. From my little experience with NLEs on other platforms it seems that this arrangement of parts is favored by most users. Developers might experiment with other layouts, but the common UI minimizes the length of the learning stages and makes it easy to switch from one editor to another.
AVI, MP4, and MOV files loaded into the timeline without complaint, but OpenMovieEditor was not happy with all the video formats I threw at it. My FLV files were rejected because of unsupported audio format and the lack of sample-accurate seeking and my MPG files produced similar error messages declaring that the audio format was unsupported. Curiously, the MPG error message also reported that the files had "zero audio streams". Those files failed to load, but they didn't crash the program. However, a file in DV format did crash the app when I tried to load it into the timeline. The crash is verifiable, OpenMovieEditor segfaults whenever I try to load that particular file.
At first glance I wasn't too impressed with OpenMovieEditor, but after spending some time with it I've come to like it a lot. I still find its default appearance rather blocky (FLTK can look better), and the alternative "plastic" style and colors are too bright for my notebook's display. However, I also found OpenMovieEditor to be very easy to learn and use, steady as a rock (excepting the DV file load problem), and perfectly capable of fulfilling its stated goal as a basic NLE for desktop video production. I kept discovering nice features such as the zoom for the viewer and the crop/fit/stretch edit functions. OpenMovieEditor renders only to Quicktime DV, admittedly a restriction, but the format is accepted by Kino. Speaking of Kino, OpenMovieEditor can export its edit decision list (EDL) in the SMIL format recognized by Kino. And speaking of exports, OpenMovieEditor can also save subtitles in the SubRip (SRT) format. OpenMovieEditor's JACK support is ultracool. I tested it only with Rui Nuno Capela's QJackCtl, but OpenMovieEditor responded to the external control without hesitation and without xruns. Finally, I must also mention that the effects controls work in realtime, yet another neat feature in OpenMovieEditor.
The results reported in these tests come from OpenMovieEditor 0.0.20080102, the version available in the official Karmic repos. I also tested a home-built version 0.0.20090105, the latest public release. Building the support libraries for OpenMovieEditor required a season in dependency hell - Karmic doesn't supply a LAME-enabled libquicktime - but at last I was able to compile a more up-to-date OpenMovieEditor. Improvements include more render targets, more effects, a new UI style, and other features I've yet to discover, so I shall continue my explorations. Meanwhile, kudos to Richard Spindler for his work on OpenMovieEditor, a very fine Linux NLE for desktop video production. I look forward to its evolution and next official release.
Blender should need no introduction to the readers of the Linux Journal, but in case you're late for the party here's what Wikipedia has to say about the program :
Blender is a 3D graphics application released as free software under the GNU General Public License. It can be used for modeling, UV unwrapping, texturing, rigging, water simulations, skinning, animating, rendering, particle, and other simulations, non-linear editing, compositing, and creating interactive 3D applications, including games.
Blender is truly deep professionally-capable software. Alas, an in-depth survey of Blender's features and capabilities would require a book, not a review article, but fortunately there are such books. Check out the Blender Web home for a summary of documentation and tutorial materials.
Blender As A Non-linear Editor
I followed the instructions on a Web page titled How to edit video in Blender, written by an author who goes by the name Klaatu. Thanks to his tutorial I discovered that Blender's Video Sequence Editor (Figure 3) functions quite nicely as an NLE. I won't go into the details here - you should check out the tutorial yourself - but I will say that Blender compares well against any of the dedicated NLEs for Linux. Its movie-making capabilities largely rest upon the shoulders of FFmpeg, a factor common to other NLEs I've reviewed. Those capabilities include standard cut/copy/paste operations, audio/video effects and transitions, an excellent resizable timeline, and rolling edits when relocating clips in their tracks.
Klaatu provides a second page of instructions for exporting your work to common video formats. Those instructions assume that your version of Blender was built with FFmpeg in order to accommodate those output formats. If FFmpeg is not listed in the Format tab in the Buttons Window you'll have to build Blender yourself - with FFmpeg support, assuming you have a viable installation of FFmpeg - or you can ask your distribution maintainers to provide an FFmpeg-enabled Blender. You can use Blender as a video editor without FFmpeg but you will be unable to export directly into a video format such as MPEG4, Xvid, or Theora.
I was surprised at Blender's workflow. Its interface is often singled out as an example of a complicated UI, but with Klaatu's help I found a fast and efficient editor. Yes, some things are a little annoying, such as the confirmation step when opening a file, but the annoyances aren't debilitating to the workflow. Once the logic of its interface is understood Blender becomes an incredibly powerful and useful program, definitely worth the few hours you might spend to acquaint yourself with its basic operations. Remember, you're not likely to comprehend completely any program as rich as Blender, not in a short time. Fortunately Blender is swimming in documentation on video and in print formats. Trust me, if there's something you don't understand about Blender just check with Google. Blender is widely employed and much-beloved by its users, they'll happily provide all the answers you need.
Blender + Ardour
Linux hackers never cease to amaze. Juan Pablo Bouza has prepared a Web page titled Blender + Ardour, An Amazing Combination that I recommend to all my readers. Thanks to a script by a Blender guru named IL'dar AKHmetgaleev (a.k.a. AkhIL) Juan has prepared a series of simple steps to deploy the PyJack module as an interface between Blender and the Ardour DAW. This arrangement puts Blender under the transport control of Ardour/Jack, and I can definitely say that it works. I was indeed amazed when I started Ardour and watched Blender's timeline cursor travel in sync with Ardour (Figure 4). The transport control is mutual, i.e. either program acts as the master controller, or you can use the controls on QJackCtl to run the whole show.
The implementation is apparently complete or close to it. You can freely reposition the cursor in one program and watch the other app's cursor reposition itself at the same time. Rewinds and fast-forwards are supported, though those controls are available only within Ardour and QJackCtl. Blender supplies a start/stop button for its JACK transport control, and that's all, so you are well-advised to run the combo from Ardour and/or QJackCtl.
I don't what wizardry went into creating this neat hack, but from the user's point of view it strikes me as decidedly non-trivial. Leveraging the capabilities of Blender with those of Ardour gives aspiring A/V people a very powerful editing suite for the low cost of US$0.00. Better yet, the setup for this powerhouse is easily accomplished. Juan's page describes it completely, you need only download the PyJack sources, apply a patch according to Juan's instructions, then build and install the module. Start JACK and Ardour, then open Blender and run AkhIL's script from a Text Window panel. Set Ardour's clock source from Internal to JACK, and at this point you can synchronize the control of Blender's timeline with Ardour's. Figure 4 shows off the results.
Alas, there isn't space enough here to describe all the goodies offered by Blender. Despite its initially bewildering interface Blender is in fact easy to learn and use, and the links provided here assume no especially deep knowledge of the program. I suspect that Blender can be coaxed into doing almost everything done by other Linux NLEs, you'll just have to dig a bit deeper to make your discoveries. Don't forget that Blender was not designed to be a video editor, it's a 3D animator/compositor with advanced capabilities. If video editing is your sole target activity you might find one of the other Linux NLEs better suited to your purpose, but if you're working with animation then Blender is just what you need for a start-to-finish solution.
In my next article I'll return to the world of Linux audio software with news of some exciting projects and development. After that article I'll complete this guided tour of Linux NLEs for video. A lot is happening for multimedia production on Linux machines, so be sure to check back in a few weeks for the latest updates. Meanwhile I hope everyone enjoys a safe and wonderful holiday season, recorded and archived for posterity thanks to your preferred Linux-supported video recording device and edited with your Linux NLE of choice.