Building a Mobile Video Surveillance App with RTSP and ONVIF Integration

When developing a mobile app for IP camera video surveillance, the core challenge is selecting the video stream protocol: **RTSP** for local cameras, HLS/DASH for cloud, WebRTC for minimal latency. The wrong choice leads to audio desync, high data consumption, or broken push notifications. We'll bre

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Building a Mobile Video Surveillance App with RTSP and ONVIF Integration
Complex
from 2 weeks to 3 months

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    599

When developing a mobile app for IP camera video surveillance, the core challenge is selecting the video stream protocol: RTSP for local cameras, HLS/DASH for cloud, WebRTC for minimal latency. The wrong choice leads to audio desync, high data consumption, or broken push notifications. We'll break down each protocol and show how to implement them on iOS and Android, including motion detection and video recording.

A mobile video surveillance app is a complex integration of network protocols, cameras, and mobile capabilities. Correct RTSP stream configuration determines whether the user sees real-time video. Our team has extensive experience in this domain, with over 50 delivered projects. Our tech stack includes ExoPlayer, VLCKit, FFmpegKit, along with ONVIF integration and custom camera discovery solutions. Pinpoint your case for a tailored solution.

Choosing a Streaming Protocol

Protocol Latency Mobile Support Use Case
RTSP <1 s ExoPlayer (Android), VLCKit/iOS Local cameras
HLS 5-30 s Native AVPlayer Cloud cameras
WebRTC <500 ms WebRTC libraries Ultra-low latency required

For local cameras, RTSP is the typical choice — low latency and wide compatibility. However, implementing it on mobile requires additional libraries.

RTSP: Video Decoding on Mobile

RTSP streams from cameras contain H.264/H.265 video wrapped in RTP packets. Neither iOS nor Android has a native RTSP player. Options:

Android: ExoPlayer with extension-rtsp (Media3 1.0+) is about 2x faster in decoding than VLC for Android SDK (libvlc-android). ExoPlayer handles most H.264 cameras, but with H.265 some RTSP servers may throw SOURCE_ERROR due to non-standard SDP attributes.

iOS: AVPlayer does not support RTSP. Workarounds: VLCKit (functional but binary ~20 MB), FFmpegKit with native FFmpeg compilation (heavier but flexible), or a custom RTSP client on RTP/UDP via Network.framework. The last is labor-intensive but gives full control over buffering and latency.

Library Platform RTSP Support Size License
ExoPlayer Media3 Android Yes (extension) ~2 MB Apache 2.0
VLCKit iOS Yes ~20 MB LGPL
FFmpegKit iOS/Android Yes (build) ~30 MB LGPL/GPL

Why ONVIF is the Standard for IP Cameras?

ONVIF is an international standard for IP cameras (Hikvision, Dahua, Axis, Reolink). Profile S defines GetStreamUri, GetSnapshotUri, PTZ control. WS-Discovery for device discovery on the local network. According to ONVIF Profile S, GetStreamUri returns the RTSP URL for each camera.

Example WS-Discovery on Android (Kotlin)
// Android: WS-Discovery multicast class ONVIFDiscovery { private val MULTICAST_ADDRESS = "239.255.255.250" private val MULTICAST_PORT = 3702 suspend fun discoverDevices(timeout: Long = 3000): List<ONVIFDevice> { val socket = MulticastSocket(MULTICAST_PORT) socket.joinGroup(InetAddress.getByName(MULTICAST_ADDRESS)) socket.soTimeout = timeout.toInt() val probeMessage = buildWSDiscoveryProbe() val packet = DatagramPacket( probeMessage.toByteArray(), probeMessage.length, InetAddress.getByName(MULTICAST_ADDRESS), MULTICAST_PORT ) socket.send(packet) val devices = mutableListOf<ONVIFDevice>() val buffer = ByteArray(4096) try { while (true) { val response = DatagramPacket(buffer, buffer.size) socket.receive(response) parseWSDiscoveryResponse(String(response.data, 0, response.length)) ?.let { devices.add(it) } } } catch (e: SocketTimeoutException) { /* normal */ } socket.close() return devices } } 

To obtain the RTSP URL: SOAP request GetStreamUri with WS-Security (Digest auth). The onvif4java library simplifies, but often lags behind current camera firmware — we prefer writing a custom SOAP client on Retrofit with a custom converter.

Multi-Camera Viewing

A grid of 4 or 9 simultaneous cameras is a heavy task. Each RTSP stream requires a separate decoder. On Android with 9 Full HD cameras, we risk exhausting hardware decoders (typically 4–8 per chip); the rest fall back to software decoding, dropping FPS to 5–10.

Solution: For the grid, use MJPEG snapshots via ONVIF GetSnapshotUri, updating every 2–3 seconds instead of full video streams. Full RTSP is activated only when tapping a camera to enter full-screen mode. This balances load and informativeness.

Recording and History: Local and Cloud Storage

Recording clips from the camera to the phone: download via ONVIF GetRecordings or ISAPI (Hikvision). Store locally in MediaStore (Android 10+) or Photos Library (iOS). For cloud cameras, direct MP4 links from the manufacturer's cloud.

Motion detection: either hardware-based (in the camera, events via ONVIF Event Service) or software-based on the mobile by comparing YUV differences between frames. Hardware detection is more reliable — fewer false alarms.

What's Included in Development

  • Analysis of camera models and ONVIF compatibility
  • Protocol selection and RTSP stream configuration
  • Multi-camera grid with MJPEG snapshots
  • Integration of recording and motion detection
  • Publication to App Store and Google Play
  • Technical documentation and team training
  • Post-release support (optional)

Step-by-Step RTSP Viewing Implementation

  1. Check which protocols your cameras support (RTSP, ONVIF, HLS).
  2. Choose a player: for Android — ExoPlayer with RTSP extension, for iOS — VLCKit or FFmpegKit.
  3. Configure buffering for minimal latency (target under 500 ms).
  4. Test on different cameras and network conditions.
  5. For multi-camera modes, implement MJPEG snapshots to conserve resources.

Timelines and Costs

Development of a mobile app with RTSP viewing of a single camera and basic ONVIF control: 4–5 weeks (starting at $5,000). Multi-camera system with WS-Discovery, PTZ control, recording history, and push alerts for motion: 8–12 weeks ($15,000-$25,000). Costs are calculated individually after analyzing your camera models and storage requirements. Using off-the-shelf libraries saves up to 40% of development time compared to building a custom RTSP client. Get a consultation for your project — we'll estimate timelines and costs.

Our experience in video surveillance app development spans over 50 successful projects for Hikvision, Dahua, Axis, Reolink cameras. We guarantee compliance with App Store Review Guidelines (Sections 4.2/5.1) and data security.