Application for distributed display of commercials on the professional panels of an advertising studio

We were approached by a regional advertising company to develop a system for displaying commercials on professional panels installed at gas stations, shops, and roadside cafes.

Issues

Prior to that, the company received orders from advertisers, after that the company's engineers downloaded media files to flash drives and delivered them to the points where it was necessary to show ads. Such a process took a lot of time and effort from employees, so it was decided to automate business processes.

System Description

Each authorized advertiser can upload their advertising content, select professional panels on which they want to show ads and the frequency of display. Further, the system calculates the cost of placement, the client pays the bill and the advertisement is broadcast.

Technical solution

During the project we developed:

A mobile application for set-top boxes based on Android that downloads and caches media content from the server, plays it on TVs connected to the set-top box, and reports on the display of videos and playlists to the server
An administrative panel in which an advertiser can create a playlist, upload content to it, select the screens on the map on which it will be played, and get a calculation of the cost of the campaign. The administrator of the company moderates playlists checks payment statuses and launches advertising campaigns on the air. The administrative panel stores data on the number of video impressions, screen availability/inaccessibility, and advertiser client data
The server part of the application that collects information from set-top boxes and transfers content to them

The server part was written in PHP / Laravel and MySQL, we used a third-party CDN server to optimize the load on our server, since video streaming to a large number of devices is a very high-load solution, and its development was not economically justified within the project.

The admin panel is written in PHP/Yii2, we used google maps to display screens on the map, and the interface is developed based on standard bootstrap blocks.

The mobile application is developed in Kotlin language, it should determine where the device is located using the standard Android SDK, used the ExoPlayer player to play media content. Each device is registered in the application, and the device account is linked to the serial number of the device.

As a result of the project, the Client reduced the cost of setting up content on screens by one and a half tons of gasoline per month and provided its advertisers with a flexible tool for placing outdoor advertising on screens.

The project involves further development of integration with CV (computer vision) systems for detailed analytics of ad views on each specific screen, but this part has so far been implemented only as a technical prototype that counts faces directed at the screen.