Audio Streaming Service

  • Audio Streaming and Recording
  • Android and iOS Apps
Expertise
Media Content Distribution
Verticals
Media & Entertainment

Developing, testing and supporting a media streaming service for Android and iOS music streaming application with DJ, track creation and recording features.

  • Android
  • iOS
  • php
  • MySQL
  • XML
  • Java
  • JavaScript
  • HTML
Calendar
18
Duration
Months
Gears
180
Efforts
Person-months

Context

Our Customer, BYO Network, is the owner of the audio streaming service Build Your Own Channel (BYO Channel) with 30+ million tracks by 1.5+ million artists and the ability to both listen to existing channels and build new ones.

The development of Build Your Own Channel began in 2011. In 2015, after changing a few vendors, the Customer started collaborating with Iflexion. The project goal was to add new features and stabilize existing functionality of the streaming service.

Solution

BYO Channel allows users to personalize the music listening process on the go by building channels, skinning them, and adding more songs.

The basic functionality of the BYO Channel:

  1. Search – allows users to search by musical tracks, artists, albums, lyrics, and app users. Within the search, users can sort, filter, add to favorites, build new channels with tracks, and add tracks to existing channels. It’s possible to listen to a short sample of a track found through the search. The search provides results in the form of a list from which users can go to the artist’s page, album page, or user profile page. From the page of another user, viewing the channels created by that user is enabled.
  2. Building a channel. Users can add tracks to the channel playlist, name channels, add descriptions, tags, and set images for the channel. Also, the channel can be made public or private.
  3. Channel player. One of several algorithms can be set up for a channel. The algorithm takes into account the tracks added to the channel playlist. Based on the added tracks, the algorithm provides track playback based on the parameters specified in the algorithm. The user interface of the channel player provides the ability to manage the channel, as well as play in Chromecast and share in social networks.
  4. DJ. The function allows users to record and edit tracks. Tracks can be added to existing channels or added to new channels. The access function is available after purchasing a subscription. The 3-level subscriptions allow users to select the necessary rate for recording tracks.
  5. Ads:
    1. Banner ads are displayed on different screens and can be disabled by purchasing a subscription.
    2. Music ads feature short tracks designed to provide advertising content. Music ads are set for different channels and are integrated into the playback queue.
    3. Channel image ads allow users to change the channel image given by the user to the ad image in accordance with the available settings. 

Development Process

Team

Iflexion’s team was changing depending on the task workflow and project priorities. Today, the team consists of iOS and Android developers, backend PHP developers, business analysists, administrators, a project manager, and a QA specialist.

The team analyzed the system and decided which elements to reuse, and which to rewrite from scratch. In 2016, active development began. After a year, the service was released and the stabilization stage started. Timelines and budgets were expanding all the time together with new improvements. It was easy to process new requirements since the Customer always respected the opinion of the team and was very receptive to Iflexion’s input and initiative.

The most challenging aspects of the project were integration (ads and updating content from third-party media bases), stabilizing app functionality of the previous phases (lack of specification documents, lack of serious analysis and architecture, reworking certain parts of the app), and lack of scalability features. The service was not originally architecturally based on horizontal scaling, very important in conditions of heavy user load. Iflexion has fixed this issue.

Integration

Within the framework of BYO implementation, integration with the following automated systems was implemented:

·         MediaNet radio feed for receiving tracks and metadata for tracks, artists, albums

·         Lyric tool for obtaining lyrics

·         AdTech and Admob API for displaying ads (banner, skin and audio ads)

·         Facebook API for sharing information about the played track or channel

·         Twitter API for sharing information about the played track or channel

·         Crashlytics for collecting information about app errors.

Infrastructure Components

Server

Components developed from scratch by Iflexion’s team:

  • Track search algorithms (for channels)
  • Track finding algorithms (of songs, albums, musicians)
  • Statistics (reports)
  • Media processing with silence cutting
  • Admin (based on Sonata Admin).

iOS App

Components developed from scratch:

  • Playing music, based on the native AVFoundation framework
  • Displaying and editing the audio track, using a heavily modified third-party solution, FDWaveformView.

The following libraries were used:

  • Chrome Cast – broadcasting the played tracks on the TV screen
  • Reachability – checking internet connection
  • MagicalRecord – working with the database
  • XLPagerTabStrip – Android-like swipe page navigation
  • DraggableCollectionView – ability to move list items
  • SDWebImage – downloading images from the network
  • XLForm – input fields and their validation
  • MarqueeLabel – running text.

Android App

Components developed from scratch:

  • Local track playback, developed using native Android SDK tools. The following libraries were used on the project:
  • GraphView – displaying the volume level of a single track in the form of columns
  • FFmpeg – track analysis and conversion of tracks
  • Chromecast – broadcasting the played tracks on the TV screen.
  • Robospice, Robospice-spring-android – integration with REST server
  • Drag-sort-listview – ability to move list items
  • Universal image loader – downloading images from the network
  • Roundedimageview – displaying round images.

Main Technologies

Presentation layer:

  • Android SDK
  • iOS SDK

Business logic layer:

  • Symfony2
  • Android SDK
  • iOS SDK

Connectivity layer:

  • REST API
  • REST (Robospice, Robospice-spring-android)
  • AFNetworking

Persistence (database) layer:

  • Doctrine
  • MagicalRecord

Results

That last update included sharing improvements including new social sharing options, streaming improvements, various bug fixes and performance improvements to enhance the BYO experience. A dedicated testing engineer was available on demand to test new features.

Two rounds of security testing were conducted by Iflexion’s QA team and a third-party expert with the focus on data leakage vulnerabilities.

At the moment, maintenance and support activities are aimed at monitoring server and environment health and promptly responding to issues and requests, as well as providing the Customer with timely detailed reports. All issues associated with the code are solved with the help of the development team.

Screenshots

WANT TO START A PROJECT?

It’s simple!

Contact details

Request details

Attach file
Up to 5 attachments. File must be less than 5 MB.
Submit
*— means required fields