Yep, a day of blitzing code.
There’s a total of four pieces of software I’m writing for this project. The server. The media manager. The device manager. And the device player. All four of them are now well on the way to being tested out soon enough.
So far the server works flawlessly with the media manager which can run on any OS, ie Linux, Windows or Mac.
The player is for embedded Linux only and also has some in built security layers.
The device manager runs on Android which makes it so much easier when setting up the devices.
The next step is to get the device player software to handle communication with the server and retrieve its playlist and it’s all ready for the big demo.
Once the demo setup has been produced I can move on to adding all the security layers in which will include encrypted communications over the internet.
I’ve been doing odds and sods today.
- Play a list of videos on a continuous loop full screen. By using libvlc and the Java wrapper I’ve finally got a full screen player working in less than 60 lines of code which plays a list of video files.
- Write a server and test over the internet. Using just a Java server, the initial test worked which was to accept a connection and send “Hello world!” back. Now that it is running I can expand the server with all the functionality I require. This will be handling the back-end database, media and installations.
- Define a KISS (Keep It Simple Stupid) database for handling devices and media.
- Write a mobile Android app to manage the setup of devices and assigning play lists. This is going to be a big one and a lot of work and I need to be on site when setting up devices and getting them playing without glitches.
- Expand on the software for the media player so that it can update itself from the server with not only media updates, but also software updates.
- Run an outside test live over the internet and update the playlist.
- Get more experience with Blender and video creation. For the most part, I’m more than capable of producing the videos in approximately an hour for everything I need. The more I get familiar with Blender then I can add more effects to the videos which will be a bonus.
- Bully test the server. I already have someone on hand that can test the servers integrity and stability. Pen-testing the server will give me some good pointers to how to make it more secure. I’m also considering the 2 way login.
That’s the plan for the next couple of weeks. Just so long as I get some free time I can move along quite quickly with this with the exception of the bully testing and updating.
Right now, things are looking almost bullet proof. Fingers crossed.
I forgot to add the VPS (Virtual Private Server)
I had 2.5 days carried over for holidays so I took a long weekend off beginning half day on Friday. All to go for long rides with the missus on our motorbikes. And she was very happy because she has only been riding for almost a month now.
Anyway, documents have been written up towards this project and a very important document that I created regarding it from about six years ago needs altering. No database plan has been setup yet until the spreadsheets are finalised. Number crunching has been pretty good.
At the moment I have four sample videos created, although I need a lot more, to which a demonstration setup can be made. When all the sample videos have been produced, they will range through all categories of businesses.
My Intel tiny PC turned up and I am not disappointed. I may as well stick to 30 frames per second instead of 60 as the current videos play perfect. I’ve got it to boot up in Linux and auto run my software to play the videos on a loop. No screen tearing and running all over these last four days.
Over the next one to three weeks I should have the server infrastructure in place where I can live test my new system. As mentioned above, the documentation has been more of an important matter over this weekend off when I’ve had the time. The infrastructure will include storage, database solutions, communications, security protocols and a users interface to the server.
Throughout this entire project I’ve kept to a strict diet of royalty free and open source. In the future, the software I have used will get donations.
The initial test was a single ‘cpp’ program which links to ‘libvlc’ and ‘X11’ which opens a full screen window and attaches each instance being played to the full screen window. Now it gets complex. (not really)…
Before I go ahead and actually buy the Odroid C2, I thought I’d dig out my U3 and try the vlc library on that. All I had to do was to copy the project folder over SSH to it and build it. At first it didn’t compile because I needed to install the X11 dev files, and then again I had to install the libvlc-dev files. And then it built just fine.
Major problem though, VLC doesn’t have hardware acceleration on any of the Arm processors yet.
Well, now it looks like I’ll either go down the Qt route, FFMpeg route, OGV decoder route, or find another player library.
One thing I do know is that I’d like to stick to a single video format, ie OGV. So that makes writing my own player easy enough.
My next step is to get a player working by myself and make it work on the Odroid. I’m going to see about the OGV sources before checking out other open source players.
I’ll keep you posted.