Reading and / or writing media files

By using a descriptor file to manage media file updates, the challenges of creating and reading media files of unknown length during live recordings are addressed, allowing for low-latency playback and reducing data loss.

JP2025159720APending Publication Date: 2025-10-21BLACKMAGIC DESIGN PTY LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025063266
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-08
Filing Date
2025-04-07
Publication Date
2025-10-21

AI Technical Summary

Technical Problem

Existing media processing systems face challenges in creating and reading media files of unknown length, particularly during live recordings, due to incomplete file structures and high latency issues when reading files in progress.

Method used

The implementation of a descriptor file alongside the media file, which allows for continuous writing and reading of media elements by periodically updating the descriptor file to enable low-latency playback, even before the file is fully completed.

Benefits of technology

Enables simultaneous writing and reading of media files with low latency, ensuring that newly written media elements can be recognized and played back almost instantly, reducing the risk of data loss and improving the efficiency of live recording processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025159720000001_ABST
    Figure 2025159720000001_ABST
Patent Text Reader

Abstract

To provide a method for enabling continuous recording in an ISO Basic Media File Format (ISOBMFF) file or similar format in situations where the length of the file is not known in advance.SOLUTION: A method includes a step of initiating recording of an ISOBFF file storing a file header, a body including media data, and a moov header. Writing the file beyond an expected size includes a step of expanding the file to store new media data, writing a new moov header to an end of the file, and updating the file header to enable identification of the new moov header. As progressing, the moov header is periodically updated and the new media data can be added to the media data. Adding the new media data includes discarding the old moov header by overwriting a section in which the old moov header was stored with data associated with the new media.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] FIELD OF THE DISCLOSURE The present disclosure relates to media files, and more particularly to methods and systems for reading and / or writing media files. [Background technology]

[0002] Many media processing devices and software use files with container formats to write audio and / or video and auxiliary data to storage media (e.g., disk, network storage, etc.). These container formats include QuickTime, MP4, and other container formats based on the ISO Basic Media File Format (ISOBMFF). The ISO Basic Media File Format is published by ISO as ISO / IEC 14496-12, Part 12 of the MPEG-4 specifications, but is also used in standards and formats other than MPEG-4.

[0003] Using such file formats for live recording or other situations where files of unknown length need to be created can be challenging. Furthermore, reading such files while the live recording is still in progress, especially at low latency, can be particularly problematic as the overall structure of the file may not be complete and may prevent reading.

[0004] The systems, devices, methods, and approaches, and components thereof, described in this section are known to the inventors, and therefore, unless otherwise expressly stated, it should not be presumed that the systems, devices, methods, approaches, and components thereof in this section are recited as prior art by their description, or that they are commonly known to those skilled in the art. Summary of the Invention

[0005] Methods for writing media files and methods for reading media files are described. These methods can be applied to the continuous writing of data to a file. The file format may be based on or similar to an ISOBMFF file (e.g., in a live recording situation where the file length is unknown), and the writing method includes writing a descriptor file in addition to the media file. This descriptor file contains data that allows for reading media elements stored in the file body of the media file. Writing to the descriptor file may be performed before writing corresponding data to the media file that allows for reading the media elements stored in the file body. Reading the media file may include utilizing data contained in the descriptor file that allows for reading the media elements stored in the file body. Reading the media file may also be performed before writing to the media file is finished, such as before writing of a live recording is completed.

[0006] In a first aspect, the present disclosure relates to a method of writing a media file, comprising: (a) writing a media file including a file header including data enabling identification of a location of a descriptor portion of the file, a file body storing media elements, and a descriptor portion enabling reading of the media elements in the body portion; (b) writing at least one media element to the file body; and (c) writing a descriptor file associated with the media file, the descriptor file including data enabling reading of the media elements stored in the file body of the media file.

[0007] In some embodiments, the method according to the first aspect further comprises repeating (b) to write additional media elements to the file body.

[0008] In some embodiments, the method of the first aspect further includes repeating (c) to write additional data to the descriptor file that enables reading of additional media elements stored in the file body of the media file.

