/Android-RTSP-IPCam-Viewer

Android app to view RTSP and RTMP IP camera video streams.

Primary LanguageJavaGNU General Public License v2.0GPL-2.0

Android app to watch RTSP and RTMP video streams; these formats are typical of inexpensive IP security cams.

Background

  • tinyCam PRO by Tiny Solutions LLC
    • is great
    • is the defacto standard for this kind of app
    • is inexpensive ($4 MSRP, occasionally $1 on sale)
    • cons:
      • none
        • this a personal quirk..
          • I prefer to not add Google account(s) to most of my Android devices
  • IP Cam Viewer by Robert Chou
    • has pretty good reviews
    • is the go-to free option for this kind of app
    • available variations:
      • limited functionality w/ ads
        • Basic
          • uses Google's in-app purchase to upgrade
        • Lite
          • uses an unlock code to upgrade
      • full functionality w/o ads
    • cons:
      • size of APK is over 25MB
      • requires a lot of permissions
      • most buttons/features are crippled
        • open a prompt to purchase pro license
      • basic functionality is (imho) not very impressive
  • there are no (good) open-source options

Goals

  • an extremely light-weight open-source app
    • minimal features
    • minimal UI
  • ability to add video streams
    • data structure:
      • required fields:
        • name
        • low-res video stream URL
      • optional fields:
        • high-res video stream URL
        • is enabled?
    • data import methods:
      • manual entry via dialog
      • import via text file (JSON format)
  • display of enabled video streams:
    • list view of low-res video streams
    • grid view of low-res video streams
      • number of columns is configurable
    • full-screen view of a single high-res video stream
      • (TBD) ability to zoom/pan
      • (TBD) ability to record to external SD card

Notes

  • minimum supported version of Android:
    • Android 4.1 Jelly Bean (API 16)
  • when videos are displayed in list/grid views:
    • Android status bar is visible
    • audio is disabled
    • video playback controls are disabled
  • when a video is displayed in full-screen view:
    • Android status bar is hidden
    • audio is enabled
    • video playback controls are enabled

Usage

  • activity: list of all video streams
    • action bar
      • icon: ic_add_video
        • click to add new video stream
      • overflow menu: Open List
        • display all enabled video streams in a single-column vertical list
      • overflow menu: Open Grid (2 col)
        • display all enabled video streams in a two-column grid
      • overflow menu: Open Grid (N col)
        • display a dialog to allow the user to specify the integer value of N
        • display all enabled video streams in a N-column grid
      • overflow menu: Read File
        • display a file chooser to allow the user to specify the path to a JSON file
        • parse the JSON to obtain an ordered list of new video streams
        • append the new video streams to the list of all video streams
      • overflow menu: Exit
        • exit the application
    • any video stream in the list
      • swipe (left or right) to remove
        • permanently deletes record of the video stream
      • drag (up or down) to change ordered position in list
        • modified order is persistent
      • click (single, short) on the checkbox to toggle: enabled
      • click (single, short) on the name to edit
  • activity: list of all enabled video streams
    • any video stream in the list
      • swipe (left or right) to remove
        • temporarily hides the video stream
        • its record is not altered
        • the video stream will be visible once again when the list is recreated
      • drag (up or down) to change ordered position in list
        • modified order is temporary
        • the order of records is not altered
        • the video stream will appear in its original ordered position once again when the list is recreated
      • click (single, long) to toggle: pause/play
      • click (single or double, short) to open in full-screen view
  • activity: grid of all enabled video streams
    • any video stream in the grid
      • click (single, long) to toggle: pause/play
      • click (single or double, short) to open in full-screen view
  • activity: full-screen view of a single video stream
    • video surface
      • click (single, short) to toggle: display of the video playback controls
        • which are automatically hidden after a brief timeout

Screenshots

MainActivity MainActivity MainActivity MainActivity FilePicker ListActivity GridActivity

GridActivity GridActivity VideoActivity

Credits

Legal