We are vendor of a browser-based Digital Asset Management system and we intend to extend the video capabilities of our software. Thus we are looking for contract work with someone who has extensive video streaming skills. Our aim is to implement progressive download of MPEG4/H264 files from IIS with time-shifting seek and bandwidth shaping. This new video streaming function has to be implemented with .NET4.5/Visual Studio 2012.
The objective of this assignment is a stand-alone C# solution which is able to stream MPEG4/H264 files and seek not yet downloaded positions of the video for different browsers and mobile devices as a proof of concept. The contractor does not have to interact with our software nor understand anything of it. Our developers will adapt the code from this sample solution into our software.
Product requirements: The requirements for this solution are:
- Development environment: .NET 4.5 (C#), Visual Studio 2012, Project type "ASP.NET Web Forms Application", Windows Server 2008, IIS 7.5 (x64) (temporary licenses provided upon request)
- Progressive download (http) of MPEG4/H264 files with any size from IIS 7.0, 7.5 and IIS 8.0 (x64) to the following browsers (RTMP (Real time messaging protocol) cannot be used because it’s mostly blocked by firewalls):
o Windows: IE 7, IE 10.0.4, Chrome 26.0.1410.64, Firefox 20.0.1 o OS X: Safari 6.0.4, Chrome 26.0.1410.64, Firefox 20.0.1 o Android: Chrome 26.0.1410.58 (ARM, x86) o iOS: Safari 6.0.4
Please note that every client sends other header data to the website (Accept-Ranges, QueryString, etc.) which all have to be correctly handled by the Aspx website.
- Timeshifting seek: It must be possible to immediately jump to and play back from any precisely defined part of the video regardless of the length of the video or whether it has been completely downloaded yet (often referred to as pseudo streaming). The playback of the media has to start immediately, i.e. before the download up to the specified position has completed.
- Bandwidth shaping: When streaming a video only the bandwidth required to view the video over the network should be used (besides a ptre-defined amount of seconds play length that is buffered).
- Adaptive bitrate streaming (optional only): Detect the client’s bandwidth and CPU capacity in real time and adjust the quality of the video stream accordingly. This requires the use of an encoder which can encode a single source video at multiple bit rates. The player client switches between streaming the different encodings depending on available resources.
- All parts of the provided solution have to run in 64bit mode. There is a H264 Streaming Module for IIS. Unfortunately this module can’t be used because it’s 32bit only and does not support IIS 8.0.
- No use of 3rd party components which aren't free for commercial use and clear declaration of any components or code from 3rd parties, even if free/open source.
- Please note that we need the ability to plug custom code into those web requests (e.g. for authentication). Maybe this can be easily achieved or probably a special mechanism like HttpModule has to be provided to do this.
If you are interested, please send us a quote and possible date by when this job may be done.