Live streaming app for Android designed for IRL streaming based on StreamPack SDK.
- Restream RTMP feed or USB video/audio (UVC) from action camera like DJI Osmo Action 4 as SRT HEVC/H.265 with amazing dynamic/adaptive bitrate algorithm from Belabox or Moblin.
- Can use SRTLA bonding via Bond Bunny app.
- Can use feed from any RTMP or SRT server as source. For Android I built MediaSrvr app that can run RTMP server on Android devices.
- USB as source. Works with DJI Osmo Action 4 in 'Webcam' mode when connected to phone with one USB-C to USB-C cable. Also can work with Elgato Cam Link even when connected via USB hub. Feel free to test other UVC devices, like capture cards. I will mostly target DJI OA4 and Cam Link for now. Note: phones can lower USB audio quality when USB video is used.
- Background mode (foreground service) allows streaming with app in background, phone locked and screen off. (Phone limits access to resources in this mode, so performance is worse. Test first and consider lowering video encoder settings and bitrate.)
- Aggressive infinite reconnect when app loses connection.
- Audio monitoring for all audio sources.
- Switch between all video and audio sources while streaming.
- A lot of features come from StreamPack by default, check the list here.
Share ideas or report issues in Discord https://discord.gg/2UzEkU2AJW or create Git issues.
- Phone cameras.
- RTMP video. Watch RTMP source demo.
- SRT video.
- USB Video (UVC). Watch USB source demo.
- Built-in phone microphones.
- USB audio: USB headphones, USB audio interfaces, wireless mic receivers, etc.
- With USB video LifeStreamer is using USB audio from USB camera if available.
- Mics from Bluetooth headphones, earbuds, etc.
- For RTMP and SRT sources app uses Media Projection Audio to record RTMP/SRT player audio - kind of like phone screen recorder.
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.
For now, I'll be releasing APK files using GitHub releases.
Open GitHub releases page on your phone, download APK and install.
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.
I've started with original camera demo from StreamPack. I'm tweaking it and adding new features on top of it.
- 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.
- Alternatively, run MediaMTX in Termux. Watch video to see how to set it up.
- 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.
- USB video/audio as source. Watch USB source demo.
- Audio monitoring for all sources.
- Polish existing functionality and user flows.
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.
StreamPack includes 2 great demo apps that can use phone cameras or screen recorder for live streaming.
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 modeIt 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.
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.
- IRL Pro (free)
- Larix Broadcaster (subscription)
- Larix Screencaster (subscription)
- Can do HDMI/USB/UVC as input:
- USB Camera (free with ads) / USB Camera Pro (one-time payment to remove ads)
- CameraFi (free version with ads or subscription)
There are existing chat apps for Android like Stream Buddy. I suggest you do side-by-side view with LifeStramer and chat app if your phone has this feature or use 2nd phone for chat.
I highly recommend adding overlays in OBS that restreams SRT.
In theory yes, but there are many benefits to having them separate, so no plans to combine. In general, I'm not a big fan of idea of having everything in one app. I'd rather have different focused apps each doing particular thing really well.