[0009] In a second aspect, the present disclosure relates to a method for writing a media file, the media file including: a file header containing data capable of identifying the location of a descriptor portion of the file; a file body storing media elements; and a descriptor portion enabling reading of the media elements in the body portion, the method comprising: (b) writing at least one media element to a file body; (c) writing a descriptor file associated with the media file and including data that enables reading of the media elements stored in the file body; (d) repeating (b) to write additional media elements to the file body; (e) repeating (c) to write additional data to the descriptor file that enables reading of the additional media elements stored in the file body; and (f) after writing all additional media elements to the file body, writing a descriptor portion to the media file that enables reading of the media elements in the body portion.

[0010] In some embodiments, the method according to the second aspect further comprises updating the file header to update an indication of the location of the descriptor portion within the file.

[0011] In some embodiments, the method of the first or second aspect further includes repeating (c) to write additional data to the descriptor file to enable reading of additional media elements stored within the file body of the media file, and (c) is repeated after each additional media element is written to the file body.

[0012] In some embodiments, the method of the first or second aspect further includes repeating (c) to write additional data to the descriptor file to enable reading of additional media elements stored in the file body of the media file, where (c) is repeated periodically.

[0013] In some embodiments, the method of the first or second aspect further includes repeating (c) to write additional data to the descriptor file to enable reading of additional media elements stored in a file body of the media file, and (c) is repeated on an ad hoc basis.

[0014] In some embodiments, the method according to the first or second aspect further comprises: Modifying the descriptor portion of a media file to allow reading of all media elements within the body portion; updating the file header to update the indication of the location of the descriptor portion within the file;

[0015] In some embodiments, the method of the first or second aspect further includes repeating (c) to write additional data to the descriptor file, thereby enabling reading of additional media elements stored in the file body of the media file, wherein repeating (c) includes writing the additional data that enables reading in new fragments, the fragments enabling playback of media elements stored in the file body of the media file since the last execution of (c).

[0016] In some embodiments, the method according to the first or second aspect further comprises finalizing the media file by writing a final descriptor portion within the media file.

[0017] In some embodiments, the method according to the first or second aspect further comprises deleting the descriptor file.

[0018] In a third aspect, the present disclosure relates to a method of reading a media file recorded on a data storage medium, the media file including: a file header including instructions identifying the location of a descriptor portion within the file; a file body storing media elements; and a descriptor portion enabling reading of the media elements of the body portion; the method including: (x) reading a descriptor file associated with the media file, the descriptor file including data enabling reading of the media elements stored in the file body of the media file; and (y) reading the media elements from the file body in accordance with the descriptor file.

[0019] In a fourth aspect, the present disclosure relates to a method of reading a media file recorded on a data storage medium, the media file including: a file header including instructions identifying the location of a descriptor portion within the file; a file body that stores media elements; and a descriptor portion that enables reading of the media elements within the body portion; the method including: checking for the existence of a descriptor file associated with the media file and configured to include data that enables reading of the media elements stored in the file body of the media file; and if the descriptor file exists and includes data that enables reading of the media elements, the method includes: (x) reading the descriptor file associated with the media file and that includes data that enables reading of the media elements stored in the file body of the media file; and (y) reading the media elements from the file body in accordance with the descriptor file.

[0020] In some embodiments, the method of the third or fourth aspect further includes repeating (x) to obtain additional data that enables reading media elements stored in the file body of the media file.

[0021] In some embodiments, the method of the third or fourth aspect further includes the read-enabling data being written to the descriptor file in sequentially stored fragments, where each fragment enables playback of a media element stored in the file body since the previous fragment was written to the descriptor file.

[0022] In some embodiments, the method of the third or fourth aspect further includes repeating (x) to obtain additional data that enables reading of media elements stored in the file body of the media file, and repeating (x) further includes reading one or more fragments that have been written to the descriptor file since (x) was last repeated.

[0023] In some embodiments, the method according to the third or fourth aspect further comprises detecting a change in the descriptor file and repeating (x) in response to said detection.

[0024] In some embodiments, the method of the third or fourth aspect further comprises detecting a change in the descriptor file: receiving a notification that the descriptor file has changed; or Checking for changes to the descriptor file;

[0025] In some embodiments, the method of the third or fourth aspect further comprises repeating (y) to read additional media elements from the file body in accordance with the additional data that enables said reading.

