Robin takes a look at six Linux video nonlinear editing (NLE) sofware packages: Broadcast 2000, Crow, Kino, LVE, MainActor and Trinity.
In alphabetical order, we evaluate Broadcast 2000, Crow, Kino, LVE, MainActor and Trinity. Except for MainActor, all are open-source software. Especially intriguing are Kino, a highly regarded DV editor that just released a new version, and LVE, a little-known German-made MPEG editor.
Broadcast 2000 has been removed by the developer from its main web site, making some think that it is no longer exists, but video systems integrator Linux Media Arts (LMA) still offers it. LMA President Mike Collins says, “We want to continue development of Broadcast 2000, both as a free, open-source project and as bundled commercial software with provided support.” Collins says he is trying to arrange putting Broadcast 2000 on SourceForge.net, but until then, anyone may contact him directly about downloading it. Broadcast 2000 is available as an RPM or a source tarball.
Broadcast 2000 was featured in the January 2001 issue of Linux Journal [see Adam Williams' article “Moviemaking on a Linux Box? No Way!”]. Our installation is a little different because our distribution isn't Red Hat, but Debian. Let's convert the Red Hat-compatible RPM into a Debian deb (Listing 1).
Listing 1. Converting the Red Hat-Compatible RPM into a Debian deb
Alien works well at converting RPM archives into deb format, but it doesn't find shared libraries that are in nonstandard locations (note the warning from Alien that it can't find libbcbase.so). You will need to remember that after installing the deb with dpkg. Once Broadcast 2000 is installed, search for the lost DLL and add its directory path to your ld.so.conf. Then run ldconfig to update the runtime linker settings. Otherwise, the program won't run because it won't be able to find its shared libraries.
Broadcast 2000 record formats include WAV, PCM, QuickTime and JPEG image sequence. The supported QuickTime (MOV) types are JPEG photo, motion JPEG A, PNG, PNG with alpha, uncompressed RGB, uncompressed RGBA, YUV 4:2:0 planar and YUV 4:2:2 packed. That's a lot of formats, but they aren't as compatible with other tools and operating systems as you might expect.
Crow is a project by Eric Fry in Australia. Although only an alpha version, we still were curious to try Crow. It is only available for download via the CVS version control system.
Our Linux box is on a Windows network behind a Windows firewall with Cox cable modem. We would have to configure our firewall to pass CVS. Using Telnet we checked that we could reach SourceForge.net CVS port 2401 manually. We then created a 2401 TCP wrapper in WinGate on our SOHO firewall machine (named gap). Our TCP wrapper was set to point to cvs.Crow.sourceforge.net.
Attempting a CVS login from my Linux box (tbird) failed—something about .cvspass not being configured correctly on that machine. However, we were able to do a CVS checkout. That was all we actually needed.
cvs -z3 -d:pserver:anonymous@gap:/cvsroot/crow co crow
If we hadn't been drilling through our firewall, the CVS command would have specified cvs.Crow.sourceforge.net rather than gap.
Crow objected that it had the wrong libtool ltconfig version, but we fixed that with libtoolize:
libtoolize --force aclocal ./configure make
No dice—the Crow make failed because an include file couldn't find gtk/gtk.h. The Makefiles didn't have the paths configured in a generic way to point to the GTK++ GUI headers, and our GTK++ files were installed in a different directory. This called for a little autoconf surgery. We added GNOME_INIT to configure.in so it would emit the GTK_CFLAGS and GTK_LIBS variables. Then we substituted those variables, e.g., $(GTK_CFLAGS), in 14 different Makefile.am files used by Crow. After regenerating the configure file, Crow built. Bingo, we got it!
aclocal autoconf ./configure make ulimit -c unlimited ./app/crowWe didn't do a make install of Crow because the INSTALL file had warned us not to. We set ulimit to be able to generate core files if we had a crash. And, when we ran Crow it immediately crashed with a segmentation fault. Let's debug that using the gdb debugger:
gdb app/.libs/lt-crow core > btBecause ./app/crow is a script, we had to figure out the actual name of the executable to load in gdb. Running a backtrace (bt) to examine the function stack didn't do us any good at this point because there was no debug information in our build. We first would have to rebuild with debug enabled:
make clean make -e ?CC=gcc -g?Now we could load gdb again and see the relevant call stack and source code. That immediately revealed that the crash was due to a null pointer variable dir in app/plug_in.c on line 275. We simply inserted a line there to return from the function before using the variable if it was 0:
if(!dir) return 0;Crow is very much an alpha and too incomplete for use. Fry says that his files on SourceForge.net are an old version and that he is planning to rewrite it. He wants to talk with others interested in designing an editing application for Linux from the ground up. “I'd like to have a fully featured editor capable of doing real-world editing tasks like 3:2 pull-down, EDL output database clip management and HD playback”, says Fry.
Kino is a simple cuts-only DV editor. Kino just released version 0.50, a major new release. To install Kino, you first must install many drivers. That, and installing some of the many other DV-related programs available, makes for a rather involved process.
The instructions recommend using the latest kernel to get the best IEEE 1394 FireWire DV support. Using make xconfig, we were puzzled at first that the IEEE 1394 options were grayed out and couldn't be selected. In configuring our 2.4.14 kernel, we first had to select the code maturity menu option to enable the 1394 menu.
The following drivers were next: libavc1394-0.3.1.tar.gz, libdc1394-0.8.3.tar.gz, libraw1394_0.9.0.tar.gz, libdv-devel-0.9-1.i386.rpm and libdv-0.9-1.i386.rpm.
For tarballs, let's follow the standard procedure:
tar xvfz libdc1394-0.8.3.tar.gz cd libdc1394-0.8.3 ./configure make su make install
Those that came as RPMs we installed using Alien. If you build libdv from the tarball you will need to install pkg-config first to run configure successfully.
The libraries include some simple tools. Included with libraw1394 is testlibraw. Let's start with that to see if it detects our FireWire cards. We have two FireWire PCI cards in our Athlon PC, a PYRO card and a no-name FireWire card included with our FireWire scanner. Both are OHCI-compliant, and detect properly. However, we had to chmod the device to gain permissions access for ordinary users.
chmod 666 /dev/raw1394 ./src/testlibraw successfully got handle current generation number: 3 2 card(s) found nodes on bus: 1, card name: ohci1394 nodes on bus: 1, card name: ohci1394 using first card found: 1 nodes on bus, local ID is 0, IRM is 63 , , ,
The libavc1394 romtest program enumerates the ROM information of any attached FireWire device. It correctly detects our Sony TRV8 DV camcorder.
Included with libavc1394 is dvcont, a remote control for DV camcorders. When using dvcont the first time, specify dvcont help, so you know what the commands are. If dvcont can't find its drivers, it exits immediately and won't even display help. You may need to modprobe video1394 and raw1394. With no command specified, dvcont does nothing. With your camcorder in play mode, executing dvcont stop causes the camcorder to stop. There are similar commands for the other camcorder functions.
Included with libdv are playdv and encodedv, but both died with segmentation faults. These are supposed to play or encode a .dv file.
Here are some of the many available DV programs that may be useful: dvgrab-1.01.tar.gz, gscanbus-0.6.tgz and gstreamer-0.2.1.tar.gz.
We couldn't build coriander or gscanbus. gstreamer built, although it took a long time and then died with a segmentation fault. The tool we really wanted from this set was dvgrab, so we could do a console test of DV capture. Since it didn't prevent us from using Kino, we didn't stop to investigate why we had problems with some of the DV tools.
The dvgrab utility will copy a video playing on your camcorder to your PC. It has no device control, which means if the camcorder isn't in play mode, dvgrab simply waits. If no FireWire DV stream is detected it won't do anything.
dvgrab --frames 30 test ls -l test* -rw-r--r-- 1 rower rower 2471424 Nov 17 17:27 test001.avi
We grabbed a second of video as a test. It was saved by dvgrab as a DV stream wrapped in the AVI transport. Arne Schirmacher created dvgrab and Kino.
We initially built the 0.46 version of Kino (kino-0.46.tar.gz), but 0.5 was released during our evaluation (kino-0.5.tar.gz). At first we had a problem building Kino because configure couldn't find gnome-config. That seemed odd since we had GNOME installed (on Debian Sid). Doing a search for it in dpkg should report gnome-config in libgnome-dev (as shown below), but we came up empty.
dpkg -S gnome-config libgnome-dev: /usr/include/libgnome/gnome-config.h libgnome-dev: /usr/bin/gnome-config libgnome-dev: /usr/share/man/man1/gnome-config.1.gz
Kino developer Dan Dennedy suggested that we install Ximian GNOME because that is his configuration. So we added a link to our sources.list and installed it:
vi /etc/apt/sources.list deb http://red-carpet.ximian.com/debian stable main . . . apt-get update apt-get install task-ximian-gnomeInstalling Ximian created massive conflicts with already-installed GNOME components. We had to uninstall many packages that were reported broken by apt-get. It was actually a lot more effort, but the example shown here represents the gist of the process. Surprisingly, it was the GNOME GTK docs that seemed to have our install the most wedged. Eventually we got Ximian installed as well as the Ximian GNOME development libraries. Kino built without a problem.
dpkg -r libgnome-dev apt-get build-dep libgtk1.2-dev dpkg -r libgtk1.2-doc apt-get -f install apt-get install libxml2Kino is based on a metaphor of the vi command set. Commands for lines, words and characters become movies, clips and frames. Use d0 to set an in-point and d$ to set an out-point.
Dennedy says, “The new version of Kino is a major rewrite, with new user interface, no multiple-floating windows and a storyboard view more like iMovie. You'll notice greater consistency in interface.” Dennedy says the Kino team has a new developer, Charles Yates, who was the major force on version 0.5.
Dennedy notes that the Kino EDL is in XML SMIL format, and that sound support is based on the OSS interface. Because most sound cards don't support multiple opens, esound is only supported with the SBLive! card. The Contour ShuttlePro USB controller ($125) provides a convenient device to control Kino, bypassing the vi-based interface. Kino supports XVideo for better preview performance, but we had to turn that feature off because the preview window became stuck in place permanently on our desktop. That seems to be due to our having installed the wrong version of the ati.2 driver, and not a problem with XVideo generally.
Kino can handle DV1 or DV2 AVI files, but not raw DV files (.dv). The format you choose affects compatibility with other tools. Dennedy explains, “Windows Media Player (WMP) and Linux Avifile will play DV2 AVI format, provided the Microsoft DLL is installed. That's called qdve.dll. MPlayer also can play those but requires adding a line to its configuration file.” Dennedy notes that WMP also can handle DV1 AVI. He says MainActor can handle DV but has no DV camcorder I/O.
Tools such as dv2jpeg can help you move between formats. Dennedy adds, “mjpegtools can read DV AVI to create a VCD; mjpegtools has support for MPEG-1 VCD and MPEG-2 SVCD. Kino will soon export MPEG-1 and MPEG-4 formats based on FFmpeg, but FFmpeg is currently lacking MPEG-2.” And, mjpegtools can split off the DV audio. The tool transcode will convert DV AVI to OpenDivX.
Dennedy is excited that Kino now supports DV export back to the camcorder. He says Kino is the only DV application to offer that besides the libdv console program. Kino doesn't offer a logging mode, and Dennedy doesn't expect it will soon. He says that feature isn't as interesting to the team as adding effects and that a new dv1394 driver is in development that will provide scrub preview in the TV monitor. He also says Kino MPEG export is coming but has no plans to integrate with Film GIMP.
Linux Video Editor (LVE) developer Gerhard Monzel says, “The intended purpose was cutting MPEGs and to encode to (S)VCDs.” Monzel works at SAP as systems administrator in St. Ingbert, Germany. The LVE documentation is all in German. “LVE is based on some freeware libraries: libmpeg3 to seek and decode MPEG and libsdl as base of my GUI”, says Monzel. “The rest is self-made.” He says many MPEG formats are supported (MPEG-1 and MPEG-2) including VOB and IFO, but not DVB. His GUI design was influenced by Pinnacle Studio MP10.
LVE is cuts-only—no effects and no titles. Note that whether the source material is PAL or NTSC, the output is always PAL. NTSC sources must be processed with sox to correct the framerate changing the audio pitch. LVE has no install procedure. The tarball must be extracted in the root directory:
cd / tar xvfz /install/public/nle/lve/ lve_bin-31-10-01.tar.gz ls /usr/local/lve/bin bbainfo bbinfo bbvinfo ffmpeg_lve gensmart lmp mplex toolame bbdmux bbmplex encode genmpg gensvcd lve qdir chmod 666 /usr/local/lve/lib/SystemFont.bmp ./lve
MainActor is the only closed-source application we looked at. We installed it from RPM using Alien, following much the same procedure as with Broadcast 2000.
MainActor can title (2-D and 3-D text) and edit movies. It offers video transitions and audio effects. The evaluation version writes “MainActor” on your video until you purchase a registered copy. MainActor includes the following programs: maseq (NLE), mave (animation converter), macap (V4L MJPEG capture) and lmatool (console video file converter). The documentation is in /usr/share/doc/Packages/MainActor.
Trinity editor and maintainer Chris Hardy says it has rudimentary MPEG and audio support. Trinity can understand sequences of image frame files, too. “The source code hasn't been touched in two years”, says Hardy. “I haven't heard from the developer in a while and the project has been in limbo.” The GUI is one thing Hardy likes about Trinity.
There were several minor compilation errors that we fixed while building Trinity 0.5 and one serious one. We sent the corrections to Hardy. Because of a conflict with a commercial product, Trinity must be renamed, and Hardy would like a developer interested in working on an NLE to join the project so it can go forward.
Computers present a great advantage in editing movies because they can easily edit out of sequence or remove or add a scene—that's why it's called nonlinear editing. Nonlinear editors are used to edit video sequences to create television shows and motion pictures.
In examining Broadcast 2000, Crow, Kino, LVE, MainActor and Trinity, we've looked at some of the video tools available in Linux, but hardly all of them. FFmpeg, GAnSO, Gnonlin, Jahshaka, Linux Video Studio, matterial, mpgtx, mpegcut and SAMPEG-2 present more choices.
Two commercial (expensive) tools that we will be evaluating in the future are Nothing Real Shake and Silicon Grail RAYZ. These are used to add special effects to many Hollywood motion pictures. There is just one major open-source tool that is used in major motion pictures and that is Film GIMP, used in Harry Potter, Cats & Dogs, Lord of the Rings and more. We'll take a look at Film GIMP next time.