The demand for live video streaming services has been growing steadily over the past years. The lockdown has triggered an obvious boost in the variety of fields where this feature was implemented, including applications for medicine, education, government, virtual tourism, video consulting, sports, and many others.
This brief overview of the popular platforms will shed some light on the technical aspect of embedding live video functionality and its possible challenges. A completely independent custom development is also considered and compared to the other options. On top of that, you will find the description of the platform choice and a live video broadcasting application developed in Apiko. So let's get started!
Vonage is a platform with more than 1m users that besides cloud communications service plans offers APIs for developers. It has official React Native software development kit (SDK), and official Node.js SDK for the server side.
Advantages of the platform:
- The service has good documentation and examples of feature implementations.
- The official React Native SDK and Node.js SDKs.
- Provides the ability to archive streams.
- Ability to use different protocols for streaming:
- WebRTC allows up to 3,000 viewers in real time.
- HTTP Live Streaming (HLS) provides the coverage of an unlimited audience and is commonly used for streaming content delivery. It has a live video streaming delay of up to 15 seconds.
- real-time messaging protocol (RTMP) allows functioning with low latency, the delay is less than 5 seconds. It also provides an ability to restream video to FaceBook Live, YouTube, Twitch and other RTMP services.
From a technical point of view Vonage does not have any obvious disadvantages.
Pricing for video API starts at 9.99$ per 2000 minutes, with latter per-minute tarification that gradually decreases as the monthly duration of video streaming enlarges.
Agora.io has React Native SDK provided by the community, and doesn't require a server for session creation.
Advantages of the platform:
- The service has code examples
- The React Natvie SDK is up-to-date and constantly supported
- It provides the ability to archive streams.
- Despite the code samples, the service documentation does not describe all cases or, at least at the first glance, it is quite difficult to find the necessary information.
- The React Native SDK is not official, but the official documentation refers to it.
Pricing for agora.io services is quite flexible, and includes an offer of free first 10,000 minutes each month, no prepaid plans and pay-as-you-go tarification (except for some healthcare applications). The price for video streaming per 1000 minutes ranges between 3.99$ for up to 720p resolution and 8.99$ for Full HD quality (720p-1080p).
Primarily, Bambuser is an add-on for e-commerce platforms that provides live video shopping functionality. The service has official React Native SDKs (broadcaster SDK;player SDK) and the official Node.js SDK for the server side.
- The service has good documentation
- The official React Native and Node.js SDKs
- It scales automatically to a global audience of any size
- Both broadcaster and player adapts to the client's network conditions to ensure a smooth stream
- Low latency (2 seconds or less) for any number of concurrent viewers.
From a technical point of view this service does not have obvious cons.
Bambuser is a bright example of a platform with decent functionality, however, the simplest starter plan for up to 5 users costs 599$ per month. The more advanced options allow video player customization, uploading pre-recorded videos, enabling captions, dual hosting, compatibility with an external camera, etc. Their pricing is not indicated on a website and can be found out or discussed by contacting bambuser sales department.
MUX offers the unofficial Node.js SDK, which is a MUX api wrapper for Node projects. There are also Ruby, Python, PHP, Elixir, Go SDKs developed by the community.
- Clear well structured documentation with code examples
- Supports RTMP and HLS
- Live streams are recorded automatically.
- Live streaming latency is around 30 seconds. With a so-called "reduced" latency feature, it can be decreased to about 15 seconds (depending on the player it can vary a bit).
- SDKs are not official.
The software is open-source, however, there is pricing for operating expenses. Currently the encoding costs 5$ for 100 minutes of the video, it's 3$ per storage of 1000 minutes, and 1.2$ per streaming of 1000 minutes (all are to be paid on per-minute basis). The corporate customizable plans can be discussed with the sales department.
- Official Node.js SDK.
- HLS support
- Video streaming latency less than 10 seconds
- Zoom integration - live streaming, web conferencing
- Expo video gallery with customizable landing page for your project branding
- Dacast offers their own player. Although it is possible to use your own player, some of the features may not work properly with it.
The subscription plans start from 39$ per month for a minimal set of provided features, including live streaming, video hosting, 1080p broadcasting, support, 1.2TB and 50 GB storage per year, and are billed annually.
- 100% open-source solution that requires no additional operating expenses
- Free hosting and running for meet.jit.si
- Can run on your own servers
- Is easy to scale
- WebRTC compatibility
- SDKs for Android and iOS mobile apps development, as well as possibility to embed live streaming functionality into web applications
- Video recording
- The official Jitsi team does not offer paid support services. If you would like to delegate Jitsi implementation and its running within your project to a dedicated team, there is a big community where you can ask for assistance.
Pricing: the platform is open-source, and provides free hosting and running for meet.jit.si. This results in a considerably lower cost of operating expenses compared to the platforms mentioned above.
When it comes to implementing live video streaming functionality, we face the fact that React Native does not have official libraries for the RTMP and HLS protocols. There are several libraries from the community for publishing and receiving RTMP and HLS streams, but they are not quite popular and some of them are deprecated.
It is possible to create a RTMP server on the Node.js platform using node-media-server library.
Also one can deliver their RTMP stream for the mobile app to such content delivery network (CDN) services as Wowza, AWS Elemental MediaLive, etc.
Benefits of a custom solution:
- Usually it is cheaper compared to using payed platform services
- It is sometimes useful to have all the data on your own servers and have physical access to them
- More secure way to store data.
Challenges of a custom solution:
- Unofficial libraries for React Native are a tricky thing. They have worse support than the official ones, since sometimes developers stop contributing to them. That's when old errors may remain unfixed, and the new React Native releases may be not compatible with the former library implementation.
- The custom solution requires a bigger development team and more support from your side.
- Deployment and scaling services depend on you and require good planning.
- Development is more time-consuming.
With custom development it's necessary to plan the architecture to calculate the final price.
Video meeting P2P platform development
The Motipio founder addressed us with an idea to utilize live video streaming functionality for enabling the experts of multiple fields including law, medicine, education, coaching, and many others to monetize their consultancy services, as well as letting people find qualified assistance online.
Concerning the lower operating expenses, our client insisted on Jitsi for this video meeting P2P marketplace platform development. The project was realized as a mobile application that also has a web version available.
Despite the open-source nature, at the beginning of the Motipio project Jitsi documentation was incomplete, but under regular improvement and updating. Moreover, there are no React Native and Node.js SDKs - the development team needed to make Jitsi integration from scratch.
As a result, the following features related to live video streaming were developed for Motipio:
- There are two types of users:
1) those who can enable their cameras and microphones, and become (or interact with) the main speaker
2) live stream viewers who can watch the video but have no possibility to interact with the presenter
- One subscriber can connect to a live video stream from multiple devices simultaneously, which will be counted as a single connection from one user
- If a user for some reason doesn't log out after the video stream, they will be signed out in an hour automatically
- Despite Jitsi's scalability potential, the maximum number of app users was limited to 100 people by the customer. Admin can manually change the number of users within this quantity.
- Stream publishing: a group of users may start a video meeting privately, and provide access to it for other subscribers whenever and if they decide to do so
- Screen sharing
- Possibility to mute a user
- One can "raise a hand" (e.g. to draw attention or to vote for something, etc.)
- Possibility to "kick" a stream user as a warning for some undesired activity
- Ban a user - so they will permanently not be able to join a particular live stream.
Let's sum it up
Despite minor concerns about the future demand for apps with live video functionality, it is certain to keep growing. The lockdown has forced several industries to resort to remote collaboration, disclosing the impressive potential of live streaming services.
Hope this article has broadened your outlook on the existing options for live video functionality realization, and will help to bring your video streaming app to life. Let us know if you need any assistance with implementing such functionality or have any questions, we are eager to lend a hand and share our experience with you.Case Studies