[0026] In some embodiments, the method of the third or fourth aspect comprises: If the descriptor file associated with the media file does not exist; or If the descriptor file associated with the media file does not contain data that allows for the reading of the media element, then: (x2) reading a descriptor portion of the media file to enable reading of media elements within the body portion; (y2) reading the media element from the file body according to the descriptor portion of the media file;

[0027] In a fifth aspect, the present disclosure relates to a method of playing a media file via a storage medium, said method comprising:

[0028] writing a media file to a storage medium using the method of any one of the first or second aspects; and

[0029] reading the media file from the storage medium using the method of any one of the third aspect or the fourth aspect.

[0030] In a sixth aspect, the present disclosure relates to a method for live recording of media, the media including a plurality of media elements, the media being audio, video, or audio and video, the method comprising: creating a media file for the media, the media file including a file header and a file body, the method including: during live recording by a media source: (a) receiving at least one media element of the plurality of media elements from the media source; (b) writing the at least one media element to the file body; and (c) writing data enabling reading of the at least one media element to a descriptor file associated with the media file; and finalizing the media file after all of the plurality of media elements have been received by writing or updating a descriptor portion of the media file; wherein the file header includes data enabling identification of a location of the descriptor portion of the media file, and the descriptor portion includes data enabling reading of the media elements in the body portion.

[0031] In some embodiments, the sixth aspect further includes the created media file including a descriptor portion.

[0032] In some embodiments, the sixth aspect further includes the created media file not including a descriptor portion, and determining the media file includes adding a descriptor portion to the media file.

[0033] In some embodiments, the sixth aspect further includes updating the descriptor file at least once per second during the live recording based on media elements of the plurality of media elements received and written to the file body since the last update.

[0034] In some embodiments, the sixth aspect further includes reading the media file during live recording or before finalizing the media file, and reading the media file includes reading media elements of the file body according to the descriptor file.

[0035] In a seventh aspect, the present disclosure relates to a computer-readable medium storing instructions that, when executed by a computer processor, cause the computer processor to perform a method according to the first, second, third, fourth, fifth or sixth aspect.

[0036] While the invention disclosed herein is susceptible to various modifications and alternative forms, specific embodiments have been illustrated in the drawings and described in detail. However, as will be understood by those skilled in the art, these drawings and detailed description are not intended to limit the invention to the particular forms disclosed. Furthermore, all alternative combinations of two or more of the individual features mentioned or apparent from the text or drawings may constitute disclosure of additional aspects or inventions and may be subject to the claims. [Brief explanation of the drawings]

[0037] [Figure 1] FIG. 1 is a schematic diagram illustrating a container file format update process.

[0038] [Figure 2] FIG. 1 is a system diagram for implementing a process according to the present disclosure.

[0039] [Figure 3] FIG. 2 is a schematic diagram of a file writing process in the first embodiment.

[0040] [Figure 4] 10 is a flowchart of a file writing process in the first embodiment.

[0041] [Figure 5] FIG. 10 is a schematic diagram of a file writing process in another embodiment.

[0042] [Figure 6] 10 is a flowchart of a file writing process in another embodiment.

[0043] [Figure 7] 10 is a flowchart of a file writing process in another embodiment.

[0044] [Figure 8] FIG. 1 is a block diagram illustrating a device for implementing a method according to an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0045] In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent that the present invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring key details.

[0046] To allow for continuous writing of data recorded in an ISOBMFF file or a similar format (e.g., in a live recording situation where the length of the file is not known in advance), the Applicant has developed a mechanism for extending the file as the recording continues. In the following, an example used for an ISOBMFF file is given, in which the file can be continuously written while being periodically "atomically" extended. Figure 1 conceptually illustrates this process as follows:

[0047] The process starts with the original ISOBFF file (10), which stores the file header (labeled "ftyp header"), the body containing the media data (video frames, audio samples, etc.), and the "moov" header.

[0048] Writing a file beyond its original expected size: a) Expanding the file to accommodate new media data (12); b) writing a new “moov” header to the end of the file (14); and c) updating the file header to identify the new moov header (16);

[0049] New media data can then be added to the media data (18) as the recording progresses, with the moov header being updated periodically as needed. Adding new media data may involve discarding the old moov header, for example, by overwriting the section in which it was stored with data relating to the new media.

[0050] This mechanism allows a playback device (i.e., reader) of the file, such as video editing software or a video player, to always read a valid version of the file and also to detect changes (i.e., new video and audio data).

