Skip to content

OpenIPC/decoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

225 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenIPC logo

OpenIPC Decoder

Build License Platform Telegram

Android application for viewing RTSP streams from IP cameras with hardware-accelerated H.264/H.265 decoding.

Application screenshot

Features

  • 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

Requirements

  • Android 5.0 (API 21) or higher
  • IP camera with RTSP support

Quick Start

  1. Install the application on your Android device
  2. Launch the application
  3. Tap the screen to open the menu
  4. Configure camera URL in the format:
    rtsp://username:password@ip_address:port/stream
    
  5. Select transport (TCP only)
  6. Tap camera number to activate

Building

cd android && ./gradlew assembleRelease

Signing

Set environment variables for release signing:

export KEYSTORE_PASS=your_password
export KEY_ALIAS=your_alias
export KEY_PASS=your_key_password

Settings

Camera Menu

  • 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

Quad Mode

Simultaneous viewing of up to 4 cameras with individual settings per cell. TCP transport only. Audio is disabled to reduce resource usage.

Architecture

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).

Security

  • Credentials stripped from RTSP request URIs, sent only in Authorization: Basic header
  • Resource cleanup on pause/stop: sockets closed, executor threads shut down, codecs stopped/released
  • Global UncaughtExceptionHandler prevents silent crashes

Device Compatibility

Please send information about devices where the program was tested only in this format:

Device type, Manufacturer and Model, Android Version, Kernel Version

Verified Devices

  • 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

GAPPS Compatibility Note

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!

License

The Prosperity Public License 3.0.0. See LICENSE.md for details.

Support

Telegram

About

Miniature and universal H.264 and H.265 decoder for Android devices

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Contributors

Languages