Fragmented ISOBMFF Proxy for On-the-Fly Progressive Transmuxing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing systems face challenges in efficiently transmultiplexing fragmented ISOBMFF files to progressive ISOBMFF files, particularly due to the need to move the moov box to the front of the file, which is slow and requires disk writes, and is not conducive to on-the-fly multiplexing. Additionally, many recent playlist formats and APIs do not accept progressive ISOBMFF files, requiring conversion to fragmented ISOBMFF files for adaptive bitrate streaming.
Innovation Solution
A method and system for transmultiplexing fragmented ISOBMFF files to progressive ISOBMFF files by parsing fragments, generating a cache object, calculating output mdat offsets, and multiplexing output bytes to the progressive ISOBMFF format, allowing for on-the-fly conversion and serving of progressive ISOBMFF files.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If a second pass is made to move the moov box to the front of the file, then the file can be played while downloading, but the process is slow and requires disk writes
Solution Approach 1:
The patent applies preliminary action by writing the moov box to the front of the file during the initial multiplexing pass, rather than requiring a subsequent repass. The moov box is constructed with placeholder offsets that are updated as samples are multiplexed, enabling immediate playback capability without sacrificing multiplexing speed.
Solution Approach 2:
The patent creates a copy of the moov box structure and places it at the front of the file during the first pass. This copy contains initial offset information that is subsequently updated as the file is multiplexed, allowing the file to be playable immediately while the final structure is being built.
2Manufacturing precision
If the moov box is written at the end of the file after parsing and multiplexing, then all sample information is available, but the file cannot be streamed efficiently
Solution Approach 1:
The moov box is preliminarily written to the front of the file with initial offset values before all sample data is multiplexed. This allows the file structure to be valid and streamable immediately, while the actual sample offsets are updated as multiplexing progresses, maintaining both streaming capability and information accuracy.
Solution Approach 2:
The patent implements a dynamic moov box that is initially written with placeholder offset information and then updated as samples are multiplexed into the file. This dynamic approach allows the file to transition from an incomplete but streamable state to a complete and accurate state without requiring a second pass.
3Adaptability or versatility
If fragmented ISOBMFF files are converted to progressive ISOBMFF files, then compatibility with legacy systems is improved, but conversion requires complete file multiplexing
Solution Approach 1:
The conversion process applies preliminary action by constructing the progressive ISOBMFF moov box during the initial fragmented file parsing phase, rather than requiring complete file multiplexing first. This allows legacy system compatibility to be achieved incrementally as fragments are processed.
Solution Approach 2:
The patent uses an intermediary cache object that stores parsed fragment information and serves as a bridge between fragmented and progressive ISOBMFF formats. This cache object allows the conversion process to proceed incrementally without requiring complete file multiplexing, reducing conversion complexity.
Data Source
AI summary
An aspect of the subject technology includes a method including receiving a request including an input file and a selection. The input file is in the fragmented ISOBMFF format. The method also includes parsing one or more fragments from the input file, generating a cache object based on the fragments, generating an output moov box based on at least one of the fragments or the cache object, calculating output mdat offsets for the selection corresponding to the fragments based on at least one of the fragments or the cache object, and determining output bytes of an output mdat section. The output mdat section is based on the output mdat offsets. The method further includes multiplexing the output bytes to the progressive ISOBMFF format, and serving the multiplexed output bytes.


