EDIT: Flumotion is no longer suitable for modern Ubuntu distros such as Ubuntu 18.04 or 20.04 onwards. Use MistServer instead.
Flumotion Streaming Server is a great open-source application that is available in the Ubuntu repositories that can easily allow you to broadcast a live stream from a video camera, or broadcast pre-recorded media. The end-user can view this media in any capable HTML5 web browser such as Google Chrome.
Unfortunately Flumotion (version 0.10.0-1 at the time of writing) relies on some deprecated Twisted Python network functions that prevent the software from working properly on any release of Ubuntu from 13.04 and upwards.
The obvious solution is to simply install Flumotion under Ubuntu 12.04 but then you will find that Flumotion in the 12.04 repository is buggy and out of date anyway, requiring you to update Flumotion from the official developer PPA to the stable release that is already in Ubuntu 14.04.
There is a way to get Flumotion working properly under Ubuntu 14.04 however, without too much fuss. Essentially all you need to do is downgrade the three affected Twisted Python packages down to 11.1.0, which is the version from Ubuntu 12.04.
Here’s how you do it.
WARNING: Ubuntu has a high reliance on Python. By downgrading to an older release, you run the risk of other parts of Ubuntu that rely on Python either breaking or behaving unusually.
So far I have only found the Flumotion Assistant UI to suffer some minor issues with rendering text fields, preventing you from adding values for things like framerate which will upset Flumotion because that data is missing, but you should be able to get around it by generating the XML configuration elsewhere (I will update this article in due course once I’ve done more testing).
I would recommend that you dedicate a PC to be used as your Flumotion server so you don’t have to install other applications or regularly have to perform updates.
Please also be aware that the next time you perform a package update, Python is likely to be upgraded to the current release automatically again, but you can follow these instructions from Step 3 to downgrade Python again afterwards.
- First up, install Flumotion as normal:
$ sudo apt-get install flumotion
- Once it is installed, we now need to download three Python packages from Ubuntu 12.04 that we are going to downgrade to:
$ wget -c http://au.archive.ubuntu.com/ubuntu/pool/main/t/twisted/python-twisted-bin_11.1.0-1ubuntu2_amd64.deb
$ wget -c http://au.archive.ubuntu.com/ubuntu/pool/main/t/twisted/python-twisted-core_11.1.0-1ubuntu2_all.deb
$ wget -c http://au.archive.ubuntu.com/ubuntu/pool/main/t/twisted-web/python-twisted-web_11.1.0-1_all.deb
(Note: If you are using 32-bit Ubuntu, change “amd64″ to “i386″ for the “python-twisted-bin” download)
- Now we need to uninstall the newer version of Python components that is currently installed without uninstalling the applications that rely on it (basically we’re going to force the system to break its dependencies):
$ sudo dpkg -r --force-all python-twisted-bin python-twisted-core python-twisted-web
- Now let’s install our replacement downloaded packages:
$ sudo dpkg -i *.deb
- Finally, let’s restart Flumotion:
$ sudo service flumotion restart
That’s basically it. You can now start the Flumotion Administration interface and this time the Manager and Workers will all start without an issue this time (login with the default username and password of “user” and “test” respectively).
As before, remember that installing future system updates to the system will automatically upgrade the three Python packages we just changed to their current releases which will break Flumotion, so just go back to step 3 to undo that and reinstall the older packages.
This issue will be resolved once Flumotion is updated to no longer use the deprecated network-related functions in Twisted Python.
Pat yourself on the back. Job done.