OmniStream
v0.3
Video Stream Encoder
Stream everything everywhere.

OmniStream will convert practically any video file into a format that can be
streamed from almost any server to nearly every streaming media player.


Video Formats Streaming Servers Media Players
QuickTime
Windows Media
MPEG 1/2/4
AVC (H.264)
Flash
Real Media
...and many, many more!

See the full lists:
Containers
Codecs
Any Web Server
Any FTP Server
Flash Media Server
Darwin Streaming Server
Wowza Media Server
Red5
Local File Shares

Most any server can stream OmniStream files!1
QuickTime Player
Flash-based Players:
     JW Player
     Flowplayer
     ...and more!
VLC Media Player
MPlayer

Any streaming media player that supports AVC/AAC can play OmniStream files!1


1 Note that not every combination of server and player will work together. Check the documentation of the software that you're interested in to see which setups are compatible.




Download


OmniStream is currently packaged for Windows XP or later.1 It requires Python 2.6 to run, so please download and install that first.2 If you wish to run the GUI version, you will also need to download and install wxPython 2.8.

Download Python 2.6.2 for Windows (13.8 mb) - Required

Download wxPython 2.8 for Windows (9.9 mb) - Required for GUI

Download OmniStream 0.3 for Windows (3.5 mb) Released July 12, 2009

Versions for Mac and Linux are forthcoming.

OmniStream is open source software and is bundled with third-party software. Please see the licensing information for details.



1 If you're technically inclined, you could replace the Windows binaries of ffmpeg, normalize, and mp4creator with those for a different OS and it should work, but this hasn't been tested.

2 At this point, Python 3.x will not be supported. The GUI version of OmniStream requires wxPython, which does not yet support Python 3.x. When it does, OmniStream will likely be updated to follow. Also, Python versions earlier than 2.6 may work, though I'm not sure how far back.




Usage


OmniStream can produce different qualities of streams: Low, Normal, High, and HDTV.1

Low quality streams are intended for dial-up connections, but these may be unreliable due to the limitations of telephone modems.

Normal quality streams are for DSL or better broadband, similar to what you will find on many websites.

High quality streams are for cable or better broadband and require a reasonably modern computer to view.

HDTV quality streams are for fiber or LAN connections and require a fairly fast computer to view.


To run the GUI version of OmniStream, just double-click OmniStream GUI.py.




To start the command line version of OmniStream, run it like this:


python OmniStream.py <Input File> <Options>


Requirements
OmniStream.py The program.
<Input File> The source video file to create the stream from.
Options
python You may need to include the Python interpreter, depending on your system configuration.
Quality=<Stream Quality> The quality of the stream to be produced. Valid stream qualities are Low, Normal, High, and HDTV. Defaults to Normal.1
Output=<Output File> The file to save the stream as. Defaults to:
<Input File>.<Stream Quality>.mp4
Audio=<Audio Track> The input file audio track to use. Defaults to the first audio track found.
Video=<Video Track> The input file video track to use. Defaults to the first video track found.
Start=<Start Time> The time within the input file to start the stream from, in seconds.2 Defaults to the beginning.
Length=<Stream Length> The length of the input file to include in the stream, in seconds.2 Defaults to the entire file.
No_Optimize_Audio Don't optimize audio. May help audio/video synchronization issues, but audio levels will remain identical to the input file.
No_Optimize_Video Don't optimize video. Encodes faster, but reduces video quality.
No_Optimize_Streaming Don't optimize streaming. Slightly reduces encoding time and stream size, but cripples most streaming capabilities.

1 The encoding presets can be modified by the user in Encoding Presets.conf.
2 Actual start time and length may vary slightly due to processing limitations.




The Technical Stuff


OmniStream converts video to a standard format called Advanced Video Coding (AVC, aka H.264) and audio to Advanced Audio Coding (AAC), which is stored in an MPEG-4 file. It then adds "hinting" information that allows the file to be streamed over protocols such as RTSP and RTMP. Lastly, it optimizes the file layout so that it may be "streamed" via progressive download over protocols like HTTP and FTP.

Here are the configurations for the default encoding presets:


Name Video Audio
Bitrate Framerate Dimensions1 Bitrate Sampling Channels
Low 32 kbps 10 fps *x160 8 kbps 8 khz 1
Normal 256 kbps 15 fps *x240 32 kbps 16 khz 1
High 1536 kbps 24 fps *x480 128 kbps 32 khz 2
HDTV 3072 kbps 30 fps *x720 256 kbps 48 khz 2

If you want to learn more about what all this means, you might like to read my article on The Basics of Digital Media.



1 The aspect ratio (such as standard 4:3 or widescreen 16:9) of the source video is always maintained, so the stream width will be relative to the original file.




The Power of Open Source Software


Open source software is democracy in technology. It is free to use, distribute, and modify for anyone, anywhere. OmniStream is both open source software itself and makes use of other open source software to do the heavy lifting of video and audio processing. That means you can use OmniStream to prepare your media for streaming at no cost!

Creative Commons Logo OmniStream is copyright 2009 Chris Stanley and is distributed under the Creative Commons Attribution-Share Alike 3.0 United States License.

OmniStream proudly integrates these other high-quality open source software projects:

ffmpeg - Media information and transcoding
mp4creator - MPEG-4 track hinting and file optimization
normalize - Audio normalization and leveling




Copyright © 2009 Chris Stanley