Last week, I started to share information on FOSS multimedia tools, covering some integrated multimedia distributions and some audio tools. This week, in part two, I will cover video editing, scanning, converting from one format to another, and publishing your creative arts.
First, a bit of theory on why FOSS often creates better programs for artists. It is valuable for artists not only to use the programs but to also, with a little programming knowledge, be able to make the changes to the programs and at least actively help to guide the design. Often I tell people one of the reasons why people write Free Software is because the programmer wants to “scratch an itch," to solve a problem that they have. Having a programmer who is also an artist means the artist can design into the program the features and patterns of operation that is best for what they are doing.
I have made a series of videos using Kino. I just download the video from my video camera, have Kino automatically convert it into a usable format and then edit the video, export and import stills to use as title, and credit slides (along with using Inkscape to create the titles and credits). I could probably use other tools to do a more sophisticated video, but for me Kino is fast and easy to use.
Cinelerra is a full-featured video editor developed by Adam Williams at Heroine Virtual Ltd, and the code (known as the “HV version”) is available for download from that site. Cinelerra allows for capture, compositing and editing of video and audio. Unlike a lot of other FOSS projects, there is no real collaboration in the development from the community, so the community around Cinelerra fixes bugs, adds extensions and does ports to various Linux distributions. Sometimes Adam Williams takes these enhancements and works them back into his source code tree. You can read more about this process at the Cinelerra community site.
Cinelerra is a good example of how modern day hardware can often do the editing working real time without having to render one frame at a time. However, if your desktop hardware is not the fastest, or you are doing something that is really CPU intensive, Cinelerra can use a render-farm of computers “in the background” to render the image in real time, or at least in an extremely short time.
In the FOSS arena, we often encapsulate functionality such as converters, codecs and other common tools in libraries, plug-ins or command line programs that can be used as “filters” to a datastream. Often a lot of the “magic” behind a graphical user interface is created by a less glitzy command-line program.
Converting Graphic Files
Graphics come in two major formats: bit-mapped and vector. Keeping things at their simplest, bitmap graphics are typically things like digital photos, scans from scanners and web-camera snapshots. When you try to either shrink or zoom a bit-mapped image too much, they “get ugly.” Sometimes the images are “pixelated” when they get too large and sometimes the colors run together when they get too small. Vector graphics are created by using...well...vectors, and they can usually be made smaller or larger without too much (if any) visible loss of the design.
ImageMagick is a set of command-line utilities to create, edit and convert bitmap images between various formats. But wait! ImageMagick not only “dices and slices,” but it can apply special effects, mirror, rotate, and otherwise transform the image. ImageMagick also has a whole series of different language calling interfaces, so you can call the “magic” from your own program.
UniConvertor is a multi-platform universal vector graphics translator. The project uses the sK1 engine to convert one format to another. It has an import filters for: CDR, CDRX, CDT, CMX, AI, CGM, WMF, XFIG, SVG, SK, SK1, AFF and export filters: AI, SVG, SK, SK1, CGM, WMF. In addition, sK1 is an illustration program similar to Adobe Illustrator or Correl Draw using scalable vectors to store its data.
Converting Audio Files
gstreamer is a set of plug-ins that allow programs to interact with multimedia formats. By using gstreamer plugins an application can transparently pick up new codecs or improvements to old codecs transparently.
ffmpeg is a command line file converter that converts both audio and video formats. It can also transform video by converting from any sample rate to any other, resize the video and grab data from a live audio/video source. WinFF is a GUI for ffmpeg. Both are available on multiple platforms.
transcode is another suite of command line audio and video converters. transcode also has modules to import DVDs “on the fly” as well as live audio/video sources.
Multimedia_Converter is a simple-to-use GUI, which uses ffmpeg to do the conversions. Fairly simple to use, you first click on whether it is an audio file or a video file, fill in the names of the input and output files, then click on the button that has the conversion you need.
Xsane (and SANE) Image Scanner Software is used to scan documents, photographs, and slides. As in other program suites, Xsane is the graphical front-end to the command-line driven SANE commands. The SANE web pages have a list of scanners that the project supports, and the level of support for each scanner.
The SANE (Scanner Access Now Easy) project was started by a friend of mine, David Mossberger-Tang. Before “SANE,” setting up a scanner was close to impossible. But “SANE” does more than just allow you to set up flatbed scanners. It also does slide scanners, hand-held scanners, video cameras, still cameras and frame grabbers. SANE also works under a variety of other operating systems. By separating the “back end” from the “front end," David allowed for automation of various scanning jobs through the use of batch scanning and network scanning. There have been other graphical interfaces for SANE such as “Simple Scan,” and applications such as OpenOffice.org.
yourself‚Ä®‚Ä®Icecast, darkice and darksnow are programs for streaming audio media (Ogg Vorbis and Mp3) to client systems. Icecast is the actual streaming server, darkice is a client program that accepts audio from a source, encodes it into a format such as Ogg Vorbis or mp3 and transmits it to a streaming server like icecast. Darksnow is a Graphical User Interface that controls Darkice.
By now you may have noticed that many FOSS programs tend to be written as some type of “command-line utility” that does some specific work, then a GUI that controls it. This allows other programs to control the command line as if you were typing in commands to that controlled program. Command line programming, in turn, can allow for relatively easy automation of the task.
In addition, Unix and Linux systems tend to develop small (and not so small!) languages that also allow you to automate things. Languages like Perl and Python are examples, but so are languages like awk.‚Ä®
PureData (PD) and Graphics Environment for Multimedia (GEM) are a graphical programming language and an environment for the creation of interactive multimedia. This includes audio, video and graphical processing. The language and environment work together by creating a platform where the audio “flow” is linked and patch-paneled through “filters.” Programmers are encouraged to create more “filters” in “C” or other languages and contribute them to the environment.‚Ä®‚Ä®
Drivers and Servers
Linux audio has gone through several renditions of device drivers and mechanisms over time. The current ones that you may see are:
ALSA – The Advanced Linux Sound Architecture, which consists of a driver and set of libraries to provide audio and MIDI capabilities for the Linux kernel. ALSA also provides a bit of backward compatibility for the older OSS (Open Sound System) that preceded it.
JACK – A system for allowing you to connect the audio output of one program or system to the audio input of another. It does this with high bandwidth and very low latency. JACK's default sound driver is ALSA, but JACK can also utilize Pulse Audio.
Pulse Audio - Pulse Audio is a sound system for a wide variety of POSIX operating systems, such as Linux, MacOS X, Solaris, NetBSD, FreeBSD, and even Windows 2000 and Windows XP. Pulse Audio uses a sound server to receive and process all audio streams, even those coming over the network and present them to the audio card. Pulse Audio has libraries to emulate older sound systems such as ESD, OSS and ALSA for applications that still use them. Pulse Audio can also use JACK to connect various sound sources and sound sinks.
I was introduced to the value of closed captioning (subtitles) by my friend Joner Worm. While a lot of people think of closed captioning only for foreign languages, closed captioning is also very useful for people who have difficulty hearing or watching videos in noisy places. Also, for people that understand your language but speak a different language natively, closed captioning helps them through the “rough spots” of your accent. Almost any video of importance should have closed captions, and the more languages supported, the better. After all, what is the sense of creating the video if your message is not understood?
For those people unfamiliar with how subtitles work, usually they are generated as separate files with timing codes in them in the places where the text of the subtitle will appear. There is one file for each language. Generating the first set of timings and subtitles is usually the hardest part. After that translators can translate the text using the same timing marks.
KsubtitleRipper will take the original DVD and rip the video and subtitles from it, creating .srt files that hold the timings and the original subtitles. After you have these two files you can upload both the video and the original .srt file into an editor and create the translations.
If your video does not have an original subtitle to it, then you will have to create the timing marks yourself....not really hard, just “tedious.”
Jubler is a cross-platform subtitle program that synchronizes subtitles to videos. It uses aspell as a dictionary and mplayer to play back the video. Jubler supports translations through the ability of aspell to select dictionaries and with two editors, a parent and a child.
Gnome Subtitles is another subtitle editor. It too supports translations and spell checking.
spumux is a command line tool that multiplexes subtitles into an mpeg2 video stream.
Make Your Own Music
After all of this graphic, audio and video capture and editing, you probably want to distribute your work of art. There is a number of FOSS tools and techniques for doing that.
CD and DVD Ripping and Burning
K3B is one of my favorite CD and DVD burning tools. For “just” ripping or creating a CD or DVD of songs or data files, it is full featured program, which I find easy to use. Other programs may be simpler, but do not give you the control that K3B does.
DeVeDe – Have a bunch of videos of different formats to put on a DVD? Want to play it in your home DVD player or in your computer? DeVeDe will allow you to place the videos, control the playback, and add menus.
DVDAuthor - A set of low-level tools to help you author a DVD. Start with a suitably-formatted MPEG stream (as created by various tools, such as FFmpeg or mjpegtools) and graphic images for your menus. Then, you can define buttons, chapters etc and turn the inputs into a DVD-Video disc.
ManDVD includes features for creating and editing subtitles, and an easy to use module for using still pictures to create a “slide show,” complete with music, transition effects and more.
Scribus is an ideal program for creating editorial material such as books, magazines, fanzines, flyers and more. It works with text and images simultaneously.
While I am at it, I also have to put in a word for Lyx, LaTeX, TeX, and METAFONT as a text processing system for magazines, books and other large projects. By the use of the word “large,” I do not want to imply that the system of programs are only good for large documents and books, but I do want to stress that as a document formatter you may find these programs continue giving when other systems simply choke.
Web Editing‚Ä®Seamonkey,Bluefish, Screem, Quanta Plus and a variety of other editors for creating Web pages are available. Sometimes they are an editor by themselves. Other times (as in the case of Seamonkey) they are part of an over-all suite of tools.
Live Video Editing
So far we have been working with graphics, audio and video that are pre-recorded, editing, blending and adding effects to them, then burning them to a medium. The video has typically been done with non-linear video editing, a bit like taking a movie film, cutting it apart and piecing it back together - - as in the old film days. But what if you did not have the luxury of pre-recording the data and editing it over time? Or, you wish to create the special effects as the stream of data comes in? Or, you wish to see the effects as the video is playing in front of you? Fortunately, processors have become fast enough to do that type of editing in real-time, also known as Live Video Editing.
LIVES video editing is live and in studio, simple editing and manipulation of live video. Want to “VJ” and add special effects to the video stream? Real-time blending of clips? You can do that with LIVES. And, you can split LIVES into client and server components to allow for greater CPU in rendering.
Veejay is another program for doing “live” video editing, having video come in (perhaps from different sources) and apply effects to them in real time. Of course, this is dependent on having enough CPU power to do that editing, and both LIVE and Veejay can operate in a client/server fashion. If set to real-time mode, Veejay will drop output frames in order to keep up with the live video stream coming in.
Systems for Automation of Your Own Radio Station
By now you have put this all together: 2-D image and vector graphics; 3-D image and vector graphics; animation; audio capture and editing; video capture and editing; converting files from one format to another. The only thing is to reach for that ultimate triumph...a DJ/VJ!
Internet DJ Console is a shoutcast/icecast client that allows you to create and broadcast streaming audio over the Internet. You too can be your own “DJ,” having multiple media players, fade in/out (crossfader) and handle VoIP calls all from your “console."
Another suite of tools to use for broadcasting (both over the Internet and with real radio) is Campcaster. Campcaster is a free, open source radio suite enabling live broadcast and scheduling for radio stations, whether their transmission is analogue, digital or on-line. Campcaster was developed along with other tools for putting out print media and running a radio station over the airwaves.
Rivendell is another suite of tools oriented toward managing a radio station, designed “by radio broadcasters, for radio broadcasters.”
There are a large number of FOSS programs that are in the multimedia space, and even with the short synopsis that I have given each program here, I am sure that I have missed some very good multimedia programs. Therefore, I encourage people to comment on other programs and libraries that I may have left out.