A friend of mine, who helps running a very small TV network in my city, asked me if I could help finding a affordable solution to a problem he had. He needed to connect two studios using a ~20Km wireless bridge, in order to make it possible for a studio to stream live video to the other. The receiver was required to have an analog output (example: SCART), so that it could coexist with other equipment. Since I love Dreambox I gave it a try đ
Letâs start with some ingredients for our recipe:
- A Dreambox (Iâm using a DM600PVR with no HDD, but any Dreambox with an ethernet adapter should work)
- Gemini Firmware Image for your Dreambox version
- VLC Media Player for Windows (>= v 0.8.5)
- A FTP client (example: FileZilla)
- Windows Media Encoder (WME) for Windows (well, I guess thereâs no Linux version for that đ )
- VLCF-Final plugin for Gemini firmware
- A camera and the related hardware to connect it to your PC (Firewire HUB, etc.)
A little bit of⊠background
It took me some time to figure out how to make my camera stream to the Dreambox. I tried many things, including directly streaming from VLC, without using Windows Media Encoder. It didnât work. If only I had access to VLCF-Final source code, I could find out how to make it work without wasting resources with the WME step. But why it does work when using WME?
VLCF-Final simply acts as a front-end for the VLC instance on your computer (back-end). It tells the back-end to open the file you choose and to stream it to the Dreambox, transcoding it if needed. The file WME is creating is a .WMV file (like old .ASF files): because of the structure of this file, you can start playing it even if it is getting written on, because it was designed to be used on internet web pages, where you donât have to wait for it to download completely before playing.
Windows Media Encoder basically keeps writing to the end of the file encoded data received from the camera, while VLC reads it (transcodes it) and sends it on the fly to your box.
Dreambox preparation
Now (1), the very first thing you need to do is to flash the Gemini image on your Dreambox. The net is full of tutorials and how-to about that, so I wont go into details. Just use latest DreamUP. When youâre done, (2) you need to configure network settings for your dreambox to connect to Internet. Simply find âNetwork Settingsâ menu and fill your stuff in there (yes, thatâs a pretty easy operation, Iâm not going to get you lost in details now.. if you need help, you can ask here in comments đ ). Once youâre done, reboot the box (3), then press the blue button on your remote and go to Plugins menu. Download the plugin list (4) and look for VLCF-Final plugin. Download it (5). Install the FTP client software on your PC and connect to the dreambox using the IP you assigned to it (username: root password: dreambox), browse to /var/tuxbox/config folder and download vlcf_original.xml to your computer (6). Open it with a text editor (do not use windows notepad, instead use something like PSPad), and change it as follows:
â Pick the first line which contains <server> tag (7): it should look like the one below. Change the ip field to match your PC IP (the one which will stream camera feed)
<pre class="xml:nocontrols:firstline[4]"><server name="set1" ip="192.168.128.12" webif-port="8080" stream-port="9090" user="admin" pass="admin" />
â Pick the first line which contains a <config> tag (8) with the same name field of the <server> line you just modified. Fill in the startdir parameter, which tells VLCF-Final where to find the stream file. It should look like that:
<pre class="xml:nocontrols:firstline[8]"><config name="set1" startdir="g:/" cddrive="f:" />
Upload the file back to dreambox (9), overwriting the one in /var/tuxbox/config (feel free to backup old file) and reboot the box again.
PC preparation
Download and install Windows Media Encoder and VLC for Windows (10). Open VLC and go to Preferences->Interfaces->Main Interfaces and enable (tick) âHTTP remote control interfaceâ (11). Save settings and close VLC.
Test 1: video streaming to dreambox
Run VLC on the PC, and leave it opened. Turn on your Dreambox, press the Blue button, and go to Plugins menu. Run VLCF-Final. Press the Red button (should be bound to âFileâ action) and a list of files will appear. Yes, thatâs the files in the folder you wrote in vlcf_original.xml file! Just select any file, press OK, and it should play đ If it doesnât display any file, youâve probably forgot to configure or start VLC on your PC, or messed up with steps (7) or (8). Double check that VLC can open and play the file youâre trying to play as well.
Test 2: camera streaming to Dreambox
Connect your camera to the PC and, if your speakers are ON, you should hear a âdin dongâ sound. Thatâs good, camera is connected. Now run WME and go to âFile->Newâ and then, in the Wizards panel, choose âBroadcast a live eventâ (12). When asked for input devices, select your camera from both video and audio dropdown menus. In broadcast method, be sure to select âPull from the encoderâ method. Next page will prompt for session settings (port to stream on, etc.); we wonât be using this stuff, so just skip it until you reach the bitrates page. In this page, depending on your PC horsepower, choose the desired bitrate. Keep in mind: the lower, the faster! Weâre almost done. It will now ask if you want to archive a copy of the broadcast on your hard drive. Thatâs what you want to do. Be sure to make it create the file in the path you specified in vlcf_final.xml file. Click on âFinishâ, and it should start the show. Get to your Dreambox, open VLCF-Final plugin, browse to the broadcast file and play it. Enjoy the show!
Further enhancements
This method isnât exactly perfect or elegant. To tell the truth, it is a real mess đ Thatâs what can be done to get it working better:
- Tweak WME bitrates to lower latency
- Avoid the use of WME and direct stream from camera using VLC
- Modify VLCF-Final plugin to enable a âListenâ mode, where it just listens for streams without having to manually browse for the stream file
I really hope this stuff will help. If you have any suggestion, problem or you just found a grammar error in my italenglish, donât forget to leave me a comment down there đ