Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added Transcoding API

The Transcoding API will consist of a set of lightweight Ruby classes that will be able to initiate transcoding jobs, distribute derivative files, track/poll job status, and perform common maintenance tasks such as prioritization, cancellation, and cleanup.

Definitions

ConsumerApplication code that makes use of the Transcoding API.
Implementation

The set of classes and methods that make a given Transcoder available to a Consumer via the methods defined in the Transcoding API

JobA single piece of transcoding work
Transcoder

An implementation-specific provider of transcoding services. Examples include OpenCast Matterhorn, Kaltura, Zencoder, and Amazon Elastic Transcoder.

Transcoding APIThe set of classes and methods that can be used to initiate, track and manipulate trancoding jobs.

Classes

Transcoder::Base

An abstract model that serves as the reference for an Implementation.

Class Methods

create(input, output, opts={})

Begin a transcoding operation. Returns a job.

 

find(job_id)

Load and return a single job.

 

find_by_status(*states)

Find all jobs currently in the given state(s).

Instance attributes

  • job_id
  • state
  • current_operations
  • errors
  • original_filename
  • tech_metadata

Instance Methods

  • cancel!
  • canceled?
  • complete?
  • purge!
  • running?
  • update!

Chris's F2F Notes

File submission

...

Depend on encoder/encoder shim to transfer derivatives to streaming server/location

Chris's LCDX Notes

Basic Requirements for local encoding service

  • Start encoding job

  • status of encoding job

    • succeed/failed/canceled

    • current operation (could be hash due to parallelization of derivative creation)

    • errors

    • process complete

  • further in depth details of encoding job (media info report)

    • techMD (aspect ratio, framesize, bitrate)

    • derivatives created (id, url/label, hash)

    • id

    • original filename


Proposed Operation


Shared code, API layer for work.  Run by institution.  Avalon wants local FFMPEG queue based solution.  


  1. Submit job, ID is returned

  2. Use ID for status query

  3. Derivatives placed in proper location by service

Other Proposed Features

  1. Cancel job and retract derivatives (time intensive and some services charge per minute)

  2. Need to support priority flagging, not present in some codebases

Avalon

Jobs

Create

Submit

Input file

...