-
Notifications
You must be signed in to change notification settings - Fork 5
Home
Rashomon is a web application which synchronizes playback for multiple media types (audio, video, photo). Rashomon also provides server-side software to manage media intake, workflow and curation. The html5 front end is targeted at modern browsers and makes extensive use of Mozilla’s PopcornJS library.
For a given chronology, a timeline (a popcorn 'baseplayer', aka null player) is instantiated that spans a period from a few seconds before the start time of the earliest piece of media to a few seconds after the duration of the last playing clip. Media are placed onto this timeline using popcorn plugins, using timestamps relative to the baseplayer for their start and end times. Functions and event listeners ensure media plays at the right time, seek behavior works as expected as expected and sync is maintained.
As media is uploaded, it is renamed (alphabet soup), temporal metadata is extracted and non-temporal metadata is redacted from the original files. These files are securely uploaded to youtube for face blurring (this step can be skipped if faces have already been redacted using ObscuraCam or other methods, or if anonymity is not a concern for a use case). Media is then pulled back down from YouTube and transcoded (we prefer to host our own, for now, since it gives us more control over resolution and bitrate and diagnosing playback issues).
The admin interface displays data about each clip and its status within the workflow. In the fairly common case that multiple timestamps exist for a file (File Created vs. Media Created vs. Track Modified), the user can select which one to use when creating a MPC.
A Rashomon manifest is a list of media assets to be used in a Multi-Perspective Chronology.
- mediaPath: path to where video and image files can be found. can be relative or absolute url. Rashomon expects media filenames to match {filename}.mp4 (h264/aac in a .mp4 container) AND .webm (vp8/vorbis in a matroska container) for videos, .jpeg for photos
- dataPath: path to where metadata files can be found. can be relative or absolute url. Rashomon expects metadata files to match {filename}.json; the json can be generated directly with exiftool (http://www.sno.phy.queensu.ca/~phil/exiftool):
exiftool -j -w {input}) or produced using the Rashomon admin server.
- event: Name of event, optional
- files: list of filenames without extensions (should exist in all formats required in directories defined above)
Here is an example Rashomon manifest (likely to change soon to enable multiple quality encodes per video): { "mediaPath": "http://metaviddemo01.ucsc.edu/obscured/", "dataPath": "metadata/", "event": "Dramatization of Campus Funding Cuts Protest, July 26, 2012", "files": [ "2012-07-26_11.14.53", "2012-07-26_11.14.37", "IMG_0227", "IMG_0263", "20120726_111303" ] }
When this file is loaded by Rashomon, it scans through the metadata files in dataPath to create a Rashomon video object for each one (in Rashomon.videos[] ). After all of these objects have been created, the main timeline object (Rashomon.timeline -- a popcornjs null player) is created.
root directory // main project files rashomon.js // main project functions index.html // the rashomon UI popcorn.rashomonvideo.js // rashomon popcorn plugin for managing videos popcorn.rashomonphoto.js // rashomon popcorn plugin for managing images
other_js/ //external libraries purl.js // https://github.com/allmarkedup/jQuery-URL-Parser -- url parsing for URI media fragment support jquery.tinysort.min // http://tinysort.sjeiti.com/ makes sure some asynch loading items are viewed in order.
/metadata example rashomon metadata
From CDN: jquery jquery UI popcorn.js
Optional files: rashomon.auth.js // optional, used for upload/server stuff server/ // folder contains rashomon media server files [to be documented shortly]