Challenge Overview
The Hercules Player is an application that allows customers to download videos to their computer or device for offline playback, along with streaming playback of videos for online playback.
The Hercules Fog project has stripped out some key portions of the Hercules Player application into a new test application for downloading videos from a server, modifying the manifest, and then playing back on various mobile and TV devices.
The current implementation is C++ and will run on:
- Windows
Linux
Mac
Currently, the codebase works only with HLS / M3U8 streams. A separate branch also contains support for MPEG DASH streams, and this branch needs to be updated.
The MPEG Dash branch of the Fog app hasn't been updated in awhile, and a number of important bug fixes have been committed to the master branch that aren't part of the dash branch. This challenge will update the dash_support branch with the latest fixes and will, importantly, ensure that the same bugs are fixed in the Dash support code, making sure we don't regress on any issues.
A Gitlab ticket covers specifics:
https://gitlab.com/hercules-fog/Fog-CLI/issues/187���
MPEG Dash format
You can find details on the format here:
• http://www.encoding.com/mpeg-dash/
• https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP
• https://www.brendanlong.com/the-structure-of-an-mpeg-dash-mpd.html
• http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
Sample player
This site is what will be used by reviewers to test playback:
http://player.b1.app.cloud.comcast.net/
It is expected that reviewers will need to run Google Chrome with web security disabled to get around XSS / CORS issues when playing back from a Fog recorded URL.
How to test
Testing for HLS will be documented in the forum. Testing for MPD will be similar, but we will use the player documented above instead of the viper player for HLS.
Steps include:
1. Start an MPD recording
2. Get the playback URL from the “/recordings” endpoint
3. Put the playback URL into the test player
4. Start playback
For validation, we want to make sure that playback is smooth and that the MPD segments are served properly to the player.
HLS
After the changes, the HLS implementation should still work as normal, including the things not in scope for Dash, like logging, “recording” endpoint, adaptive bitrate, culling, etc…
Submission
Your code must be submitted as a Git patch file against the "dash_support" branch
https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/
Base your patch file against commit hash 77b4a015fa49953839eed902a4915e7d2a5ed933.
Please make sure to test your patch before submission!