[0051] However, the problem with this mechanism is that updates tend to be relatively infrequent in order to minimize the use of resources (e.g., network and storage bandwidth, CPU overhead). This means that updates to the "moov" header might only occur every 5 seconds. Such infrequent updates can come with several potential disadvantages: If the recording is terminated due to a failure (e.g., software crash, network failure), the moov header may not be updated as required, resulting in the last media written not being identified and that media may be lost. The system has an inherent delay of at least 5 seconds between when video or audio data is written to disk and when it can be recognized by the device that plays the file.

[0052] The inventors have developed an approach to reading and writing files that can address either or both of these situations. The approach generally involves the use of descriptor files that augment or replace the role of the traditional internal descriptor portion of a media file (i.e., the moov header) and allow for the reading of media elements stored in the body portion of the media file.

[0053] FIG. 2 illustrates a system 200 adapted for reading and writing media files, preferably with low latency or substantially simultaneous operation. The system includes a computing device 220 adapted to perform the methods described in this disclosure, with either software instructions or hardware processing causing the device to perform the steps of the methods described herein. This may include computing device 1000, described below with respect to FIG. 8. The computing device may include or be connected to a data storage medium 230. The data storage medium may include local or network storage, to which data may be written or read by the computing device 230. The computing device 220 and data storage system 230 may be part of a personal computer, laptop, or other similar single system, and may run one or more software applications (e.g., Davinci Resolve or other media editing or viewing applications), a media processing device such as a Blackmagic Hyperdeck or Ultrastudio manufactured by Blackmagic Design Pty Ltd, or a combination of these hardware and software devices. Alternatively, the data storage system may be separate from the computing device, such as a Blackmagic Cloudstore, Cloud Dock, or connected via a device such as a Blackmagic Cloudpod.

[0054] The computing device 230 is connected to a media source 210 and a media playback device 240 via wired or wireless communication channels. The media source 210 may be any device capable of outputting a media stream to the computing device for storage of a media file. Typically, the media source 210 may be a camera, scanner, microphone, animation rendering processor, video editing system, media playback device, or network distribution system for media. The media playback device 240 may be any device that accepts a media stream via a data or network connection. Typically, the media playback device may be a media broadcast system, a media playback system or device, a screen, monitor, or projector, or a downstream storage or processing device for media. The media source 210 and the media playback device 240 are connected to the computing device 220 via respective communication links 242 and 244. The media source 210 and the media playback device 240 may be connected via one or more media capture and / or playback components (e.g., 1022 in FIG. 8 ). The system shown in FIG. 2 is highly simplified and may include intervening devices between the illustrated elements, such as format converters, modems, routers, etc., which have been omitted so as not to obscure important details of the disclosure.

[0055] For purposes of explanation, assume that media source 210 is a camera and media playback device 240 is an element of a live media broadcast system. Each communication link 242 and 244 may be a serial digital interface (SDI) link. Media created by camera 210 is transmitted via SDI link 242 to computing device 220 and stored on storage medium 230. The media playback device is adapted to access the media on storage medium 230 for display, use, or transmission. In particular, consumption of media by media playback device 240 ideally occurs in near real time from the time it is received by the computing device. For example, it may be part of a live video feed or a live display at an event.

[0056] Figure 3 is a schematic diagram of media files and descriptor files used in one embodiment of the present disclosure, the creation and use of which is explained with the aid of the flowchart in Figure 4.

[0057] As shown in Figure 1, file 10 is a conventional media file. Media file 10 is created when you initiate writing media to a storage device (see 310 in Figure 4). Media file 10 has a data structure that includes: The file header (e.g., the ftyp header), which typically contains file metadata and also information to identify the location of the descriptor portion of the file. A file body portion (e.g., mdat) used to store media elements, which may be, but are not limited to, image frames, still images, or the like if the media is video, or audio samples or other audio file objects if the media file contains audio. A descriptor section (e.g., a header such as a "moov" header or a media index) that tells a media player or playback device what media elements are stored in the file body section, thereby enabling playback of the media elements in the body section. In one form, the data enabling playback of the media elements in the body section represents information mapping each media element in the media element array (e.g., frame n or audio sample m) to the location of the data representing that media element within the file body section. It may also contain one or more additional metadata elements, such as codec parameter settings for decoding, pixel format determination, audio sampling, color space information, frame duration, or, in some formats, the presentation order or decoding order of the media elements.

[0058] When media is received, at least one media element is written to the file body (320). A descriptor file (30.1) associated with the media file is also created (330). This creation can occur when the media file is created, or after at least one media data element has been received and stored in the media file body. The descriptor file contains data that allows for reading the media elements stored in the file body of the media file. This data is typically similar to that stored in the descriptor portion of the media file. In one embodiment, the data that allows for reading the media elements stored in the descriptor file may be a moof header element defined for ISOBOFF (fragmented) format files.

[0059] As more media elements are received from the media source, more data can be added to the media file, allowing the media elements to be read. This may be done by adding additional moof header elements to the descriptor file that provide playback information that allows the newly written media data to be read in the body of the media file. Over time (e.g., at time t=n), the descriptor file expands, shown schematically as 30.n.

[0060] Writing additional data to the descriptor file to enable reading may occur as needed. In some embodiments, this occurs after each additional media element is written to the file body. In other embodiments, the additional data is written periodically. In this case, the process effectively functions as a batch process, updating the descriptor file to include data that enables reading of all media recorded since the descriptor file was last updated. The update period may be on the order of one or more seconds, but is preferably less than one second. In some embodiments, updating the descriptor file occurs at least every 0.5 seconds while media is being received and written to the media file. In some embodiments, updating the descriptor file occurs at least every 300 milliseconds while media is being received and written to the media file. In some embodiments, updating the descriptor file occurs at least every 250 milliseconds or at least every 200 milliseconds while media is being received and written to the media file.

[0061] In one embodiment, new data that can be read is added to the descriptor file on an ad-hoc basis, which can be useful, for example, when data processing or access to the data storage device is prioritized for other purposes.

[0062] As discussed in connection with FIG. 1, as more media elements are written to the body portion of a media file, it may become necessary to expand the size of the file. This operation can be performed as described in connection with the flowcharts of FIGS. 5 and 6. As noted above, media elements can be added to the original file 10, and the associated descriptor file is periodically updated to allow the media elements to be read. However, at some point, the defined file size will not be able to accommodate any more media elements. This problem is addressed as described in FIG. 6. When writing a media element, or when one or more new media elements are received for writing to the file body, a check is made at 410 to see if the additional media elements will fit in the file body. If the new media elements do not fit, the media file is expanded at 420. This expansion process may include the following: Updating the file size (for example, by specifying a new file size using the ftruncate function); and Writing new descriptor parts of media files (e.g. moov headers).

[0063] A new descriptor part can be written to the end of the extended file and updated to describe all current media elements in the media file body, allowing reading of all media elements in the body part.

[0064] Next, in step 430, the header of the file is updated to indicate the new location of the descriptor portion within the file.

[0065] As the file is extended, the process of writing to the media file can continue by adding new media elements to the file body and writing new entries to the descriptor file 30 (e.g., with the moof fragment, as shown in 30.m). As previously described herein, the descriptor portion of a media file can also be updated at any time.

[0066] In some embodiments, the descriptor file may be continually expanded throughout the entire writing process by adding new entries that describe the most recent media elements written to the body of the media file. However, variations are possible. For example, in one embodiment, entries in the descriptor file are deleted after each update of the descriptor portion of the media file, so that the descriptor file does not contain redundant information. Then, as media elements are subsequently added to the media file body (since the last update of the descriptor portion of the media file), entries are added in the descriptor file to allow the newly added media elements to be read. In other embodiments, entries in the descriptor file are accumulated until it is necessary to expand the media file, and the contents of the descriptor file are deleted only when a new descriptor portion of the media file is written as part of the file expansion process.

[0067] At the end of the recording, after all media elements have been received, the media file is finalized and a final descriptor portion of the media file is written that describes the entire set of all media elements written into the body of the media file.

[0068] At this point, the descriptor file may be deleted or otherwise detached from the media file, which now contains a complete description of its contents and can be read independently, without the use of the descriptor file.

