Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Case - HLS streaming for audio/video #1031

Open
Natkeeran opened this issue Feb 21, 2019 · 0 comments
Open

Use Case - HLS streaming for audio/video #1031

Natkeeran opened this issue Feb 21, 2019 · 0 comments
Labels
Repository: Crayfish Commons Issues pertaining to the repository:https://github.com/Islandora/Crayfish-Commons Subject: Drupal related specifically to Drupal, usually pointing somewhere on drupal.org Type: use case proposes a new feature or function for the software using user-first language.

Comments

@Natkeeran
Copy link
Contributor

Natkeeran commented Feb 21, 2019

HLS streaming adds several benefits to delivering audio/video content. In short, HLS allows media files to be delivered in chunks or fragments to the end user/browser (example: https://github.com/Natkeeran/hls_example). It can also adopt to the user's Internet speed if appropriate derivatives are available. By delivering in chunks via http, the same web server can support more users at the same time as well.

In 7.x, video and audio files are downloaded before they can be played. If the file is large and/or if the user has low speed connection, then the user experience is poor. Though HLS plugin is available in the islandora_videojs viewer, the rest of the setup (required derivatives) is not available via the standard release or via contributed modules (that I am aware of).

In CLAW, we have an opportunity to take this need into consideration. The main requirement is that two additional derivatives are needed to support basic hls streaming (m3u8 playlist and ts fragmented media file).

Steps needed to support this feature in CLAW

  • Provide VideoJS as a viewer option (as html video does not support playing m3u8 in all browsers/devices).
  • Modify Homarus to create m3u8 and ts derivatives, and send back both m3u8 and ts derivatives. (We need to make sure to set the m3u7 mime type correctly).
ffmpeg -i El_Fiero_Arias.wav -hls_time 10 -strict -2 -c:a aac -b:a 64k -hls_flags single_file El_Fiero_Arias.m3u8
  • Add configuration to enable/disable playing m3u8.
  • Have the logic to fallback to mp4 (additional source file in the template) if m3u8 cannot be played.
  • As storage can be an issue, creating either m3u8 or mp4 or both should be a configurable option.
  • To support adaptive bitrate, multiple ts files will need to be created.

Related Tickets

@dannylamb @jonathangreen

@kstapelfeldt kstapelfeldt added Repository: Crayfish Commons Issues pertaining to the repository:https://github.com/Islandora/Crayfish-Commons Subject: Drupal related specifically to Drupal, usually pointing somewhere on drupal.org Type: use case proposes a new feature or function for the software using user-first language. and removed Crayfish labels Sep 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Repository: Crayfish Commons Issues pertaining to the repository:https://github.com/Islandora/Crayfish-Commons Subject: Drupal related specifically to Drupal, usually pointing somewhere on drupal.org Type: use case proposes a new feature or function for the software using user-first language.
Projects
Development

No branches or pull requests

2 participants