########################################################################################## HLS-6: Adaptive Streams ########################################################################################## Issue Type: New Feature ----------------------------------------------------------------------------------------- Issue Information ==================== Priority: Minor Status: Closed Resolution: Done (2015-06-14 23:50:04) Project: HLS Stream Creator (HLS) Reported By: btasker Assigned To: btasker Components: - Playlists - VoD support - Linear Support - Transcoding - CLI Options - Adaptive Streams Targeted for fix in version: - 1.0 Time Estimate: 0 minutes Time Logged: 0 minutes ----------------------------------------------------------------------------------------- Issue Description ================== The PR merged in HLS-5 simplify something I've been debating implementing for a while. If the script is configured to accept a comma seperated list of bitrates, we can generate multiple bitrate HLS streams and then create a top level playlist pointing to the relevant m3u8s. Players that support adaptive streaming can then choose (and switch between) playlists in response to changing network conditions (e.g. going from wifi to 3G). ----------------------------------------------------------------------------------------- Issue Relations ================ - is blocked by HLS-7: Implement use of getopt - Discovered HLS-10: When parrallelised transcodes finish, the bitrate for the last isn't output ----------------------------------------------------------------------------------------- Activity ========== ----------------------------------------------------------------------------------------- 2015-06-11 12:08:42 btasker ----------------------------------------------------------------------------------------- Have marked this issue as blocked by HLS-7 as whilst we could adjust to take the input as an additional argument, it'll potentially get quite messy. Probably better to wait until getopt support has been written in so that they information can be provided in a command line option. ----------------------------------------------------------------------------------------- 2015-06-11 18:04:58 btasker ----------------------------------------------------------------------------------------- When doing this, will also need to take into account that the flow will likely be very different with linear video (as implemented by HLS-8) With VoD we could potentially do the following - build a top-level playlist containing references to each of the bitrate playlists - Iterate through each of the bitrates, calling _ffmpeg_ for each and then . With Live that won't work, as the stream won't end, so the bitrates need to be generated in parallel. The top-level playlist needs to be generated before calling _ffmpeg_ so that it'll be present whether live or VoD. ----------------------------------------------------------------------------------------- 2015-06-12 12:05:17 btasker ----------------------------------------------------------------------------------------- Have moved the _ffmpeg_ call into a function and adjusted some of it's inputs to use function arguments rather than globals ready for introducing support for encoding multiple bitrates. It's occurred that if we can get multiple bitrates transcoding at the same time (which we'll need to do anyway for live adaptive streams) there's no real benefit in drawing a distinction between VoD and Live in terms of whether we fork or not. It'd mean that for a VoD encode the different bitrates could be created in parallel Though, probably worth providing a command line option so that the user can specify VoD should be transcoded sequentially (in case the hardware in use simply isn't capable enough to handle it) ----------------------------------------------------------------------------------------- 2015-06-12 13:01:15 git ----------------------------------------------------------------------------------------- -- BEGIN QUOTE -- Repo: HLS-Stream-Creator Commit: a8c86ff7b82883f67ec42ab61b246d1dd07a55ab Author: Ben Tasker