About Snowmix

Updated for Snowmix 0.5.1.1

Introduction


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?


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.

Top

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 embedded scripting through embedded Tcl and Python interpreters
  • 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
  • Support for EGL and OpenMAX hardware acceleration on Raspberry Pi
  • Support for Chroma Keying (Green Screening).
  • Support for indexed images facilitating easy image based animation.

But the complete list is a lot longer. Development Plans are also available.

Top

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.

Top

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.

Top

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.

Top

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

$ snowmix_demo
Top

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*
Top

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.

Top

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.

More details and instructions for outputting from Snowmix can be found for video here and audio here in the last part.

Top

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

More details and instructions for inputting from Snowmix can be found for video here and audio here in the last part.

Top

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.

Top

Where can I find Snowmix Guides?


A number of Snowmix Guides have been written. For more information, please see the page on Snowmix Guides.

Top

Where can I find Snowmix tutorials?


A number of Snowmix tutorials has been written. For more information, please see list below:

Top

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.

Top

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.

Top

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.

Top

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.

Top

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.

Top

Is paid consultancy available?


Yes paid consultancy on Snowmix, GStreamer, Streaming and networks is available. Please contact the author through the Support Forum or use this page privately for initial contact.

Top

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.

Top

Snowmix and Node.JS


Matthew Clark has written a package for controlling Snowmix using Node.JS assumingly running in a browser. You can find his work at GitHub.

Top

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.

Top

What has been written about Snowmix?


There is a page on Snowmix in the media with links to articles about Snowmix. If you find articles about Snowmix not listed on this page, please tell us in the Support Forum.

Top

Snowmix on SourceForge


Most information on Snowmix is found on this website you are now. However additional information can also be found on the Snowmix SourceForge project website.

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.

Top

Snowmix on other sites.


Snowmix has a channel on YouTube you can find here.

Snowmix has a page on Facebook you can find here.

Top