[0069] An alternative embodiment of the above-described method is also possible. In this alternative embodiment, the step of writing the descriptor portion into the media file is not performed until all media elements stored in the media file have been written. In this case, there is no need to update the descriptor portion as the file grows. Initially, a media file is written, including: a file header, and a file body for storing the media elements. An associated descriptor file is also created. Media elements can be written to the file body as needed, and new descriptor fragments are written to the descriptor file. The update manner and / or frequency of the descriptor file can comply with the above-described embodiment.

[0070] After all desired media files have been written to the file body, the media file can be finalized by adding a descriptor section to the file and making a final update to the file header to make the location of the descriptor section identifiable.

[0071] At this point, the descriptor file may be deleted or otherwise detached from the media file, which now contains a complete description of its contents and can be read independently, without the use of the descriptor file.

[0072] Reading a media file written in accordance with an embodiment of the present invention (to enable playback, transmission, further processing, etc.) can be performed as shown in Figure 7. Reading in accordance with a simple embodiment of the present disclosure involves reading a descriptor file 510 to obtain data for reading the media elements stored in the file body of the media file, and then reading the media elements from the media file in accordance with the descriptor file at 540. This process can continue by returning to the beginning of the process (e.g., 510) and repeating at 550 if more data needs to be read from the media file or if the descriptor file is updated to describe newly written media elements to the media file.

[0073] In some embodiments, a precursor process may be performed once at the start of the read process, or repeatedly as the read process continues, in which checks 515 and 520 are performed to determine whether a descriptor file has been written for the media file, and further whether data exists that allows the media elements stored in the descriptor file to be read.

[0074] If the descriptor file does not exist or is empty in step 520, reading may begin by reading the descriptor portion of the media file, and then the media elements are read according to the descriptor portion of the media file (step 540). This may indicate that the media file has been finalized and the descriptor file no longer exists, or that the media file has been newly created and has no content. In some embodiments, this may indicate that the descriptor portion of the media file has just been updated to reflect the current write state of the body of the media file, and the contents of the descriptor file have been cleared.

[0075] If the media file has not been committed and the writing method being used does not write the descriptor portion of the media file (see, for example, the alternative embodiment shown above), step 530 is not performed until the media file is committed.

[0076] Because a media file may be being written simultaneously while it is being read, it may be necessary to repeatedly read the descriptor file (and the descriptor portion of the media file, if necessary) to access newly available data that allows it to be read, corresponding to the newly written media elements in the body of the media file.

[0077] In some embodiments, the descriptor file is written sequentially, storing its data contiguously in fragments, such that only the new fragments need to be read to read the corresponding new media elements in the body of the new media file.

[0078] During simultaneous reads and writes, the reader can determine whether there are more media elements to access in one of several ways: In one embodiment, a file system notification may be sent to the reader when the descriptor file changes; in another embodiment, the reader may use a polling process to monitor the descriptor file for changes, and if there are changes, read a new fragment of the descriptor file so that the read operation can continue.

[0079] Embodiments of the reading and writing methods described herein can be used together to achieve simultaneous writing and reading of media files with latency of less than a few seconds. In this regard, during the write process, whenever a descriptor file associated with a media file is updated (e.g., by adding new fragments of descriptor data to the descriptor file), the media elements described by the new descriptor can be read. Thus, when the descriptor file is updated with a continuous stream of descriptor data or is otherwise updated periodically (e.g., every frame or every two frames, or every fixed short-term interval of less than 100 milliseconds or 250 milliseconds), substantially the entire contents of a media file can be read with very low latency. In some embodiments, reads with latency as low as two frames are possible. It is no longer necessary to wait for a media file's internal descriptor data to be updated in order to reference newly written media elements.

[0080] 8 provides a block diagram illustrating an example of a system 1000 in which embodiments of the present disclosure may be implemented. The computer system 1000 includes a bus 1002 or other communication mechanism for communicating information and a hardware processor 1004 coupled to the bus 1002 for processing information. The hardware processor 1004 may be, for example, a general-purpose microprocessor, a graphics processing unit, an FPGA, an ASIC, other types of processing units, or a combination thereof.

[0081] Computer system 1000 also includes a primary memory device 1006, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 1002 and used for storing information and instructions to be executed by processor 1004. Primary memory device 1006 may also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 1004. Such instructions, when stored in non-transitory storage media accessible to processor 1004, transform computer system 1000 into a special-purpose machine customized and configured to perform the operations specified in the instructions.

