How to create a live broadcasting app

The main goals of the Bambuser broadcast SDKs for Android and iOS are, in order:

  • easy to integrate, with a sensible default configuration
  • low broadcasting latency
  • solid audio broadcasting
  • high video frame rate

In order to reach these goals, the SDKs offer fully automatic adaptive scaling of the broadcast video resolution, bitrate and frame rate. By automatically scaling according to the available upload bandwidth, the live broadcast quality will always be as high as the environment allows.

Broadcast lifecycle

  1. A client integrating the broadcasting library starts a broadcast.

  2. The Bambuser backend assigns a unique broadcastId to the broadcast and sends it to the client.

  3. The broadcast is registered in the Bambuser backend and is now visible in the listing APIs. The broadcast's state is now live.

The live broadcast can now be viewed by other clients or on the web.

  1. The client stops broadcasting.

  2. The backend changes the broadcast's state from live to archived.

The archived broadcast can now be viewed on-demand using the same method as when the broadcast was live.

How to start a broadcast

  1. Include the SDK in your app project.

  2. Create a broadcaster instance and configure it with your applicationId.

  3. Run your app and start broadcasting.

Supported instruction set architectures

The Bambuser SDKs for Android and iOS contain native code, optimized and compiled to machine code for specific instruction set architectures.

Android

The Bambuser SDK contains native code built for the armeabi-v7a, arm64-v8a, x86 and x86_64 ABIs. If you don't want to bundle all of them, or if other libraries contain native code for other architectures, an ABI filter is needed to ensure that the generated APK contains the greatest common denominator.

The armeabi-v7a and arm64-v8a ABIs are compatible with all modern devices and ARM emulator images. The x86 and x86_64 ABIs are in practice only necessary when developing on x86 emulator images, as real x86 devices can translate ARM machine code.

You may need to add abiFilters to the build.gradle file for your app. For example:

android {
  defaultConfig {
    ndk {
      abiFilters 'armeabi-v7a', 'arm64-v8a'
    }
  }
}

iOS

The Bambuser SDK contains native code built for all architectures currently supported by Apple, on devices as well as the simulator.