Blockchain and 360° VR streaming solution
I took the project in 2021 to build this complex architecture project for my client.VIXO aims to bring all elements of live-streamed performances by professional, working musicians into the 21st-century digital space. During the live performance, it provides features such as augmented reality, and 360 degrees VR experience which gives you the feeling of being at a live concert in the comfort of home. It also has a blockchain wallet that lets you book tickets for the concert.
Goals
The project goal was to develop a web-based & mobile-based application that contains the features:
Provide an in-house or third-party software integration with the app for the streaming of the live shows
Booking of the live shows ticket & streaming it to the audience who can also like & comments
2D view & 360’ VR view of the live shows
Artists can post text, images, audio, video, etc to their profile which will be shown to the public users who can also like & comments
Artists can create a concert
Artists can edit their created concert within 24 hours of time-span
Artists can create promotional videos and images.
Artists can create their stories which will remain for 24 hours only.
Artists can view their Upcoming concerts for 7 days and for a month.
Artists can view their last performed concerts.
Artists can view their performance history with other information such as how many of their followers liked them, how many viewers were there at their concerts, and how much earning from their concerts.
Technology Stack
Spring Boot and Golang was used to develop application backend and APIs
PostgreSQL was used as an application database for maintaining all transactions and users’ data
Ant Media was the Live Streaming partner for our application
The blockchain technology used for creating the wallet section
Live sockets for the chat section
Unity
Unity was used for 360 live streaming, as it provides support for creating interactive 360-degree content and has built-in networking capabilities that can be utilized for streaming purposes. By using Unity's Video Player component and networking libraries, we stream 360-degree video content in real-time to a wide range of platforms and devices, including VR/AR headsets, smartphones, and desktop computers.
We used it in conjunction with Ant Media for 360 live streaming. We used a 360’ camera and used 3rd party application like MimoLive for the streaming and used Unity's Video Player component to play 360-degree video content, and then integrate with Ant Media to manage the flow of video data and ensure low latency and stable streaming. By combining the capabilities of Unity and Ant Media, we created high-quality 360 live streams that were delivered to a wide range of platforms and devices, including VR/AR headsets, smartphones, and desktop computers.
Unity engine - To play 360, VR live streaming Videos.
Video Js - integrating js library to live streaming in web application.
Android SDK - for integrating Unity framework in native Android applications.
Xcode - for integrating Unity Framework in native IOS applications.
AvPro Video SDK
OBS, MimoLive - for broadcasting live streaming in 2d and 360/VR Devices.
Blockchain technology
Blockchain technology was used for building digital wallets, which are secure and decentralized applications that allowed users to store, manage, and transfer cryptocurrencies during the ticket booking process. Blockchain-based wallets leverage the security and immutability of the blockchain to provide users with a safe and secure way to store their assets.
This wallet had a unique public address that was used to transfer funds while booking the concert tickets. Here a private key was used to sign transactions and authorize transfers. The private key was stored locally on the user's device and was used to generate digital signatures that are required to confirm transactions on the blockchain.
My client had its own Ethereum node in its ecosystem so to invoke this wallet functionality for this project so we configured and connected the MetaMask to our own RPC (Remote Procedure Call) endpoint instead of the Infura node.
We had Ethereum explorer which is a web-based tool that provides a visual interface for exploring the Ethereum network and its data. An Ethereum explorer allowed us to view information about the Ethereum blockchain, such as the current state of the network, the history of transactions, and more.
For more security we used two different MetaMask accounts for wallet transactions :
1st account: we were maintaining it for booking tickets and receiving the booked amount and in the frontend code we were just maintaining the public account address of admin.
2nd account: It was for refund/payments automation where our escrow flow was working and we are storing a private key in the backend code for making refund/payments
Storage mechanism
To store any files we used two mechanisms which were using an S3 bucket and another was IPFS system. We generated two URLs for any file uploads to prevent the cost of the retrieval as S3 was expensive so at the first instance when the user retrieves the data the IPFS was called and if at any instance it failed or took extra time then we called the S3 bucket.
Socket.IO
Socket.IO is a JavaScript library for real-time web applications. It enables real-time, bidirectional communication between a client (such as a web browser) and a server. Socket.IO was used to build our chat applications with various features for both web and mobile which worked in the sync.
Native mobile application
A native mobile application is a software application that is specifically designed to run on a specific platform such as iOS or Android. These applications are written in platform-specific programming languages, such as Swift for iOS, and Kotlin for Android. We choose a native because we wanted a smooth application due to our complex architecture