A start-up in security cameras needed an Android Application to view live camera feeds with ability to stream the content to web browser using WebRTC.
Results / Outcomes
- Developed Android application with support for RTSP and WebRTC
- Support local playback of video, and capturing images and videos
- Developed WebRTC server application with user interface to list active cameras and view the stream
- Android, NDK, RTSP, WebRTC, H.264, AAC, Opus, transcoding, Socket programming
- Implementing a mechanism to forward video to WebRTC without need for transcoding.
- Transcoding AAC audio from camera to Opus for WebRTC as WebRTC does not support AAC
Android application development
- Discover camera by listening to UDP beacons and listing them. Connect to the user selected camera. Display the live video stream on the app UI.
- Configure the camera through WiFi APIs. Various options like Resolution, Video quality, Photo size, Photo quality etc can be configured. Option to download images and videos from Camera to the Android Gallery. Option to record the media locally from the incoming RTSP stream.
- Generate and display media thumbnail for videos and photos. Implement Audio only mode.
- Implement live streaming to WebRTC on user tap. Continues to play video on the screen. Streaming continues even when app is in background. App implements H.264 frame forwarding from RTSP to WebRTC. Audio is transcoded from AAC to Opus.
Cloud application development
- Google Cloud platform is used for WebRTC Web server and for Signalling server. Implemented Web socket based signalling server. Used STUN/TURN servers for NAT/Firewall Traversal.
- WebRTC Web server has the following features:-
- UI page to view the live stream from camera
- UI page to list all the active live streams from different cameras
- Provision to record the live stream
Media Flow through the App