Skip to content

dimadesu/LifeStreamer

Repository files navigation

LifeStreamer Android app

Live streaming app for Android designed for IRL streaming based on StreamPack SDK.

Features

  • Publish streams over SRT with dynamic/adaptive bitrate algorithm from Belabox or Moblin.
  • RTMP as video/audio source - restream RTMP feed from action cameras as SRT HEVC with great dynamic bitrate.
  • A lot of features come from StreamPack by default, check the list here.

LifeStreamer screenshot

Discord server: https://discord.gg/2UzEkU2AJW

Apps that can work together

See the demo video on YouTube.

  • MediaSrvr - Runs RTMP server on Android phone. You can publish RTMP stream to it from an action camera, for example.
  • LifeStreamer - Can use RTMP as source: playback RTMP stream from server and restream it as SRT with great dynamic bitrate.
  • Bond Bunny - You can use LifeStreamer to publish SRT stream into Bond Bunny app. Bond Bunny accepts SRT as input and forwards packets to SRTLA server like Belabox Cloud. Uses multiple networks to improve stream quality.

How to install

For now, I'll be releasing APK files using GitHub releases.

Open GitHub releases page on your phone, download APK and install.

My goals

My original motiviation for this project was to improve live streaming for action cameras like DJI Osmo Action 4 or GoPro. As of now (September 2025) they can only stream RTMP which usually diconnects a lot on unstable internet. I want to restream RTMP as SRT HEVC with great dynamic bitrate algorithm. That should fix it.

I am building an app for myself that other people can use too. I'll be focusing on main core functionality, not gimmicky features.

Top priorities:

  • Great dynamic aka adaptive bitrate algorithm.
  • Foreground service / background mode.
  • RTMP as video/audio source.

Stretch goal: USB/UVC as video/audio source.

Roadmap

I've started with original camera demo from StreamPack. I'm tweaking it and adding new features on top of it.

Main implemented features

  • Dynamic/adaptive bitrate. I added Belabox and Moblin algorithms. Can be changed via Settings.
  • Background mode (foreground service) to allow streaming with app in background, phone locked and screen off.
    • Status: usable, needs performance improvements.
  • RTMP as source.
    • Status: stable.
    • Run RTMP server on your device using MediaSrvr app.
    • Stream RTMP from action camera to RTMP server.
    • Give LifeStreamer RTMP URL to that server to play and it will use it as video/audio source.
    • There are many things that can go wrong with RTMP source. I think it's working pretty good now.
  • Reconnect on disconnect.

Planning to implement next

  • Polish existing functionality and user flows.

Why StreamPack

Main features StreamPack provides out of the box that make sense to have as a base for this project:

  • Ability to stream via SRT or RTMP.
  • H.265 (aka HEVC) or H.264.
  • Basic dynamic bitrate algorithm for SRT (it calls it "bitrate regulator").
  • Foundation for implementing service to allow continue streaming in background with phone locked and screen off.
  • It's designed to be extendable with custom video and audio sources.

Demo apps

StreamPack includes 2 great demo apps that can use phone cameras or screen recorder for live streaming.

Project status update 19 October 2025

Applies to LifeStreamer v0.4.1.

  • ✅ Dynamic bitrate

    • 3 algorithms added: Belabox, Moblin fast, Moblin slow. All seems to work well. Still testing.
    • Algortihm can be configured in Settings.
    • When "bitrate regulation" is enabled the only bitrate setting that is used is maximum bitrate under "bitrate regulation".
  • ✅ RTMP as source

    It was stabilised a lot in the recent versions:

    • You can switch inputs to/from RTMP source with confidence - doesn't glitch out.
    • UI was updated to explain what it is going on with RTMP stream.
    • If you stop/start RTMP source stream LifeStreamer should handle it w/o issues.
    • Retries for playing RTMP stream.
    • Etc.

    Be careful with background mode when using RTMP as source. RTMP source by itself should be fine, but background mode has performance limitations. I recommened monitoring the stream on the 2nd phone. Do not use streaming phone for anything else as much as possible, keep LifeStreamer app open (in foreground) for best performance.

    What works:

    • Start RTMP server.
    • Start action cam stream to RTMP server.
    • Kill LifeStreamer app/service. (Optional, just to get super clean app state before starting.)
    • Start LifeStreamer app.
    • Switch to RTMP source.
    • Start the stream from LifeStreamer.
    • Notes:
      • If you use Bond Bunny make sure to use version like v1.0.5 it had some important updates to work better.
      • Works on my Samsung S20 FE on a usable cell signal (assuming phone is not too hot, so no CPU throttling).
  • ⚠️ Background mode

    It already works well if you don't get greedy and push video settings too far.

    Phone has a lot less CPU and other resources available to apps in the background. Either lower your video endcoder settings if you want to use other apps on your phone while streaming OR avoid using other apps to not compete for resources.

    Looks like there is no magic fix - performance optimisations required.

    Example. My phone is Samsung S20 FE. I stream full HD 30fps.

    • If I don't use phone/apps: it works w/o issues at 6000 kbps - I wouldn't set it higher.
    • If I want to use maps, browser, etc. during the stream: 2500 kbps max bitrate seems to work without major glitches.

    Note: Max/target bitrate under bitrate regulation in settings can be changed on the fly during the stream - no need to restart the stream to apply.

    Otherwise, stream can have visual glitches and stuttery audio. Workarounds:

    • Stay in the foreground as much as possible.
    • Don't go into background at all.
  • ✅ Reconnect on disconnect

    Should be pretty stable. Still testing. It affected many user flows.

Recommended solutions to most issues

There are bugs. General workaround for all of them: kill LifeStreamer app/service and start fresh. Sometimes something in settings glitches out - wipe app data or reinstall.

Minimise transitions between foreground/background and stay in foreground for better performance with screen on and phone unlocked until background mode performance is optimised OR embrace background mode limitations.

Settings can be changed during the stream, but won't apply until you restart the stream.

Goal for near future is stabilising as much as possible and making sure it's solid. It will take some time to refine.

Use recommended workarounds if you encounter issues.

About

Live streaming app for Android based on StreamPack SDK

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages