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
Consumer | Application 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 |
Job | A single piece of transcoding work |
Transcoder | An implementation-specific provider of transcoding services. Examples include OpenCast Matterhorn, Kaltura, Zencoder, and Amazon Elastic Transcoder. |
Transcoding API | The 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.
Submit job, ID is returned
Use ID for status query
- Derivatives placed in proper location by service
Other Proposed Features
Cancel job and retract derivatives (time intensive and some services charge per minute)
Need to support priority flagging, not present in some codebases
Avalon
Jobs
Create
Submit
Input file
...