Assemble video from slides in mediasite import #2

Closed
opened 2021-10-11 14:56:46 +02:00 by erth9960 · 1 comment
Owner

Mediasite saves one of its 4 streams as a collection of jpg images instead of a true video stream. This slide deck needs to be transformed into an actual video file for the new player.

The queue job when importing from mediasite will contain an extra field, slides, that maps to a list of slide objects that each has the members "url" and "time":

{
  ...usual content
  "slides": [
    {
      "url": "https://download.path/something.jpg",
      "duration": a-numeric-duration-in-millis
    },
    ...
  ]
}

What needs to be done:

  • The mediasite packager should start downloading all slides the queue job points out
    • Slides should go in a slides subdirectory
    • Access to the slides on the server is password-protected. The _download() function automatically uses a valid account.
    • The _download() function should start reusing a single connection in order to speed up downloading many files.
    • The downloaded slides and their durations should be pointed out in mypackage in the same way as the list in the job file, but with absolute local paths.
  • The transcoder should make a video if it finds a slides key in the package dict
    • A missing slides key should be silently ignored.
    • A promising ffmpeg solution is here, see especially the heading "Concat demuxer".
    • The concat documentation is here
    • The unit of duration in the concat syntax is unclear, will need to be tested.
    • The assembled video should be created for all variants listed in self.variants.
    • Register the new video in the package by adding another entry to the sources list.
  • The pipeline should clean out slide information from the notification sent to the platform.
    • pipeline.notify() should delete a slides key if it exists.
    • A missing slideskey should be silently ignored.
Mediasite saves one of its 4 streams as a collection of jpg images instead of a true video stream. This slide deck needs to be transformed into an actual video file for the new player. The queue job when importing from mediasite will contain an extra field, `slides`, that maps to a list of slide objects that each has the members "url" and "time": ```json { ...usual content "slides": [ { "url": "https://download.path/something.jpg", "duration": a-numeric-duration-in-millis }, ... ] } ``` What needs to be done: * The mediasite packager should start downloading all slides the queue job points out * Slides should go in a `slides` subdirectory * Access to the slides on the server is password-protected. The `_download()` function automatically uses a valid account. * The `_download()` function should start reusing a single connection in order to speed up downloading many files. * The downloaded slides and their durations should be pointed out in `mypackage` in the same way as the list in the job file, but with absolute local paths. * The transcoder should make a video if it finds a `slides` key in the package dict * A missing `slides` key should be silently ignored. * A promising ffmpeg solution is [[here|https://trac.ffmpeg.org/wiki/Slideshow]], see especially the heading "Concat demuxer". * The concat documentation is [[here|https://ffmpeg.org/ffmpeg-formats.html#concat]] * The unit of `duration` in the concat syntax is unclear, will need to be tested. * The assembled video should be created for all variants listed in `self.variants`. * Register the new video in the package by adding another entry to the `sources` list. * The pipeline should clean out slide information from the notification sent to the platform. * `pipeline.notify()` should delete a `slides` key if it exists. * A missing `slides`key should be silently ignored.
erth9960 added the
Priority
label 2021-10-11 15:05:34 +02:00
dafo5502 self-assigned this 2021-10-15 16:00:15 +02:00
Collaborator

The major stuff is done.
What is left is:

  • Test a few more lectures

  • Find a bug? of durations for the slide videos either in the sources or the code

    • possibly fps diff somewhere
The major stuff is done. What is left is: - [x] Test a few more lectures - [x] Find a bug? of durations for the slide videos either in the sources or the code - possibly fps diff somewhere
dafo5502 added a new dependency 2021-10-25 14:52:51 +02:00
Sign in to join this conversation.
No Milestone
2 Participants
Notifications
Due Date
No due date set.
Blocks
#4 Fixes Issue #2
DMC/play-daemon
Reference: DMC/play-daemon#2
No description provided.