14
Extending the ingest API to support partial tracks SWITCH / Entwine Lukas, Rohner Software Engineer for the open minded http://entwinemedia.com @entwinemedia

Opencast: Extending the ingest API to support partial tracks

  • Upload
    lrohner

  • View
    168

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Opencast: Extending the ingest API to support partial tracks

Extending the ingest API to support partial tracks

SWITCH / Entwine

Lukas, Rohner Software Engineer

for the open minded

http://entwinemedia.com @entwinemedia

Page 2: Opencast: Extending the ingest API to support partial tracks

– for the open minded

What is it aboutThe current implementation of the Ingest API expects the ingested media packages to contain tracks of equal length that are starting at the same time. The SWITCHcast recorder is able to deal with pauses and other crazy situations during recording. In order to support these use cases, the ingest API has been extended to support the addition of tracks that don’t start at time 0, are shorter or contain pauses.

Page 3: Opencast: Extending the ingest API to support partial tracks

– for the open minded

Current behavior (Sample)

Presentation Track

Presenter Track

Audio Track

Ingested Tracks

Time

Page 4: Opencast: Extending the ingest API to support partial tracks

– for the open minded

Current behavior (Sample)

Presentation Track

Presenter Track

Audio Track

Audio Track

Muxed together

Time

Page 5: Opencast: Extending the ingest API to support partial tracks

– for the open minded

New behavior partial tracks (Sample)

Presentation Part A

Presenter Part A Presenter Part B Presenter Part C

Audio Part A Audio Part B

Presentation Part B

Ingested Partial Tracks

Time

Page 6: Opencast: Extending the ingest API to support partial tracks

– for the open minded

New behavior partial tracks (Sample)

Presentation Part BPresentation Part A

Presenter Part A Presenter Part B Presenter Part C

Audio Part A Audio Part B

Extract first/last image frames

Time

Page 7: Opencast: Extending the ingest API to support partial tracks

– for the open minded

New behavior partial tracks (Sample)

Presentation Part BPresentation Part A

Presenter Part A Presenter Part B Presenter Part C

Frame Frame

… … …

Audio Part A Audio Part BSilent Track

Convert image frames to videos fill the gaps

Time

Page 8: Opencast: Extending the ingest API to support partial tracks

– for the open minded

New behavior partial tracks (Sample)

Concatenated Presentation Track

Concatenated Presenter Track

Concatenated Audio Track

Concatenate partial tracks

Time

Page 9: Opencast: Extending the ingest API to support partial tracks

– for the open minded

How it worksSMIL catalog

Synchronized Multimedia Integration Language (W3C) XML Structure

Already used in the cutting tool FFmpeg

Extract first/last image frames Converting image to videos fill gaps

Generating silent audio Audio/Video concatenation

Page 10: Opencast: Extending the ingest API to support partial tracks

– for the open minded

How to use

Extended Ingest API zipped mediapackage (create it yourself)

Transactional API

Page 11: Opencast: Extending the ingest API to support partial tracks

– for the open minded

Extended Ingest APIPOST /ingest/addPartialTrack

Parameter Type Description

url String The location of the media

flavor String The kind of media

startTime Integer The start time

mediaPackage String The media package as XML

Page 12: Opencast: Extending the ingest API to support partial tracks

– for the open minded

Extended Ingest APIPOST /createMediaPackage POST /addPartialTrack ("presenter/partial", 10)

POST /addPartialTrack ("presenter/partial", 50)

POST /ingest

Track

TrackTrack

Page 13: Opencast: Extending the ingest API to support partial tracks

– for the open minded

How to use

PartialImportWorkflowOperationHandler

Inserted at first position in the workflow Reading SMIL

Instructing FFmpeg commands

Page 14: Opencast: Extending the ingest API to support partial tracks

– for the open minded

Questions?

Available in Matterhorn 2.1 [email protected] Thanks to SWITCH