Time-addressable Media Stores

Time-addressable Media Stores

My current work with BBC R&D focuses on developing and applying the concept of Time-addressable Media Stores (TAMS) to various media production workflows.

The idea is to provide an API that references media on an immutable timeline, and works the same way for random access, or a linear stream. Every frame of video or chunk of audio gets a specific <media_id, timestamp> reference, and the immutability means media can be passed by reference in many cases. Those references can be resolved down to actual chunks of essence, which are stored in an object store like S3.

Hopefully that unlocks more efficient and more flexible workflows, because the common API works with both stream and files: a file is just a stream standing still, and a stream is lots of small files that still have more coming. However because the references are immutable, they can be used in place of the media, akin to pass-by-reference. It also allows the data-plane (media essence) and metadata-plane to be decoupled: the API allows clients to read/write media directly with the object store (with associated scalability benefits), and to make "lightweight copies" where the same underlying essence is referenced in multiple places.

I've been involved in this project since it started in 2017, looking at how to make media production more "cloud-fit". That led to the development of the TAMS API and a horizontally-scalable prototype implementation (codenamed "Squirrel"). I was also involved in development of various prototype services that ingest and package files and streams: connecting the store to other systems.

One of the projects supported by the TAMS work is performing AI analysis of wildlife camera during the BBC's Springwatch and Autumnwatch programmes. A number of cameras are set up in remote locations, and their output is analysed by an AI model (developed by another team in BBC R&D), which identifies events and species of interest and provides clips to the production team. The piece I worked on is the media backend: providing a system to ingest streams into the TAMS store, an SDK to extract frames to feed to the AI model and a service to produce video clips based on detections. To learn more about the Watches work, have a look at this blog post from some of my colleagues: Watching the (Animal) Detectives: Cloud-based media handling for AI camera monitoring.

The project is still ongoing, and most recently has involved making the API open source, with more information at https://github.com/bbc/tams. A number of media systems vendors and users have expressed an interest in TAMS, leading to AWS releasing an open-source implementation of the API and organising a demo at IBC 2024.

To read more about this project, have a look at: