Streaming video software

Mpeg4Ip

MPEG4IP provides an end-to-end system to explore MPEG-4 multimedia. The package includes many existing open source packages and the "glue" to integrate them together. This is a tool for streaming video and audio that is standards-oriented and free from proprietary protocols and extensions.

Provided are an MPEG-4 AAC audio encoder [1] , an MP3 encoder, two MPEG-4 video encoders, an MP4 file creator and hinter, an IETF standards-based streaming server, and an MPEG-4 player that can both stream and playback from local file.

Mpeg4Ip can be recommended for its stability and easy employement, being a simple yet powerful tool to produce MPEG4 streams that can be served by the popular Darwin Streaming Server distributed by Apple. It provides an intuitive graphical user interface and can record on harddisk while stream at the same time, the produced streams can be played on most platforms by commonly found players, while mpeg4ip itself provides players for multiple platforms. A remarkable feature is also the complete support for RTP/RTSP and Multicast protocol.

VideoLan

The VideoLAN project targets multimedia streaming of MPEG-1, MPEG-2, MPEG-4 and DivX files, DVDs, digital satellite channels, digital terrestial television channels and live videos on a high-bandwidth IPv4 or IPv6 network in unicast or multicast under many OSes.

VideoLAN also features a cross-plaform multimedia player, VLC, which can be used to read the stream from the network or display video read locally on the computer under all GNU/Linux flavours, all BSD flavours, Windows, Mac OS X, BeOS, Solaris, QNX, Familiar Linux...

The latter feature is one of the most important points for VideoLan, being in fact the only free software being able to fill the gaps between video and audio formats on different platforms, while it's even supporting ARM and MIPS based handeld devices, being ready to be integrated in consumer-grade embedded solutions.

VideoLan supports the functionalities offered by the IVTV driver, taking advantage of hardware encoding on a growing number of cards [2]. It is basically made out of two software components: VideoLanClient (VLC) and VideoLanServer (VLS). VLC is a multipurpose streaming a/v client and source: it can play streams as well it can capture and send a stream to another VLC or VLS. VLS is just a server which has no visualization output for the streams it handles, its fully capable of capturing and streaming from the local machine, as well reflect streams coming from other VLC/VLS nodes.

The way VideoLan distributes functionalities among its nodes is therefore very flexible and permits to easily build streaming topologies to distribute realtime audio/video streams for various needs.

Video conversion: Transcode

Transcode is a linux text-console utility for audio/video stream processing and transcoding between different formats and codecs, complete documentation and sourcecode are available on it's homepage.

Decoding and encoding is done by loading modules that are responsible for feeding transcode with raw video/audio streams (import modules) and encoding the frames (export modules). It supports elementary video and audio frame transformations, including de-interlacing or fast resizing of video frames and loading of external filters.

A number of modules are included to enable import of DVDs on-the-fly, MPEG elementary (ES) or program streams (VOB), MPEG video, Digital Video (DV), YUV4MPEG streams, NuppelVideo file format and raw or compressed (pass-through) video frames and export modules for writing DivX;-), DivX 4.02/5.xx, XviD, Digital Video, MPEG-1/2 or uncompressed AVI files with MPEG, AC3 (pass-through) or PCM audio. More file formats and codecs for audio/video import are supported by the avifile library import module (capable of using WIN32 codecs directly from .dll), the ffmpeg codec library (MPEG4, DivX family codecs, Real) while limited Quicktime export support and DVD subtitle rendering is also avaliable.

In particular it can be useful for MPEG4 compression, realized thru the FFMpeg module. It supports various m$mpeg and divx formats, as well H.263. While unfortunately is still lacking support for the H.264 video codec and the AAC audio codec, due to patent pending. Honestly enough, i think that even if more efficient than other codecs, those proprietary solutions will have less and less ground for consumer grade diffusion if they will not open their policies: right now it's only possible to play H.264/AAC encoded MPEG4 files on Mircosoft Windlows platform.

Example 2. commandline video format conversion

convert videos from MPEG2 to MPEG4, resizing to half-PAL size, encode with MP3 64Kbit/s audio and WindowsMediaPlayer compatible 300Kbit/s video:

 ~ #transcode -i mpeg2/video.mpg \
              -y ffmpeg -F msmpeg4 \
              -Z 300x240,fast -w 300 \
              -V -N 0x55 -b 64 \
              -o mpeg4/video.mpg
special care has to be taken with the -Z resizing flag, which has to preserve the screen size ratio in order to avoid interlaced movements in the transcoded video. More information can be obtained by reading the transcode --help | more and the man transcode help and manual page; useful is also the GTranscode graphical interface to Transcode which helps to form commandline formulas by schematizing the wide range of possibilities being offered.

Transcode was originally written by Thomas Oetreich and is now mantained by Tilmann Bitterberg, it links several different libraries and includes code contributed by many different researchers and programmers since june 2001.

Notes

[1]

interestingly enough, this is the only GPL'd AAC encoder implementation that i've found around, and is yet not a shared library included in other generic frameworks as transcode: useful component, indeed.

[2]

PVR250/350, Yuan MPG600/160, Avermedia M179 and probably more in future, see http://ivtv.writeme.ch/tiki-index.php?page=SupportedHardware