How pedrosg94/rootencoder works
RootEncoder is an Android audio/video streaming library. An application selects a source and stream API, prepares media capture and encoding, then sends encoded audio/video to a server over RTMP, RTSP, SRT, UDP/MPEG-TS, or WHIP; it can also record locally. The graph includes documented source, filter, recording, and monitoring capabilities. The README and file tree establish those product areas, but most implementation files were not sampled, so protocol-internal wiring is intentionally omitted.
Main entry points: RtmpStream.kt Protocol facades · StreamBase.kt Stream APIs · sources Media sources · VideoEncoder.java Media encoders
Components 20
Streaming API
- Stream APIs
library/src/main/java/com/pedro/library/base/StreamBase.kt - Protocol facades
library/src/main/java/com/pedro/library/rtmp/RtmpStream.kt - Recording
library/src/main/java/com/pedro/library/base/recording/RecordController.kt
Media pipeline
- Media sources
encoder/src/main/java/com/pedro/encoder/input/sources - Extra sources
extra-sources/src/main/java/com/pedro/extrasources - Camera capture
encoder/src/main/java/com/pedro/encoder/input/video/Camera2ApiManager.kt - Audio capture
encoder/src/main/java/com/pedro/encoder/input/audio/MicrophoneManager.java - GL rendering
encoder/src/main/java/com/pedro/encoder/input/gl/render/MainRender.kt - Realtime filters
encoder/src/main/java/com/pedro/encoder/input/gl/render/filters - Media encoders
encoder/src/main/java/com/pedro/encoder/video/VideoEncoder.java
Protocols
- RTMP client
rtmp/src/main/java/com/pedro/rtmp/rtmp/RtmpClient.kt - RTSP client
rtsp/src/main/java/com/pedro/rtsp/rtsp/commands/CommandsManager.kt - SRT client
srt/src/main/java/com/pedro/srt/srt/CommandsManager.kt - UDP transport
udp/src/main/java/com/pedro/udp/CommandManager.kt - WHIP client
whip/src/main/java/com/pedro/whip/webrtc/CommandsManager.kt
Shared support
- Codec and frames
common/src/main/java/com/pedro/common/frame/MediaFrame.kt - Stream statistics
common/src/main/java/com/pedro/common/StreamingStatsMonitor.kt - FLV recording
library/src/main/java/com/pedro/library/util/FlvMuxerRecordController.kt
Other components
- Android app
- Media server
Connections 25
- Android app → Stream APIs: configures
- Stream APIs → Media sources: selects source
- Stream APIs → Media encoders: prepares encoding
- Stream APIs → Protocol facades: starts stream
- Media sources → Camera capture: captures video
- Media sources → Audio capture: captures audio
- Extra sources → Media sources: provides sources
- Media sources → GL rendering: provides frames
- GL rendering → Realtime filters: applies effects
- GL rendering → Media encoders: renders video
- Audio capture → Media encoders: provides audio
- Media encoders → Codec and frames: emits frames
- Protocol facades → RTMP client: dispatches RTMP
- Protocol facades → RTSP client: dispatches RTSP
- Protocol facades → SRT client: dispatches SRT
- Protocol facades → UDP transport: dispatches UDP
- Protocol facades → WHIP client: dispatches WHIP
- RTMP client → Media server: streams media
- RTSP client → Media server: streams media
- SRT client → Media server: streams media
- UDP transport → Media server: streams media
- WHIP client → Media server: streams media
- Stream APIs → Recording: starts recording
- Recording → FLV recording: selects FLV muxer
- Codec and frames → Stream statistics: tracks throughput