I am a developer. A team leader, but still a developer. I love technology, so I usually try to do stuff and I use my skill to do it “differently”. I went for a journey on the Lake District, and I wanted to document part of it with live streaming or, as nowadays you call it, IRLs (In Real Life).
There is an easy solution for doing that, you use Streamlabs for your mobile phone and… wait, your IRL has the logo of Streamlabs. Plus yes, you can use overlays, but I want to show a circle with the map of the area in which I am moving and… how to do that? Because Streamlabs for mobile is anyway managed by your mobile, very difficult to setup everything on a mobile.
Not only that, but I had other requirements that I am going to list here:
- Have the map with my position (as we said)
- have an overlay with the number of the day of travel, and the time
- Save the live while I am streaming, and possibly not on my phone
- have a scene, for those moments that I don’t want to share, that give a bit of info without having to interrupt my stream. Those info are:
- the stops of the tour
- how long I have been away from the live
- a gallery with a selection of pics I am taking during the travel, with when I took them in terms of number of day of travel and time
- a short message as a status, with eventually a sub message in another language, and the time this message has been sent
- have a scene for lives by night with a host (meaning me and another person speaking)
- stream on Twitch, my Facebook profile (to a limited audience) and youtube at the same time, and eventually have their chat display in the video
- control everything from my mobile
Did I achieved that? Obviously I did. I used fully available and free services, and my mobile phone. In this post I will go through the service I used, and their alternatives, in the following ones I will go into details and the coding part.
First of all, as I said, configuring everything in Streamlabs for mobile is a bit complicated, and most of the requirements are not achievable. So what I needed was a server (my linux laptop) with OBS. OBS is the best streaming platform I have ever used: easy, configurable, great. Using OBS meant that I needed to keep my laptop running the full travel, but this is the price for science.
Ok, assuming I will have OBS running at home, I have two problems:
- How to control OBS from a remote location, with my phone
- How to send my video to OBS
There are free apps for the first point: the best one among the 2 or 3 I tried for Linux is UPDeck, really easy to install and to setup, comes with a mobile app to control your OBS from your mobile. Great, exactly what I needed. But hey, even assuming that you know how to setup a port forwarding in your router to send the two port number that UPDeck uses to your laptop, we have still a problem with your dynamic ip. Ok, easy problem, I registered a domain in DuckDns and I set up a cronjob to update my IP for my domain every 5 minutes. The website explains how to do that in details, so don’t worry.
For the second point I had different option. OBS let you create an overlay with a web page, so it was enough to have a permanent room in one of those conference website that are free. The best one would have been OBS Ninja (now become VDO Ninja) and one month ago was working perfectly, but I was not able to setup a proper stream one week ago, so I used Jitsi Meet. Let’s be clear: I have tried to setup an RTMP server on my raspberry pi and send there my video (using this guide) but the video was in very low quality. Jitsi was an acceptable solution, even if the quality was not great, so, to try to improve the quality and to not rely on a server that could have been down, breaking all my setting, I also installed it on my laptop (the process is easy, and you can find it here). I used NGINX as a server, I needed also a reverse proxy for converting https requests into http ones (I think I will speak about that in the next post).
Ok, with Jitsi I can put a web page in my OBS scene and have the conference shared in my stream. On my mobile I have just to join the same conference and everything will be streamed as expected. Lovely.
I can also setup OBS so that every time I stream I also save the stream as a video. That covers almost everything I can achieve by using external services; only 3 other services are required.
One is Google Maps: I logged through OBS to one of my old Google accounts. On the account on my mobile I shared my position with that old account: now, with the web source, I can create 6 different web sources (one per day) by pointing GMaps on a different location in which I went during the travel, I can create an image to use as a mask and I can create a nice rounded map that will show my position on it, and because I will be sharing that position, I will be able to see it changing while I am moving.
One is Restream: restream let you send the same video source to multiple streaming services. It uses RTMP as protocol, so you can easily use it with OBS (or eventually with Streamlabs for mobile). My OBS is sending the video to Restream, and Restream is sending it to Twitch, to Youtube and to Facebook. Restream aggregates all your chat together in a webpage to be easily added as a layer on OBS, to show whatever has been said in any of the platform chat. Unfortunately there is a limitation for Facebook: your live must be public to have the chat. My live stream was limited to a friend list, so this is not working. But it is great anyway.
The last service I will use is dropbox that I will use to share a directory between my laptop and my mobile, to use for the gallery of pics I will share when I am BRB.
But this is the topic of the next post.