Android application for viewing RTSP streams from IP cameras with hardware-accelerated H.264/H.265 decoding.
- Video: RTSP playback, H.264/H.265 hardware decoding via MediaCodec
- Audio: PCM, AAC (ADTS), G.711
- Display modes: Single camera, Quad (4 cameras simultaneously)
- Controls: Pinch-to-zoom, pan, double-tap reset, Android TV remote (Leanback)
- Network: TCP, automatic reconnection with exponential backoff, Basic auth
- WebUI: Built-in browser for camera web interface access
- Additional: Long-press screenshot, status indicators, object pooling, 4 camera slots
- Android 5.0 (API 21) or higher
- IP camera with RTSP support
- Install the application on your Android device
- Launch the application
- Tap the screen to open the menu
- Configure camera URL in the format:
rtsp://username:password@ip_address:port/stream - Select transport (TCP only)
- Tap camera number to activate
cd android && ./gradlew assembleReleaseSet environment variables for release signing:
export KEYSTORE_PASS=your_password
export KEY_ALIAS=your_alias
export KEY_PASS=your_key_password- 1-8 — camera slot selection
- Settings — advanced settings
- Transport — set RTSP URL
- Quad — enable/disable quad mode
- WebUI — open camera web interface
- Long-press — take screenshot
- Exit — exit application
Simultaneous viewing of up to 4 cameras with individual settings per cell. TCP transport only. Audio is disabled to reduce resource usage.
Multi-threaded processing on a fixed thread pool (5 threads): network I/O, watchdog, video decoding, audio playback, AAC decoding. Hardware video decoding via MediaCodec. Object pooling (FramePool) minimizes GC pressure. Quad mode creates dedicated per-cell pipelines (3 threads each).
- Credentials stripped from RTSP request URIs, sent only in
Authorization: Basicheader - Resource cleanup on pause/stop: sockets closed, executor threads shut down, codecs stopped/released
- Global
UncaughtExceptionHandlerprevents silent crashes
Please send information about devices where the program was tested only in this format:
Device type, Manufacturer and Model, Android Version, Kernel Version
- Phones
- Asus ZC553KL, Android 8.1, Kernel 3.18.71
- Blackview BV4900Pro, Android 12, Kernel 4.19.191
- Oppo 5X, ColorOS 15.0, Kernel 5.15.149
- Oppo A17, ColorOS 12.1, Kernel 4.19.191
- Samsung Galaxy A51, Android 13, Kernel 4.14.113
- Samsung Galaxy M21 (SM-M215F/DSN), Android 12, Kernel 4.14.113
- Samsung Galaxy S25, Android 15, Kernel 6.6.30
- Samsung A55 5G, Android 14, Kernel 6.1.93
- Samsung Galaxy J7, Android 10, Kernel 3.18.150
- Samsung S8, Android 9, Kernel 4.4.153
- Samsung S23 Ultra, Android 15, Kernel 5.15.153
- Xiaomi Redmi 7A, Android 10, Kernel 4.9.261
- Xiaomi Redmi Note 7 (M1901F7G), Android 10, Kernel 4.4.192
- Xiaomi Redmi Note 13 4G, Android 13, Kernel 5.15.94
- Tablets
- Lenovo TB-X304L, Android 8.1.0, Kernel 3.18.71 (image cropped at edges)
- Lenovo TB-X606F, Android 10, Kernel unknown (image cropped at edges)
- Lenovo Tab P11, Android 11, Kernel 4.19.157-perf+ (image cropped at edges)
- Samsung Galaxy Tab A, Android 7.1.1, Kernel 3.10.49
- Samsung Galaxy Tab A, Android 11, Kernel 4.9.227
- Samsung Tab A7 (SM-T505), Android 12, Kernel 4.19.157-perf-
- TVs and Set-top Boxes
- A95X F3 AIR, Android 9, Kernel 4.9.113, SlimBOXtv AOSP 9.14 without GAPPS
- IE X3 Air, Android 9, Kernel 4.9.113, SlimBOXtv AOSP 9.14 without GAPPS
- Haier Candy Android TV 2K, Android 11, Kernel 4.9.243+ (no icon in device apps)
- SberBox SBDV-00001, Custom ?, Kernel 4.9.228
- TV Box X96Q, Android 10, Kernel 4.9.170 (original H313 SoC)
- Yandex TV Novex NVX-55U169TSY, Android 7.1.1, Kernel 4.4.3
- Car Devices
- Media Center JCAC10003, Android 12, Kernel 3.18.79+ (SoC ac8227/ac8229)
- Mirror Z55, Android 8.1.0, Kernel 4.4.83
It has been noticed that the Decoder application may sometimes use some GAPPS components/libraries, so do not disable them or do it consciously. Research in this area is highly encouraged!
The Prosperity Public License 3.0.0. See LICENSE.md for details.
- Documentation: openipc.org
- Source code: github.com/OpenIPC/decoder
- Questions and suggestions: via GitHub Issues
- Telegram: OpenIPC Channels
