A method of playing back content comprising a plurality of media frames by a playback device, where the content is stored in a media file, the method comprising: providing a media file comprising a plurality of elements that each include: a header (22-26, 22'-26'), and content data (28, 28') comprising information from one of the elementary streams; decoding content data contained within elements using a playback device; displaying decoded content on a display; and receiving a user request; the method characterized by: identifying the header of a first element in response to the received user request, wherein the header of each element includes a plurality of flags and data fields, the plurality of data fields includes a forward offset data field that has a pointer to a next key-frame element, the plurality of flags includes a forward access flag that references the forward offset data field, and the next key-frame element is arranged to be decoded independently of any other element and additional flags that are indicated as being a part of the header, wherein the additional flags comprise a frame metadata flag that indicates the presence of frame metadata within the plurality of data fields of the header; identifying a data field in the header of the first element that points to a second element; retrieving the second element pointed to by the identified data field from the plurality of elements; and decoding the content data contained in the retrieved element by decoding the header to identify the plurality of flags and the content of the plurality of data fields and decoding the content data based upon a set of pre-defined presentation rules that define the behavior of the playback device based upon the frame metadata. providing a media file comprising a plurality of elements that each include: a header (22-26, 22'-26'), and content data (28, 28') comprising information from one of the elementary streams; a header (22-26, 22'-26'), and content data (28, 28') comprising information from one of the elementary streams; decoding content data contained within elements using a playback device; displaying decoded content on a display; and receiving a user request; identifying the header of a first element in response to the received user request, wherein the header of each element includes a plurality of flags and data fields, the plurality of data fields includes a forward offset data field that has a pointer to a next key-frame element, the plurality of flags includes a forward access flag that references the forward offset data field, and the next key-frame element is arranged to be decoded independently of any other element and additional flags that are indicated as being a part of the header, wherein the additional flags comprise a frame metadata flag that indicates the presence of frame metadata within the plurality of data fields of the header; identifying a data field in the header of the first element that points to a second element; retrieving the second element pointed to by the identified data field from the plurality of elements; and decoding the content data contained in the retrieved element by decoding the header to identify the plurality of flags and the content of the plurality of data fields and decoding the content data based upon a set of pre-defined presentation rules that define the behavior of the playback device based upon the frame metadata.