The Eagle Eye Viewer is an android app that allows you to access both live and recorded video from your Eagle Eye Security Camera VMS. Similar to the web application, users can access multiple locations in a single view. The Eagle Eye Security Camera VMS allows you to use any ONVIF Profile S compliant camera and analog cameras as well. All of your security videos are safely stored in the cloud. Along with that, Eagle Eye includes a Restful API for integration with both third party and custom applications.
Native HLS video player to stream videos:
Knowing the fact that android does not support HLS streaming natively and since Eagle eye was supposed to be a live camera application, it was crucial for us to stream the latest frames in real time. We tried many open source native video players available in the market to but most of them were incomplete projects. It was a challenge for us to make something novel in order to support all android devices.
Streamline the method of downloading videos:
We were receiving the video lists in a random manner in .m3u8. It ended up being a lengthy process for us to decode the .m3u8 file and then get video urls. We could not afford spending more time in fetching the video lists as it would further delay the streaming of live videos.
Custom scrollbar for History screen:
In order to view the history, the screen demanded a custom layout on screen. To do that We had to feature a component in the scrollbar at the bottom of the application. It would show time, date and seconds as per the user’s selection.
Pinch and grow camera:
In order to pinch the camera on finger touch, we required to zoom the camera layout according to the pinch of finger. The frame’s change ratio was 2 sec per one frame, and it would occupy huge amount of memory if we decide to go through protocol defined to load and zoom the camera. Our task was to work on the memory management as it was a critical aspect of the mobile application.
In order to stream native HLS video, we made our own native video player by using C++. We considered Dolphin player for reference which is an open source video player. Fortunately, android supports HLS streaming from 4.1 and later versions. Hence, we used that custom player for those devices that did not support HLS.
We came across a technique to receive the video by making custom .m3u8 parser and tried to remove redundancy of video URL to prevent duplicate videos. It was a very tricky part to wait for the next video until we get some live videos to play and show it to the user. At that point of time, we had to take care of irreverent server call to avoid server load.
We had to make our own custom design which was generated programmatically and according to the chosen option. We modified some of the provided component in android sdk which was quite challenging work for us.
The idea behind loading the real time zoom of camera was to cache the memory in real time. As we zoomed the camera, the frame started manipulating according to zoom level. This way we could release the memory which was occupied by old images.
We came up with an affluent security application in which we were able to incorporate resourceful features such as viewing live video, viewing recorded video, history browser indication motion, pinch zoom in of real time videos and updating video layouts. In order to minimize the time spent in fetching videos, we managed to create a customized native video player that was supported by all android devices. This leveraged the efficiency of the application to a great extent. Also, managing the storage or network settings at the local sites was made easy as all security videos could be safely stored in the cloud. This high level security app backed by unmatched functionalities has managed to grab 4.2 ratings till date on the Google play with mostly positive reviews as well.