This page may help you get an idea of what Snowmix is and how to get to use Snowmix. It is thought of as a beginners guide into Snowmix. Ideally it is intended to get you started using Snowmix without to much hazzle although some additional reading quite likely is required.
- What is Snowmix?
- Which features does Snowmix offers?
- Which OS platforms does Snowmix support?
- What are the hardware requirements for running Snowmix?
- What about Snowmix for Windows?
- What other software requirements does Snowmix have?
- How do I get Snowmix?
- How do I compile and install Snowmix?
- How do I test Snowmix?
- How do I terminate/shutdown Snowmix?
- How do I write my own ini file?
- How do I get mixed video out from Snowmix?
- How do I feed video and audio into Snowmix?
- Where can I find a Reference Manual for Snowmix commands?
- Where can I find Snowmix manuals?
- Where can I find Snowmix tutorials?
- Where can I find Snowmix videos?
- What are the different overlaying capabilities of feeds, virtual feeds, images, shapes and text compared?
- How do I get started with Snowmix scripting?
- How do I get started with Advanced Snowmix scripting?
- What are Snowmix Libraries?
- Where can I find out more about synchronizing audio and video in Snowmix?
- How can I get free help and support with Snowmix?
- Is paid consultancy available?
- How can I contribute to Snowmix?
- Snowmix and Node.JS"?
- What are "End of Life Announcements"?
- What has been written about Snowmix?
- Snowmix on SourceForge
- Snowmix on other sites
What is Snowmix?
Snowmix is a very flexible and very fast command line tool for dynamically mixing live audio and video feeds. Snowmix supports overlaying video, images, texts and graphic elements as well as suports mixing audio. It offers animation, scripting, advanced clipping, simple blending and pattern gradient blending. Snowmix is not an application, but rather a highly advanced specialized tool. However with the Snowmix libraries and a little imagination, tailoring Snowmix into one, is a walk in the park or a piece of cake if you like.
Snowmix was original and still is developed by the author to produce Live streaming television from the rocket launches in the Baltic Sea by Copenhagen Suborbitals. You can see many of the videos from Copenhagen Suborbitals on YouTube.
Which features does Snowmix offers?
Some of the features offered by Snowmix are:
- Unlimited number of regular video feeds (input of video feeds).
- Unlimited geometries and frame rate (only limited by the computer CPU and RAM).
- Unlimited number of virtual video feeds (copies of regular feeds).
- Unlimited number of shape based video feeds \(copies of regular feeds).
- Limitless scaling independently for width and height for all types of video feeds.
- Handling of PAR (Pixel Aspect Ratio) for regular video feeds.
- Limitless rotation of images, virtual and shape based video feeds.
- Rectangular clipping for regular and virtual video feeds.
- Limitless clipping for shape based video feeds and images.
- Support of complex shape and pattern, solid and gradient based alpha blending.
- Support for alpha blending for all types of video feeds and images.
- Support for image transparency (images with an alpha channel).
- Unlimited number of vector based (font based) texts in any color on top or underneath video.
- Unlimited vector based rotation and alpha blending of text.
- Support for solid and shaded (transparent) background for text.
- Support for gradients and individual linear pattern shading for text backgrounds.
- Support for simple animation of text, images and video feeds.
- Support for complex graphics, image and video feed drawing, clipping, patterns, gradients and masking using graphic primitives of the 2D Cairo Graphics library.
- Unlimited number of audio inputs, audio mixers and audio outputs.
- Support for channel mapping, adding and subtraction.
- Independent muting and volume control for all audio elements.
- Support for simple and advanced scripting for all kinds of manipulation of audio and video.
- Support for OpenGL Off Screen (CPU) and GPU assisted graphic and image operations enabling 3D effects
- GUI tools for remotely controlling audio and scenes as well as for monitoring output timing and buffers
But the complete list is a lot longer. Development Plans are also available.
Which OS platforms does Snowmix support?
What about Snowmix for Windows?
Snowmix has not been tested on Windows. While the code from version 0.5.0 is modified to be able largely to compile with Visual Studio, Snowmix depends on shmsrc/shmsink modules of GStremaer and these modules depends on POSIX socket based named pipes AF_UNIX, mmap() and shm_open(). POSIX socket based named pipes and POSIX shared memory are not available on native Windows. Nevertheless efforts to port GStreamer shmsrc/shmsink to Windows is underway, but not there yet. When these efforts matrialize in a released binary of GStreamer for Windows, Snowmix is likely to be releasd for Windows as well.
What are the hardware requirements for running Snowmix?
What other software requirements does Snowmix have?
How do I get Snowmix?
Snowmix is distributed for free as Open Source Software and latest versions can be downloaded from SourceForge here.
Binaries are not made available by the maintainer. This is because Snowmix is very easy to compile and install and because Snowmix is intended as a tool that requires skills. Yes Snowmix does require skills and this is a way to ensure a minimum set of skills.
However unofficial binary packages have started to emerge. So far the following platforms have binary package distribution for Snowmix:
If you know of other Linux, xBSD or OS X binary package distributions, please drop a message to the Support Forum.
How do I compile and install Snowmix?
Instructions for compiling and installing Snowmix are available on the page on how to compile, test and install Snowmix. The bootstrap script supplied with Snowmix will offer to check for missing libraries and tools and offer to download and install them for you. If you have installed an earlier version of Snowmix or want to track the development of Snowmix or want to find interesting details, please view the Changelog. Please also take a look at the Release Notes.
How do I test Snowmix?
Instructions for a running a demo test are available here. Assuming you have set the environment variable SNOWMIX to the directory of your installed Snowmix file tree as you were told when running the boostrap file, then you can now run the Snowmix demo using the following commands
How do I shutdown/terminate Snowmix?
This is important, so please pay attention. Snowmix will terminate cleanly if the command quit is executed in either the Snowmix console window or through a control connection. If Snowmix on the other hand is killed either through an external kill signal or through sending a CTRL-C in the Snowmix console window, allocated shared memory will stay allocated and in a sense lost. If repeated, Snowmix will eventually allocate all available shared memory in a system. This is bad and you will need to reboot your system or find another way to delete/free allocated shared memory. On Linux, you can see and free allocated shared memory using the following commands:
$ df -k /run/shm $ rm /run/shm/shmpipe*
How do I write my own ini file?
Snowmix requires an initilization file (or ini file for short) with some specific Snowmix commands to run. Minimal examples of ini files with explanation are available here See also section on Reference Manual and Manuals further down this page for more information on commands for a Snowmix ini file. See also a list of all Snowmix commands available.
How do I get mixed video out of Snowmix?
Snowmix comes with a few example scripts in the scripts directory for getting audio and video out from Snowmix. The scripts are installed as executables from the command line. Some of these are:
- av_output2dummy : Getting audio and video from Snowmix for dumping.
- av_output2screen : Getting audio and video from Snowmix for display on screen and playing through the audio device.
- av_output2tcpserver : Getting audio and video from Snowmix for encoding, muxing and make it available as a tcp server.
- output2dummy : Getting video from Snowmix for dumping.
- output2screen : Getting video from Snowmix for display on screen.
- output2rtp : Getting video from Snowmix for encoding and streaming as RTP.
- output2file : Getting video from Snowmix for encoding, encapsulation and saving it to a mp4 file.
How do I feed video and audio into Snowmix?
Snowmix comes with a few example scripts in the scripts directory for feeding audio and video into Snowmix. The scripts are installed as executables from the command line. Some of these are:
- input2feed : Feeding audio or video or video and audio from a file into into Snowmix.
- v4l2input2feed : Feeding Live video from a Linux Video Device into into Snowmix.
- rtsp2feed : Fetching a RTSP stream and feed audio and video into Snowmix
- rtsp2feed2 : Fetching a RTSP stream and feed audio and video into Snowmix
Where can I find a Reference Manual for Snowmix commands?
Reference manuals for Snowmix commands has been written although a few are still work in progress. You can read more about the reference manual here.
Where can I find Snowmix Guides?
A number of Snowmix Guides have been written. For more information, please see the page on Snowmix Guides.
Where can I find Snowmix tutorials?
A number of Snowmix tutorials has been written. For more information, please see list below:
Where can I find Snowmix Videos
See Snowmix in action on Snowmix's YouTube Channel There you can also find the Snowmix Tutorials.
If you have videos created with Snowmix, we would be happy to post such videos on Snowmix's YouTube channel. Contact us through the Support Forum.
What are the different overlaying capabilities of feeds, virtual feeds, images, shapes and text compared?
There is a table with explanation for comparison of all the overlaying capabilities of feeds, virtual feeds, images, shapes and texts.
How do I get started with Snowmix scripting?
If you would like to understand how scripts in Snowmix work, please take a look at the page Basic Snowmix Scripting. It explains basic Snowmix scripting and has examples. When you master basic Snowmix scripting, take a look at the next section on advanced Snowmix scripting.
How do I get started with Advanced Snowmix scripting?
If you understand basic Snowmix scripting and would like to understand how advanced scripting is possible with Snowmix, please take a look at the page for Advanced Snowmix Scripting. It is currently under development, but it does have links to examples with advanced Snowmix scripting. Advanced scripting in Snowmix is based on using the built-in Tcl Interpreter.
What are Snowmix Libraries?
Snowmix Libraries are collection of scripts installed in the $SNOWMIX/slib directory. The Snowmix libraries adds complex features and operations as well ease of use to Snowmix. Snowmix libraries are mostly implemented using Advanced Snowmix Scripting.
You can add your own Snowmix libraries to the $HOME/$SNOWMIX_PREFIX/slib/ directory. If the environment variable SNOWMIX_PREFIX is not set, Snowmix will use '.snowmix' for Linux and FreeBSD and 'Snowmix' for Mac OS X.
Where can I find out more about synchronizing audio and video in Snowmix?
There is a guide available for advanced information on audio and video sync in Snowmix.
How can I get free help and support with Snowmix?
Snowmix comes with a free support forum were you can ask questions and share information. Please remember to create a new thread for new questions so we don't get very long threads with many different questions. That way hopefully we all can navigate the support forum a lot easier and all benefit from questions and answers.
Is paid consultancy available?
How can I contribute to Snowmix?
- First of you can start using Snowmix and help spread the word about Snowmix to friends, colleagues and contacts.
- Second you can tell us about what you are using Snowmix for in the Support Forum. We would very much like to receive screenshots of the mixing you do with Snowmix, but also text telling us what you are using Snowmix for. We would also like to receive movie clips with made with Snowmix we can post on our Snowmix4video YouTube channel.
- Third you can write a short review telling what you think of Snowmix.
- Fourth we would very much like to receive help reading through the documentation we have written here on this site and receive suggestions and corrections for language and facts.
- Fifth we would very much like to receive requests and suggestions for new features for Snowmix in the Support Forum.
If you like to contribute code to Snowmix or find errors in the code and have a fix for it, please contact the author in the Support Forum.
Snowmix and Node.JS
What are "End of Life Announcements" ?
Features of Snowmix that are being changed or removed from Snowmix in the next major release, are listed as EndOfLife Announcements. A major release is a release where the major version number is changing. Releasing 0.5.0 after 0.4.x is a major release while releasing 0.4.5 after 0.4.4 is a minor release. If Snowmix is stopping supporting a specific syntax of its commands, this would result in a major release. When the command syntax is changed, normally both the new and the old syntax is available in a new minor release. If you are writing your own ini files or are using your own programs to send commands and queries to Snowmix, reading the End of Life Announcements are important to you.
What has been written about Snowmix?
Snowmix on SourceForge
On SourceForge you can find Snowmix reviews. You can also find the Snowmix Wiki, but all new information is being created on the website you are now. The project page is also hosting the Support Forum.