[0082] Computer system 1000 may further include a read-only memory (ROM) 1008 or other static storage device coupled to bus 1002 for storing static information and instructions for processor 1004. A storage device 1010 (e.g., an SSD, magnetic disk, optical disk, other storage medium, or arrangement of these media) is provided and coupled to bus 1002 and can store information and instructions, including media files, descriptor files, and applications, as described above.

[0083] Computer system 1000 may be connected via bus 1002 to a display 1012 (e.g., LCD, LED, touchscreen display, or other display) for displaying information to a computer user, such as the media playback devices described and illustrated above. An input device 1014, including alphanumeric and other keys, may be connected to bus 1002 for communicating information and command selections to processor 1004. Another type of user input device is a cursor control 1016, such as a mouse, trackball, or cursor direction keys for controlling cursor movement on display device 1012, used to communicate direction information and command selections to processor 1004.

[0084] According to at least one embodiment, the techniques described herein are performed by computer system 1000 by processor 1004 executing one or more sequences of instructions contained in primary storage device 1006. Such instructions may be loaded into primary storage device 1006 from other storage media, such as storage devices 1010, 1060 or a remote database. Execution of the instructions contained in primary storage device 1006 causes processor 1004 to perform the process steps described herein. In alternative embodiments, hardware circuitry may be used in place of or in combination with software instructions.

[0085] The computer system 1000 may further include a communications interface 1018 coupled to the bus 1002. The communications interface 1018 provides a two-way data communication connection to a network link 1020 that is connected to the communications network 1050. For example, the communications interface 1018 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or the like. As another example, the communications interface 1018 may be a local area network (LAN) card providing a data communication connection to a compatible LAN. A wireless link may also be implemented. In either implementation, the communications interface 1018 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various information. In embodiments in which the computer system is (or forms part of) a media processing device, the communications interface 1018 and its connected network link 1020 may be adapted to operate according to network protocols specialized for media transmission, such as HDMI, SDI, or other SMPTE standards.

[0086] The computer system 1000 may further include (or be connected to) a video card or other media capture and / or playback interface 1022. The media capture and / or playback interface 1022 may include one or more of the Blackmagic Decklink Card, UltraStudio, or other Blackmagic Desktop Video products. The interface may be integrated into the computer 1000 (e.g., like a video card) or configured as a separate hardware unit.

[0087] Computer system 1000 is further connected to external storage system 1060, for example, via network link 1020 (and optionally network 1050), which may be an external disk or array of storage media, network attached storage, a SAN, or other mass data storage accessible over a network or communications connection.

[0088] As used herein, the term "storage medium" or "storage media" refers to non-transitory media that store data and / or instructions that cause a machine to operate in a specific manner. Such storage media may include non-volatile media and / or volatile media. Examples of non-volatile media include optical and magnetic disks, such as storage device 1010 and storage devices forming part of external storage system 1060. Examples of volatile media include dynamic memory, such as primary storage device 1006. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape, other magnetic data storage media, flash memory, CD-ROMs, other optical data storage media, physical media with patterns of holes, RAM, PROM, EPROM, Flash EPROM, NVRAM, and other memory chips or cartridges.

[0089] The definitions expressly provided herein for terms contained in the appended claims shall govern the meaning of those terms in those claims. No limitation, element, property, feature, advantage, or attribute not expressly recited in a claim should in any way limit the scope of that claim.

[0090] As used herein, the terms "comprise" and "comprises" (and variations of these terms, such as "including," "including," "including," "comprises," "included," etc.) are inclusive and are not intended to exclude further features, components, elements, or steps.

[0091] With respect to aspects of the specification described using flowcharts, a particular flowchart step may be performed in various ways and by various devices, systems, or system modules. A particular flowchart step may be divided into multiple steps, or multiple flowchart steps may be combined into a single step, unless specifically stated to the contrary. Also, the order of steps may be changed without departing from the scope of the specification, unless specifically stated to the contrary.

Claims

