**We need vc++ expert to carry out following small todos to our streaming application with following components: encoder client, media server, viewer activex...****similar to flash m#edia e#ncoder/ W#owza/ flash media player.
There will be EXCELLENT bonus and long term projects if you do this job even with reasonable success. (If you are not comfortable with 1 or 2 todos, do let me know and we can consider leaving them out of scope)
**Todo list is attached**
Let us know if any queries.**
Existing qualities of the current APP:
- Supports rtsp, http, rtmp, h264 and webm streaming.
- Supports professional camera through video capture cards/ devices like ezcap dc60.
- Great a/v in sync quality for small as well as large video resolutions.
- Live video Delay is <2 second and supports network latency as high as 800ms.
- Video does not freeze or buffer and there are no distortions.
- Bandwidth use is between 110kbps for CIF (352x288, 30qmax, 20fps), and around 500kbps for 1280x720 (30qmax, 20fps)
- Works through firewalls and proxies as it streams on port 80
- CPU usage on encoder/viewer not more than 30% for core 2 duo, 1GB box.
TODOS: These are really very simple todos for a vc++ expert.
1 - File save and VOD support in server app: Add file save and VOD support for media server app exactly on the lines of w#owza...files can be saved in either mp4 or avi format.
2 - Logging: Implement logging exactly on the lines of wi#ndows media services...same details to be captured and saved.
3 - implement simple "get audio from video source feature". Benchmark AMCAP/ f#lash media encoder for the situation like firewire connected profession cam where they deal with devices that show up on video source list but don't show up on audio source list.
4 - encoder app already has video file as source feature but currently it can only be used along with webcam source as picture in picture. your task is to make whatever simple change required to allow video file to be used as independent source. (Implementing #6 may automatically take care of this.)
5 - Currently app supports video streaming from live capture device like webcam, professional cam, dvd etc., and doesn't support intaking and transcoding external/3rd party live streams/ip camera feed in to currently implemented h264 standard in app. Your todo is to add support transcoding external feeds: 1) we should be able to specify remote video stream urls in client interface...it should transcode and restream videos to media server just like it does it for webcam. 2) If remote video stream urls are specified in server...it will transcode and make them available for viewers 3) If remote video stream urls are specified in viewer...it will simply display them. 3rd party formats support to be added: jpeg, mjpeg, mpeg4, rtp/rtsp, rtmp, asf, mp4.
6 - Transrating: Multiple bit rate/ adaptive bit rate support following way:
Encoder will stream at a selected or lesser (automatic) bitrate(s) depending on either user selection or based on available bandwidth (Through network algorithms (already built in current application which could be used as reference/ enhanced)) with media server. Server will make the stream at same or lesser bitrate to the individual viewers based on following three conditions: 1. Viewer specifically makes its preference known to the server at what bitrate they would like to view the stream (manually/ automatically through network detection) 2. based on available bandwidth , identify viewer capability and render same as encoder or lesser bitrate stream accordingly. 3. As per the bitrate(s) Configured on Server for the given stream.
7 - two benchmarks for viewer app: a) Number Plate Detection - Similar to i#[url removed, login to view]; b) PTZ and other standard function buttons for remotely controlling PTZ cameras - similar to i#spyconnect.com.
8 - Extend Proxy support: Application already works well behind a lot of proxies like spoon, squid etc., a) For Ipcop video/audio is make sure that it will be totally smooth and streaming delay remain same (less than 2 second) as when the app is out of the proxy. b) Application doesn't work in Mikrotik's web proxy. Please make it work. c) Just ensure that it works flawless behind authenticated/non authenticated mode even for the other proxy app like cc proxy and microsoft isa server.
9 - Secure Streaming: Out of all supported protocols at least for one of the protocols like http/ rtsp...Implement Standards based secure streaming either through certificate or tokens so that if somebody unauthorized wiretaps the communication...they get only garbage.
10 - Video Quality of profiles 720x576 and beyond like 1280x720 are good but there is a little freeze and stuck in the video. Enhance the apps so that video is as smooth and good as compared to fme-w#owza-flash setup. Also, besides the existing support of 10s of profiles, add support for widescreen profiles like 480x270, 640x360, 854x480 in the application.
11 - Reduce encoding/ decoding and streaming time so that Streaming delay is reduced to almost zero second from existing 2 seconds in case of local network and in case of latency to server is <200ms. In case of latency to server of around 500sec...delay should be around 1 second. And latency of around 700ms delay should be around 1.5 seconds.
To be given: compiling and fully working [url removed, login to view] 2008 application and reference sources.
Deliverable: compiling and running application as per the requirements above.
- Load the application in internet medium and test the features as mentioned above....also, test for original features to work as is as before.
And few specific tests:
- Start server on LIVE IP.
- start client from behind the NAT.
- Supply internet based public IP CCTV url/ feed in mentioned format to client transcode interface. View it in the viewer for flawless quality as original feed.
- Supply different internet based public IP CCTV url / feed in mentioned format to server transcode interface. and view it in the viewer for flawless quality as original feed.
- Supply 3rd internet based public IP CCTV url / feed in mentioned format to viewer and view it for flawless quality as original feed.
1 - Start the server.
2 - Start encoder in adaptive / multiple bitrate mode.
3 - Start viewers from different bandwidth connections ranging from 50kbps to 1mbps. And observe that instead of buffering or video stuck...low bandwith users watch the video at lower quality and high bandwidth users watch the video at higher quality flawlessly. And test the application as per the other required parameters.
1) Few cars will drive in front of the camera and it will capture the snap shot of number plate in log folder. Also a rectangle box in live view pointing to the number plate. Also, control the camera remotely through various PTZ and other functions.
Test: 1. We will load the server on live IP.
2. stream through encoder using professional camera using ezcap or video capture cards...profiles: 854x480, 1280x720 fps: 30, qmax 25...internet 1mbps, computer: core2duo,2gb
3. View using the viewer on webpage from 10-20 locations and compare the video quality to be excellent like with similar fme-wowza-flash setup using ezcap as per the requirements