The CinelerraCV Project
Continuing my tour of Linux-based video editors this week I've profiled Cinelerra. Specifically I've reviewed the community-supported version produced by the CinelerraCV project.
The Feature Set
The program's feature set is lengthy and impressive. The following list is a selection from its many attractions :
- Audio/video compositing + editing.
- Still image panning (the "Ken Burns effect").
- Unlimited tracks.
- 16 bit YUV compositing.
- Floating point compositing.
- Free form editing.
- Batch capturing.
- Batch rendering.
- SMP utilization.
- Realtime effects.
- Quicktime, AVI, MPEG, and image sequence I/O.
- OpenEXR images.
- Support for OGG/Vorbis audio.
- Headroom monitoring.
- Supports LADSPA plugins.
- Bezier masks.
- Track routing.
- Track nudge for audio and video.
- Reverse audio and video in realtime.
- Bidirectional, variable speed scrubbing.
- Variety of overlay modes.
- Nested sequences.
And for users with resources to burn, Cinelerra supports render farms and multiple monitors. Take a deep breath, then see the Cinelerra Features Page for the complete list.
Cinelerra includes eight transition types and more than sixty video effects, along with twenty audio effects. The video transitions include the expected dissolve, wipes, and slides, while the single audio transition is an audio cross-fader. The video effects include television and film effects, color manipulations, titling, and many cool transformers. Don't worry if you have little or no clue as to the meaning of some of the effects, just apply them in short test clips to see what happens. With so many video transformations to choose from you'll keep busy, but you will have fun while you learn about Selective Temporal Averaging and the Inverse Telecine effect.
The developers of CinelerraCV consider their project to be a branch of the original Cinelerra from Heroine Virtual Ltd.. This article is not the place to explore the reasons for the branch project, but interested readers may consult the page titled Why two versions of Cinelerra? for the whole story. It is sufficient to note here that Adam Williams, Cinelerra's original developer, is not opposed to the development of CinelerraCV. He continues to maintain his work at Heroine Virtual and occasionally contributes to the community version.
Recommended Hardware & Software
The following recommendations are the minimal hardware requirements necessary for running Cinelerra :
- CPU: 500 MHz single-core (dual-core and multi-core systems are preferred).
- Memory: 1G.
- Hard disk: 200 GB, seek time < 10 ms.
- Video: nVidia necessary for OpenGL support.
- Audio: Any device supported by ALSA or OSS/Free.
These recommendations are base hardware requirements. They allow some flexibility with Cinelerra, but mixing multiple audio/video streams in realtime requires considerably more power. The test platform used for this review included an AMD 3800+ CPU (2.4 GHz), a fast 350 GB hard-disk, 4G memory, an nVidia 7600GS video card, and an M-Audio Delta 66 digital audio system. This system is powerful enough for my audio multitrack work with Ardour, but I consider it near the low end of hardware usable for serious work with Cinelerra. If you intend to work with long videos you'll want a much faster CPU, a lot more memory, a far more capacious hard-disk, and the latest & greatest nVidia-based video adapter.
Supported I/O hardware includes webcams and Firewire-capable camcorders. If your video board has the appropriate ports you can also use Cinelerra with multiple monitors and employ your card's TV Out.
On the software side, Cinelerra wants Linux with a recent kernel, not necessarily realtime-enabled. If you intend to work with video capture make sure that your kernel has been compiled with support for IEEE1394, Video4Linux (V4L), and any other video-related devices and functions. The kernel's default ALSA audio system is fine for production purposes, though the program also supports OSS/Linux and ESD. For the purposes of this review I ran Cinelerra under Ubuntu Jaunty installed as a 32-bit system with a custom-built kernel (2.6.29) optimized for realtime performance. I've also installed the video-related packages from the UbuntuStudio project, but Cinelerra was not among them so I decided to build and install it myself.
Cinelerra has been packaged for the official repositories of various Linux distributions, but alas, Ubuntu Jaunty is not one of them. Instructions for accessing 3rd-party repositories can be found on the Getting Cinelerra page, along with directions for retrieving the Cinelerra source code.
As I said, I decided to build Cinelerra from its sources. The following notes describe the process, so skip this section if you don't plan to compile Cinelerra yourself. The process isn't painful, but Cinelerra requires many dependencies that must be met to get the best results from the program. Again, see the Cinelerra Web site for complete details and instructions.
I downloaded the CinelerraCV source code from its git repository. By default the download created a directory named my_cinelerra. I install all source packages in $HOME/src, so I entered ~/src/my_cinelerra and ran the autogen.sh script to set up the autoconf tools. That script finished with a few warnings but without significant problems. Next I ran ./configure --help to look at the compile-time options. I decided a simple ./configure --prefix=/usr would be sufficient for my purposes. That stage completed itself without incident, so I ran make and watched for errors.
I didn't have long to wait. The make procedure soon halted with two error messages. The first informed me that the nasm assembly language compiler wasn't installed, a problem easily remedied by installing the program with Jaunty's Synaptic package manager. The second error was more challenging. The compiler reported the following issue :
ar: .libs/reconmmx.o: No such file or directory
Thanks to Google I discovered this solution :
cd $HOME/src/my_cinelerra/libmpeg3/video nasm -f elf reconmmx.s -o reconmmx.o cp reconmmx.o .libs/reconmmx.o
After this fix make was a smooth-running gun until I hit this snag :
Making all in guicast ... bcwindowbase.h:94:38: error: X11/extensions/xf86vmode.h: No such file or directory
Again Google was my boon companion. I installed packages for libxxf86*-dev and x11proto-xf86*-dev, and the make process ran smoothly until its successful conclusion. I ran sudo make install, and voilà, I had a shiny new copy of CinelerraCV 4.1. By the way, this program is big, be prepared for a lengthy build.
On my trial run I received this error:
dlphilp@The3800:~$ cinelerra cinelerra: error while loading shared libraries: libquicktimehv-1.6.0.so.1: cannot open shared object file: No such file or directory
Apparently Cinelerra's installer doesn't update the system library cache. The problem was quickly fixed with sudo ldconfig. By the way, the program installs to the /usr/local hierarchy by default. If Cinelerra doesn't start at all add the /usr/local hierarchy to your system PATH statement :
Put that line in your $HOME/.bashrc file for a permanent fix.
Unless your system has been customized appropriately for some other purpose Cinelerra is likely to open with a warning about shmmax, a value for the maximum amount of shared memory needed by Cinelerra. The Web site recommends this fix for a single session :
sudo echo "0x7fffffff" >/proc/sys/kernel/shmmax
Unfortunately it didn't work. I got this response even when running as root :
bash: /proc/sys/kernel/shmmax: Permission denied
(Can someone tell me why that happened ?)
The suggested permanent fix resolved the problem. I added the following line to /etc/sysctl.conf :
kernel.shmmax = 2147483647
I rebooted, and Cinelerra started with no warnings or errors.
Before doing anything else you should set up the program to accommodate your system resources. Figures 2 and 3 present the tabs from the Cinelerra Preferences dialog found in the Settings menu. You can see from those screenshots that Cinelerra's configuration details are many and varied, but have no fear, the default settings usually fit correctly for first-time use. You can experiment with settings as much as you like, but you should be aware that some parameter values may act to crash the program (see my notes below on recording in Cinelerra).
An Example Project
My example project for this review followed a pattern similar to my previous reviews of NLEs for Linux, i.e. a layout of four video clips with effects within the clips and transitions between them. As I mentioned earlier I was surprised and a little dismayed to find that Cinelerra won't play the video portions of movies I made with the AVSynthesis program. Those movies are in AVI format, they load and play without troubles in other editors and players, and I have no idea (yet) why Cinelerra doesn't like them. The program likes my MPEG files, so I used four videos in that format. Those videos all include a stereo soundtrack, but for the purposes of this example I removed the audio tracks from the videos. I then added a separate soundtrack for audio in the final rendering (see Figure 1).
It's easy to add an effect or transition, but it took me a little time to get used to Cinelerra's methods. Effects and transitions are dragged from the Resources window and dropped into a clip in a track. Once the effect has been added you can right-click on the effect icon to open its parameter editor, assuming that the effect has any editable parameters (Figure 4). Transitions are added in the same way, but alas, you can't simply grab the boundaries of a transition and resize its extent. You need to right-click the transition icon and adjust its length with the scroll box. It's certainly not a difficult method, though I'd prefer direct adjustment of the transition marker a la Kdenlive.
Cinelerra provides audio/video gain automation. I like this feature a lot, though I'd love to be able to assign its values to parameters for effects and other factors. This automation simplifies video and audio cross-fades and allows for finer control of a/v levels within a track. To my knowledge no other Linux NLE offers this feature, and it's one I'd like to see in all of them.
By the way, Cinelerra will render your effects and transitions during playback in realtime, but your hardware must be up to the task. A machine slower than 2 GHz is likely to show some strain during realtime rendering.
Off-line rendering was a little problematic for me. Cinelerra offers a variety of output targets, so first I tried rendering to the Microsoft AVI format. Cinelerra obliged, but the program crashed when the render completed, and the resulting AVI had audio but no video. Due to the problems I had when loading AVIs I wasn't surprised by the rendered piece. Next I tried the MPEG Video format but learned that it won't render the audio track. Finally I selected the OGG Theora/Vorbis format and produced my first Cinelerra-based audio/video masterwork (without crashing the program). Okay, it wasn't that impressive but I liked it and it was fun to make it with Cinelerra.
Cinelerra projects an ETA for the render process and reports the elapsed time taken for the rendering. My example project was approximately 2'50" long and took slightly more than 13 minutes to render to the Theora video. Your mileage will certainly vary according to input format, file length, number of effects and transitions, and so forth.
So far I've been unable to record from my webcam or my camcorder. Cinelerra provides a configuration panel for setting up external devices, but I haven't yet discovered the magic formula for completing the connection. The program complains about various V4L insufficiencies and segfaulted until I redefined the recording parameters. The segfaults stopped but I still can't record from the webcam. My camcorder appears to function as it's supposed to, I see the record monitor window's clock keep pace with the camera, but no video is monitored or recorded. Given the variety of possible settings I'll happily claim user ignorance and will continue to research how to record in Cinelerra from external devices. Any advice from other Cinelerra users ?
Alas, with my resources Cinelerra's recording capabilities leave much to be desired. As noted above I was unable to use my webcam or my camcorder, yet those devices function perfectly in programs such as Kino, Cheese, Kdenlive, and LiVES. Given its professionalism in most other respects this flaw is rather glaring (unless, of course, the flaw originates in the interface between the chair and the keyboard). You can use an external utility such as dvgrab to get your recordings out of your camcorder and on to your hard-disk, but such a utility ought to be available from within Cinelerra.
Cinelerra is awash in extensive and thorough documentation. Comm channels include mail lists and IRC for users and developers, and the Cinelerra Documentation page points to docs (in HTML, PDF, and TXT formats), print and video tutorials, example projects, HOWTOs, other relevant material. More helpful Cinelerra-related material can be found via searches on Google, YouTube, Vimeo, and other popular Web-based video channels.
Impressions & Some Wishes
If you search Google for opinions regarding the program you'll find complaints about its UI and its stability. Personally I had no trouble getting around Cinelerra's interface, but stability issues kept popping up. Alas, the crashes were unpredictable and not easy to verify. Cinelerra crashed when I clicked on the on/off switch in an effect's title bar, but after restarting the program the same action simply toggled the switch. I added an effect at the end of a clip, Cinelerra crashed, I restarted it, the same action worked without trouble. Fortunately you can restart Cinelerra and select Load Backup from the Files menu to restore your previous session, but the experience can be frustrating. Another frustration: Sometimes some transitions just don't work, and I have no idea why.
Despite the crashes I enjoyed using Cinelerra. After a little study I was able to use the program with the same ease as Kdenlive or OpenShot. It takes a little effort to understand its raison d'etre, but Cinelerra's UI is comprehensible, tool-tips abound, the timeline and its effects and transitions were easy to comprehend and use, et cetera and so on.
Greater stability is at the top of my wish-list for Cinelerra. I'd also like to see more possibilities with transitions, I'd like to add my own collection of LADSPA audio effects, and it would be helpful if the Recorder worked with my hardware. And before I forget, it would be very cool to be able to assign MIDI controllers to
Cinelerra's fx parameters and other adjustable parts of the program.
I know I'm starting to sound like a parrot, but a program of Cinelerra's aspirations really ought to support JACK. Best would be full support of JACK's audio services and transport control system, but I'll settle for the audio services. Alas, the NLEs I've profiled all appear to stand alone with no possibility for connection to external processors that could greatly augment the host's creative potential. Cinelerra is no exception, regardless of its own respectable collection of audio and video signal processors. It's easy to imagine the possibilities of running JACK-Rack through an aux send/return in Cinelerra, or synchronizing Cinelerra with Ardour for an expanded audio editing suite. `
Overall I felt that I went through three stages of attitude towards Cinelerra. In the first stage I withheld criticism because I was learning my way around the program. In the next stage I was excited by Cinelerra's features and was willing to overlook its instabilities. By the final stage I found that I was too frustrated with the program to want to use it on a daily basis. I still like and enjoy Cinelerra, and I intend to follow and test the efforts of the CinelerraCV project. However, it's both too much and not enough program for me. For example, while I don't need features such as render farms I do need support for my video capture hardware. If your projects are modest and likely to remain so, Cinelerra may be more than you need. On the other hand, it's free, and it offers an opportunity to freely explore a unique video editor.
Fade To Black
I hope you've enjoyed this tiny tour of Cinelerra. Of course there's much more to explore in the program, and I hope you're inspired to give it a go in your own studio. By the way, I'm interested to hear from other Cinelerrists, so please feel free to describe your thoughts and feelings about it. The Comments section is open and waiting for your input.
Coming up: More reviews and profiles of Linux NLEs, more news from the Linux audio world, and you'll just have to tune in in another two weeks to find what else I might find to write about here. Until then, stay tuned, watch your timing, and never make your move too soon.
Similis sum folio de quo ludunt venti.
- My Childhood in a Cigar Box
- Papa's Got a Brand New NAS
- Applied Expert Systems, Inc.'s CleverView for TCP/IP on Linux
- Returning Values from Bash Functions
- Panther MPC, Inc.'s Panther Alpha
- Rogue Wave Software's TotalView for HPC and CodeDynamics
- Tech Tip: Really Simple HTTP Server with Python
- Simplenote, Simply Awesome!
- Debugging Democracy
- NethServer: Linux without All That Linux Stuff