Live streaming demand has exploded, particularly in mobile-first regions. However, most professional broadcasting solutions remain heavily desktop-centric. Open Broadcaster Software (OBS) is powerful but bulky, complex, and unsuited for creators on the move.
Mobile creators were forced to juggle multiple disconnected applications to stream across different networks, manage their assets, and view metrics. There was no simple, mobile-first solution that combined multi-destination streaming, local video editing, and reliable, low-latency live broadcasting in a single package.
We developed LivCast, a mobile live streaming app built in React Native (Android/iOS) that allows content creators to broadcast live feeds or pre-recorded videos to multiple destinations simultaneously.
By implementing an on-device media processing pipeline powered by FFmpeg, creators can edit their videos, schedule broadcasts, and optimize stream parameters directly from their phones.
I designed the on-device video compilation layer using FFmpeg. When a video is selected, the application calls native processes to crop, trim, rotate, and compress the asset.
For instance, to extract dynamic preview thumbnails from video files, we run:
# Extract a frame at the 5-second mark with high qualityffmpeg -ss 00:00:05 -i input.mp4 -vframes 1 -q:v 2 output_thumbnail.jpg
I implemented the Facebook Graph API and YouTube Data API integrations, solving complex OAuth permission models and automated stream creation workflows.
To stream pre-recorded assets to multiple endpoints, I configured a multiplexed RTMP forwarding command:
# Stream input.mp4 continuously to Facebook and YouTube RTMP targets using the tee muxerffmpeg -re -i input.mp4 \ -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 60 \ -c:a aac -ar 44100 -b:a 128k \ -f tee -map 0 "[f=flv]rtmp://youtube_stream_url/key|[f=flv]rtmp://facebook_stream_url/key"
YouTube and Facebook enforce different audio/video encoding guidelines (e.g., specific GOP size, constant frame rates, and AAC audio profiles).
Solution: We created a modular transcoding profiles builder. Depending on the active targets selected, our FFmpeg bridge dynamically compiles parameters matching all platform guidelines (forcing -g 60 for 30fps stream rates).
Uploading files larger than 1GB regularly timed out on unstable mobile network connections.
Solution: Built a progressive chunked upload pipeline. We split assets into 5MB parts locally, loaded them via an optimized background WebView, and routed them to AWS S3 buckets. Failed parts were automatically retried from the checkpoint.