1. 1. A method for writing a media file, the media file comprising: a file header containing data enabling the location of the descriptor portion of the file to be identified; a file body for storing media elements; a descriptor part that allows reading of media elements in the body part; wherein the method comprises: (a) burning media files; (b) writing at least one media element to the file body; (c) writing a descriptor file associated with the media file, the descriptor file including data enabling reading of media elements stored in a file body of the media file; (d) repeating (b) to write additional media elements to the file body; (e) repeating (c) to write additional data to the descriptor file to enable reading of additional media elements stored in the file body; and (f) after all additional media elements have been written to the file body, writing a descriptor portion to the media file that enables reading of the media elements in the body portion; How to burn media files, including:

2. 2. The method of claim 1, further comprising updating a file header to provide an updated indication of the location of the descriptor portion within the file.

3. 3. The method of claim 1, wherein (c) is repeated after each additional media element is written to the file body, or on a periodic or ad-hoc basis.

4. 4. The method of claim 1, wherein repeating (c) includes writing the additional data in new fragments that enable reading, the fragments enabling playback of media elements stored in a file body of the media file since the previous execution of (c).

5. The method of any one of claims 1 to 4, comprising finalizing the media file by writing a final descriptor portion to the media file; and deleting the descriptor file.

6. 1. A method of reading a media file recorded on a data storage medium, the media file comprising: a file header containing instructions identifying the location of the descriptor portion within the file; a file body for storing media elements; a descriptor part that allows the reading of media elements in the body part; wherein the method comprises: verifying the existence of the descriptor file associated with the media file and configured to include data that enables reading of media elements stored in a file body of the media file; If the descriptor file exists and contains data that allows the media element to be read, (x) reading the descriptor file associated with the media file and containing data enabling reading of media elements stored in the file body of the media file; and (y) reading the media elements from the file body according to the descriptor file; A method comprising:

7. 7. The method of claim 6, further comprising repeating (x) to obtain additional data that enables reading of media elements stored in a file body of the media file.

8. 8. The method of claim 7, wherein the read-enabling data is written to the descriptor file in fragments that are stored sequentially, each fragment enabling playback of media elements stored in the file body since the previous fragment was written to the descriptor file.

9. 9. The method of claim 8, wherein repeating (x) comprises reading one or more fragments written to the descriptor file since (x) was last repeated.

10. A method according to any one of claims 6 to 9, comprising detecting a change in the descriptor file and repeating (x) in response to said detection.

11. Detecting a change in the descriptor file includes: receiving a notification that the descriptor file has changed; or checking for changes to said descriptor file; 11. The method of claim 10, comprising any one of:

12. The method of any one of claims 6 to 11, further comprising repeating (y) to read additional media elements from the file body according to the additional data that enables the reading.

13. if the descriptor file associated with the media file does not exist; or In any case where the descriptor file associated with the media file does not contain data that allows for reading of the media element: (x2) reading a descriptor portion of a media file that enables reading of media elements within the body portion; and (y2) reading the media elements from the file body according to the descriptor portion of the media file; The method according to any one of claims 6 to 12, comprising:

14. 1. A method for playing a media file via a storage medium, comprising: (a) writing a media file to a storage medium using the method of any one of claims 1 to 5; and (b) reading a media file from a storage medium using the method of any one of claims 6 to 13; A method comprising:

15. 1. A method of live recording media, the media including multiple media elements, audio, video, or audio and video, the method comprising: creating a media file for the media, the file including a file header and a file body; During live recording by a media source: (a) receiving at least one media element of a plurality of media elements from the media source; (b) writing the at least one media element to a file body; and (c) writing data enabling reading of the at least one media element to a descriptor file associated with the media file; and After all of the plurality of media elements have been received, finalizing the media file by writing or updating a descriptor portion of the media file; Including, A method in which the file header contains data that can identify the location of a descriptor portion of the media file, and the descriptor portion contains data that can enable reading of media elements within the body portion.

16. The method of claim 15 , wherein the created media file includes a descriptor portion.

17. 17. The method of claim 16, wherein the created media file does not include a descriptor portion, and determining the media file includes adding a descriptor portion to the media file.

18. 18. The method of claim 15, comprising updating the descriptor file at least once per second during live recording based on a plurality of media elements received and written to the file body since the previous update.

19. The method of any one of claims 15 to 18, further comprising reading the media file during live recording or before finalizing the media file, wherein reading the media file comprises reading media elements of the file body according to the descriptor file.

20. A computer readable medium storing instructions which, when executed by a computer processor, cause the computer processor to perform the method of any one of claims 1 to 19.