RootEncoder for Android is a stream encoder library that pushes video and audio to media servers using RTMP, RTSP, SRT, and UDP protocols with implementations in Java and Kotlin.
The library solves the problem of encoding and streaming media from Android devices to remote servers. It captures video from camera APIs or alternative sources like files and screen content, applies optional real-time filters and transformations, encodes the streams using hardware or software codecs, and transmits them via multiple streaming protocols. The encoder supports both buffer-to-buffer and surface-to-buffer encoding modes, allowing flexibility in how video data flows through the pipeline.
Developers building Android streaming applications should choose this tool if they need multi-protocol support and codec flexibility. It suits projects ranging from simple camera streaming to complex scenarios involving screen capture, file playback, or dynamic bitrate adjustment during active streams. The library supports a wide range of video codecs including H264, H265, VP8, VP9, and AV1, along with audio codecs such as AAC, HE-AAC, G711, and OPUS. Additional capabilities include real-time OpenGL filters, MP4 recording while streaming, audio processing with noise suppression and echo cancellation, and the ability to switch cameras or disable video and audio without interrupting the stream. An iOS version exists for cross-platform projects.
The project maintains active development with regular updates to the codebase. The maintainer responds to issues and pull requests, indicating ongoing engagement with the user community. Documentation is provided through a project wiki covering configuration and advanced features like real-time filters and file streaming. The library has been actively refined over time, including a rename from its original title to better reflect its expanded protocol support.