Requirements for Compiling, Installing and Running Snowmix.
This page lists the supported platforms as well as the required hardware and software needed to compile, install and run Snowmix.
Content
Supported Platforms.
Snowmix is supported on a wide range of Linux distributions and versions of macOS (OS X).
Snowmix version 0.5.1.1 release was tested on the following platforms:
- Linux Ubuntu Desktop and Server amd64/i386/i686/ARMv7.
- Linux Debian amd64 and i386/i686.
- Linux CentOS amd64 and i386/i686 (Fedora based).
- Linux Chakra amd64 and i386/i686 (Arch Based).
- Linux Fedora Live Desktop amd64 and i386/i686.
- Linux Mageia amd64 and i386/i686 (Mandriva originated).
- Linux Manjaro amd64 and i386/i686 (Arch based).
- Linux Mint amd64 and i386/i686.
- Linux OpenSUSE amd64 and i386/i686.
- Mac OS X El Capitan, Yosemite, Mavericks, Mountain Lion, Lion.
For Snowmix 0.5.1, the following OS distributions was also supported, but testing for version 0.5.1.1 and newer has for now been cancelled.
- FreeBSD PCBSD and TrueOS amd64.
- Linux Linaro ARMv7 (tested version 0.5.0 on ODROID U2)
A version of FreeBSD namely PCBSD/TrueOS was partly supported on Snowmix version 0.5.1, but since TrueOS is no longer maintained and online downloads of updated packages are no longer available, Snowmix support for FreeBSD is for now discontinued.
For Windows, please see the relevant section in the FAQ.
Supported Hardware.
Snowmix is very relaxed with its hardware requirements and it has been tested successfully on a variety of older and newer computers with i386/i686, amd64/x86_64 and ARMv7 compatible processors.
Snowmix code until version 0.5.1 was being developed by the author on an old 2007 Lenovo ThinkPad T61 with 2GB of RAM to ensure that Snowmix can run on a wide range of hardware including older hardware. Newer version are being developed on slightly newer hardware with more cores and RAM.
Although Snowmix itself have very modest hardware requirements, a complete video mixer system with many input pipelines decoding HD,FullHD, 4k or higher video, Snowmix mixing highe resolution video and an output pipeline aggressively encoding high quality low bandwidth video will require a substantial amount of both CPU power and CPU to memory bandwidth.
The author is using Snowmix to produce Live television rocket launches from the Baltic Sea for Copenhagen Suborbitals. The productions are in FullHD 1080p - 1920x1080@30fps with up to 14 camera input and up to 18 audio input on old IBM/Lenovo X3690X5 servers with with two Xeon 2.40G0Hz E7-2840 32nm Westmere CPUs, each with 10 cores (40 threads per server) and 32GB RAM in total although less is required. This type of CPU was released for sale in 2011 so obviously Snowmix can run on older hardware as well as very well on newer hardware. Snowmix only uses a fraction of the CPU time as most CPU time on a complete multi core system goes to decoding video and audio streams for input as well as encoding the mixed audio and video stream for output.
Does this mean that you could build a really great 4k or higher mixer platform on a modern quad or dual Xeon or Ryzen Threadripper server? Heck yeah!.
Required software.
Snowmix depends on libcairo from CairoGraphics.org and Pango available for Linux, Mac OS X and Windows among others. Libcairo is already part of most Linux distributions. Prebuilt binaries are also available for Mac OS X and Windows although Pango on OS X may have to be built using MacPort or Homebrew.
Snowmix also depends on SDL, libPNG and Tcl/Tk which all have multi-platform support including Linux, Mac OS X and Windows.
For configuring and compiling Snowmix, gcc/g++, make and autotools are necessary.
The bootstrap script supplied with Snowmix will offer to check, download and install necessary tools, libraries and needed software for you.
Snowmix uses a shared memory model for efficiently inputting to and outputting video from Snowmix. The shared memory model is compliant with GStreamer shmsink and shmsrc so Gstreamer is recommended as required software too. All the scripts for inputting and outputting audio and video to and from Snowmix uses Gstreamer.
The table below list the packages needed to be installed for Snowmix to compile, run and test on each supported platform. Snowmix's boostrap script will detect platform and offer to install missing packages.
Operating System | Version | Packages |
Linux Ubuntu | 16.04 LTS - 20.04 LTS | build-essential, automake, make, autoconf, libtool, g++, pkg-config, bc,
libpng-dev/libpng12-dev, libsdl1.2-dev, libpango1.0-dev, tcl-dev, tcl,
tk, bwidget, liborc-0.4-dev, gstreamer-tools and all gstreamer plugins available. OpenGL requires also libosmesa6-dev and freeglut3-dev |
Linux Debian | 8.11-10.3 | build-essential, make, automake, autoconf, libtool, g++, bc, pkg-config, libsdl1.2-dev, libpango1.0-dev, libpng-dev/libpng12-dev, tcl-dev, tcl, tk, bwidget, gstreamer1.0-tools, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, gstreamer1.0-libav OpenGL requires also libosmesa6-dev, freeglut3-dev and possible libglew-dev |
Linux Mint | 17.3-19.3 Cinnamon and 20 beta | build-essential, automake, make, autoconf, libtool, g++, pkg-config, bc,
libpng-dev/libpng12-dev, libsdl1.2-dev, libpango1.0-dev, tcl-dev, tcl,
tk, bwidget, liborc-0.4-dev, gstreamer-tools and all gstreamer plugins available. OpenGL requires also libosmesa6-dev and freeglut3-dev |
Linux CentOS | 7.6-8.2 | gcc, gcc-c++, autoconf, automake, make, bc, libtool, SDL-devel, libpng-devel, pango-devel, tcl, tcl-devel, tk, bwidget (and possibly liborc-devel) OpenGL requires mesa-libOSMesa mesa-libOSMesa-devel freeglut-devel GStreamer: gstreamer gstreamer-devel gstreamer-tools, gstreamer-plugins-base gstreamer-plugins-good gstreamer-plugins-good-extras gstreamer-plugins-bad gstreamer-plugins-bad-free gstreamer-plugins-bad-free-extras gstreamer-plugins-bad-nonfree gstreamer-plugins-espeak gstreamer-plugins-fc plugins-ugly gstreamer-ffmpeg |
Linux Fedora | Live Workstation 23, 28-32 | gcc, gcc-c++, autoconf, automake, make, bc, libtool, SDL-devel, libpng12-devel, pango-devel, tcl, tcl-devel, tk, bwidget, orc-devel. OpenGL requires mesa-libOSMesa-devel and freeglut-devel. GStreamer: gstreamer1 gstreamer1-plugins-base-tools gstreamer1-plugins-base gstreamer1-plugins-good, gstreamer1-plugins-good-extras gstreamer1-plugins-bad-free, gstreamer1-plugins-bad-free-extras gstreamer1-plugins-bad-freeworld, gstreamer1-plugins-ugly gstreamer1-libav |
Linux Chakra | 2017.10 Euler | openbsd-netcat, bc, gst-libav, pkg-config, autoconf, automake, make, libtool, awk, gcc, bwidget OpenGL requires OSMesa and libglut however the packages has not been identified. |
Linux OpenSUSE | 15.1-15.2 LeapTumbleweed 20200717 | autoconf, automake, make, libtool, gcc, gcc-c++, pkg-config, bc, libSDL-1_2-0, SDL-devel, libpng16, libpng16-devel, libcairo2, cairo-devel, libpango-1_0-0, pango-devel, tcl, tk, tcllib, tcl-devel, bwidget. OpenGL requires libOSMesa-devel and libglut. The following packages are useful for GStreamer support in the scripts: gstreamer, gstreamer-utils, gstreamer-plugins-base, gstreamer-plugins-good, gstreamer-plugins-bad, gstreamer-plugins-ugly, gstreamer-plugins-qt, ffmpeg, lame, gstreamer-plugins-ugly-orig-addo |
Linux Mageia | 7.1 | gcc, make, automake, libtool, bc, pkg-config, gcc-c++, netcat-openbsd, SDL12, libSDL-devel, libpng-devel, libcairo-devel, libpango-devel, cl, tk, bwidget, tcl-devel OpenGL requires osmesa-devel, freeglut-devel GStreamer:, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, gstreamer1.0-libav, gstreamer1.0-mpeg, gstreamer1.0-lame, gstreamer1.0-flac, gstreamer1.0-mpeg2enc |
Linux Manjaro | XFCE 20.0.3 | openbsd-netcat, bc, gst-libav, pkg-config, autoconf, automake, make, libtool, awk, gcc, bwidget OpenGL requires OSMesa and libglut however the packages has not been identified. |
Mac OS X | Lion 10.7 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
OS X | Mountain Lion 10.8 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
OS X | Mavericks 10.9 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
OS X | Yosemite 10.10 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
OS X | El Capitan 10.11 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
macOS | Sierra 10.12 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
macOS | High Sierra 10.13 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
macOS | Mojave 10.14 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
macOS | Catalina 10.15 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |
macOS | Big Sur 10.16 | Xcode, Xcode Command Line Tools, port, autoconf, automake, libtool, pkgconfig, pango, cairo, libsdl, libpng, gstreamer |