Fast internal conversion from FMP4 to MP4
The in-place conversion of FMP4 files to MP4 format by modifying headers in the FMP4 file addresses the resource-intensive and data loss issues of conventional methods, ensuring data preservation and compatibility with legacy players.
Patent Information
- Application Number
- JP2023520039
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-10-05
- Filing Date
- 2021-08-01
- Publication Date
- 2026-03-04
- Estimated Expiration
- 2041-08-01
AI Technical Summary
Conventional methods for converting fragmented MP4 (FMP4) files to standard MP4 files are resource-intensive and prone to data loss due to the need for copying audio/video data, which can fail if insufficient memory is available, and the conversion process is tedious, making the files incompatible with legacy players.
An in-place conversion technique that modifies the FMP4 file by generating a final moov atom and changing the header designation of initial moov and fragment headers to 'mdat', effectively converting the file to MP4 without creating a duplicate, thus preserving the data and reducing resource requirements.
This method ensures data preservation during system failures and reduces processing and memory usage, allowing seamless conversion of FMP4 files to MP4 format compatible with legacy players.
Smart Images

Figure 0007824284000001 
Figure 0007824284000002 
Figure 0007824284000003
Abstract
Description
[Background technology]
[0001] The Moving Picture Experts Group (MPEG) has defined many multimedia standards, including the widely adopted MPEG-4 Part 14 standard (commonly referred to simply as "MP4"). MP4 is a digital multimedia container format used to store audiovisual files, and as more and more users go online, the MP4 standard has become the standard for storing multimedia files. Many multimedia applications allow users to play and record audiovisual files as easily shareable MP4 files. Most users today have little or no knowledge of how these applications create MP4 files.
[0002] To record content as an MP4 file, a user typically presses a record button to begin capturing audio and video (audio / video) data. When complete, the user stops recording, and the multimedia application performs several complex operations to finalize the MP4 file. One of the operations performed during the finalization stage is the creation of a "moov" atom (commonly called a "movie" atom). These moov atoms contain a header containing various data used by multimedia players. With traditional MP4 recording, if the application crashes before the moov atom is written, the audio / video becomes unplayable. However, the average user creating an MP4 file is unaware that there are additional processes that must occur after recording stops. As a result, users often quit the recording application before the moov atom is written and finalization is complete.
[0003] This becomes even more problematic for longer recordings that require more complex moov atoms, where writing the header often times out before the moov atom is complete. If the moov atom is not created before the application is closed, if writing the moov atom times out, or if there is not enough disk space to store the finalized MP4 recording, the recording may be lost. Clearly, losing a recording can have a devastating impact on the user experience, especially if the recording is important.
[0004] A relatively new variation on the MP4 format is the fragmented MP4 (FMP4) format. Instead of one single "moof" atom written after a recording is created, FMP4 generates several fragment headers (called "moof" atoms) for different fragments of a multimedia file. These "moof" atoms are interspersed throughout the recording. However, because FMP4 has not been widely adopted, FMP4 files must be converted back to traditional MP4 files before they can be fully used with multimedia players. Otherwise, various player functions (e.g., playback, seeking, etc.) will not function properly. This conversion process (FMP4 to MP4 conversion) is very tedious and resource-intensive. Audio / video data must be copied from the FMP4 file to the newly created MP4 file, resulting in two instances of the data. Two copies of the same audio / video data strain processing and memory resources, or, worse, if insufficient memory is available for both copies of the audio / video data, the conversion may fail, resulting in loss of audio / video data. Summary of the Invention
[0005] The disclosed examples are described in detail below with reference to the accompanying drawings: The following summary is provided to illustrate some examples disclosed herein, but is not meant to limit any examples to any particular configuration or sequence of operations.
[0006] Examples disclosed herein are directed to techniques and apparatus configured for in-place conversion of an FMP4 file to MP4 format without creating a separate file. To do so, audio / visual data is recorded or accessed by a multimedia application. The recorded audio / visual data is stored in an FMP4 file and assigned an initial moov atom (referred to herein as the "moov(i)" atom). A fragment header (moof) is also assigned to a portion of the audio / visual data. In this manner, if the multimedia application is closed before the FMP4 file is converted or if a system failure occurs, an FMP4 file with at least a fragment header is stored. However, when recording is completed (e.g., the user stops recording), the FMP4 file is converted to an MP4 file. This conversion is performed by generating and appending a final moov atom (referred to herein as the "moov(f)" atom) to the FMP4 file and further changing the header designation of the initial moov(i) atom from the "moov" designation to the "mdat" designation. Changing the header specification to mdat makes the initial moov(i) atom and fragment headers opaque to the multimedia player, effectively converting the FMP4 file to an MP4 file without making multiple copies of the audio / video data. [Brief explanation of the drawings]
[0007] The disclosed implementations and examples are described in detail below with reference to the accompanying drawings, in which:
[0008] [Figure 1]1 illustrates a block diagram of a client computing device configured to perform internal conversion of FMP4 files to MP4 format in accordance with some of the disclosed implementations.
[0009] [Figure 2] 1 illustrates a block diagram of an FMP4 version of an audio / visual file being recorded for conversion to MP4 format according to some of the disclosed implementations.
[0010] [Figure 3] 1 shows a block diagram of an FMP4 version of an audio / visual file after recording, according to some of the disclosed implementations.
[0011] [Figure 4] 1 illustrates a block diagram of an FMP4 version of an audio / visual file after internal conversion to MP4 format according to some of the disclosed implementations.
[0012] [Figure 5] 1 illustrates an example data file of an FMP4 audio / visual file being converted to MP4 format using the disclosed internal conversions, according to some of the disclosed implementations.
[0013] [Figure 6] 1 shows an example data file of an FMP4 audio / visual file converted to MP4 format in accordance with some of the disclosed implementations.
[0014] [Figure 7] 1 shows a flowchart diagram of a workflow for performing internal conversion of FMP4 files to MP4 files according to some of the disclosed implementations.
[0015] [Figure 8]1 shows a flowchart diagram of a workflow for converting an FMP4 file to an MP4 file according to some of the disclosed implementations. DETAILED DESCRIPTION OF THE INVENTION
[0016] Various implementations are described in detail with reference to the accompanying drawings. Whenever possible, the same reference numbers will be used throughout the drawings to refer to the same or similar parts. References made throughout this disclosure to specific examples and implementations are provided for illustrative purposes only and are not intended to be limiting of all examples unless indicated to the contrary.
[0017] The implementations and examples disclosed herein provide systems, methods, and computer storage memories with instructions for performing an internal conversion of an FMP4 file to an MP4 file. As referred to herein, "in-place" conversion refers to modifying an existing FMP4 file to convert it to MP4 format. In some implementations, the internal conversion is performed by writing a new moov atom based on the fragment header of the FMP4 file and then changing the header information of the initial moov atom from "moov" to "mdat," making the initial moov atom opaque to the multimedia player. Using the disclosed techniques and apparatus, only one file—the FMP4 file—is required to generate an MP4 file. In contrast, conventional techniques for converting FMP4 to an MP4 file require creating a new MP4 file and copying the audio / visual data from the FMP4 file to the new MP4 file, which creates two copies of the audio / visual data and doubles memory and processing requirements. By first recording a multimedia file as an FMP4 file and then converting the FMP4 file to MP4 using the disclosed internal conversion, the recording—or at least a large portion of the recording—is prevented from being lost before the MP4 finalization stage, and the conversion requires only a small amount of additional memory beyond the FMP4 file, reducing the processing and memory requirements traditionally required for FMP4 to MP4 conversion.
[0018] FMP4 files contain multiple fragment headers (moof atoms), which are interspersed among different portions (or fragments) of the recorded audio / visual data. For example, an FMP4 recording might contain a first moof atom assigned to the first block of audio / visual data, a second moof atom assigned to the second block of audio / visual data, and so on. If the multimedia application recording the audio / visual data (e.g., through recording) is closed, fails, or some other issue prevents the FMP4 file from finalizing, at least some of the audio / visual data remains preserved with its corresponding fragment moof atoms. Because the FMP4 file generates and stores fragment moof atoms containing portions of the recorded audio / visual data, once the moof atoms are allocated, those portions are effectively finalized for the FMP4 file. Therefore, if an error occurs before the FMP4 file is finalized, all audio / visual data except for at least the last fragment will have been preserved. In other words, in a recording of N fragments, at least N-1 fragments will have been preserved, because fragment moof atoms were allocated as the audio / visual data was recorded. Therefore, when using the FMP4 format, if finalization is not completed successfully, the entire recording will not be lost, but at most only the last fragment.
[0019] Additionally, using the disclosed implementation as an example, minimal resources are required to perform the internal conversion of an FMP4 file to MP4 format. Once recording stops, a finalization sequence is performed. In some examples, the finalization sequence involves using information from the fragment moof atom and the first moov atom in the FMP4 file to generate and append an MP4 moov atom to the recorded FMP4 file. Note that this generated MP4 moov atom is appended to the FMP4 file to facilitate the internal conversion, rather than a new file generated from the FMP4 file data. When the MP4 moof atom is appended to the FMP4 file, some implementations modify the header of the first moov atom in the FMP4 file, and optionally, the fragment moof header is also modified from the "moof" designation to the "mdat" designation. The mdat designation marks the atom as audio / visual data, rather than a moov or moof atom. Changing the headers of the initial moov atom and fragment moof header from moof to mdat changes the initial moov atom and fragment moof header of the FMP4 file to an opaque mdat atom that is not seen or processed by multimedia applications. Obfuscating the initial moov atom and moof atom in this way may add unnecessary bytes of data to the converted FMP4 file, but it is much less resource expensive than copying the FMP4 audio / visual data into a new MP4 file.
[0020] In some implementations, a new MP4moov atom added to an FMP4 file includes the appropriate chunk offset. A chunk offset is a number that describes the timing offset of audio data, video data, media data, frames, and / or samples in an MP4 file. Audio, video, and media data are written to an MP4 file in units called "blurbs" or "chunks." For example, a frame of video might be written, followed by a frame of audio, then metadata, and then additional audio, video, or media data. This interleaving pattern creates chunks of data for each media type. The disclosed FMP4 and MP4 files can include a chunk offset table that describes the offsets of each chunk of data for a given media track.
[0021] Once the MP4moov atom is added and the initial FMP4moov atom is changed to mdat, the FMP4 file is essentially converted into a usable MP4 file. The new MP4 file can be stored, transmitted, played, or otherwise used in a variety of multimedia applications. Using these disclosed techniques, FMP4 files are quickly converted to MP4 without costly copying and processing. Additionally, the newly created MP4 file is compatible with legacy players, and the MP4 file can be converted back to FMP4 at any time by overwriting the modified mdat header and changing the initial moov atom to moov atom.
[0022] Having generally provided an overview of some of the disclosed examples, attention is now directed to the accompanying drawings to further explain some additional details. Illustrated configurations and sequences of operation are provided to aid in understanding some aspects of the disclosed examples. The accompanying drawings are not intended to be limiting of all examples; thus, some examples may include different components, devices, or sequences of operations without departing from the scope of the disclosed examples discussed herein. That is, some examples may be embodied or function in a manner different from that shown.
[0023] 1 is a block diagram of a client computing device configured to perform internal conversion of FMP4 files to MP4 format according to some of the disclosed implementations. Client computing device 100 includes one or more processors 102, input / output (I / O) ports 104, communication interfaces 106, computer storage memory (memory) 108, I / O components 110, and communication paths 112. Client computing device 100 can communicate with other devices or cloud computing resources via network 114.
[0024] Client computing device 100 may be any of many types of computing devices, including, but not limited to, a laptop, a smartphone, a tablet, a virtual reality (VR) or augmented reality (AR) headset, a smart watch, a wearable, an electronic kiosk, a smart car, etc. Although client computing device 100 is shown as a single device, multiple client computing devices 100 may operate together and share the illustrated device resources. For example, various processors 102 and memories 108 may be housed and distributed across multiple client computing devices 100. Client computing device 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention.
[0025] Processor 102 may include any number of microprocessors, microcontrollers, analog circuits, etc., programmed to execute computer-executable instructions to implement aspects of the present disclosure. In some examples, processor 102 is programmed to execute instructions such as those shown in other figures described herein. In some implementations, processor 102 is programmed with instructions to function for the specific purpose of performing internal conversion of FMP4 files to MP4 format, as disclosed herein.
[0026] The I / O ports 104 connect various hardware I / O components 110 to the client computing device 100. Examples of I / O components 110 include, but are not limited to, one or more microphones 110a, cameras 110b, and speakers 110c, which operate to capture and present audio / visual content, for example. The client computing device 100 may additionally or alternatively be equipped with other hardware I / O components 110, such as, but not limited to, displays, touchscreens, AR and VR headsets, peripherals, joysticks, scanners, printers, and the like. Such components are well known to those skilled in the art and need not be described in detail herein.
[0027] Communications interface 106 allows software and data to be transferred between client computing device 100 and external devices over network 114. Communications interface 106 may include a modem, a network interface (e.g., an Ethernet card), a communications port, a Personal Computer Memory Card International Association (PCMCIA) slot and card, a wireless adapter, etc. The software and data transferred over communications interface 106 are in the form of signals, which may be electronic, electromagnetic, optical, or other signals receivable by communications interface 106. Such signals are provided to communications interface 106 over communications path (e.g., channel) 112. Communications path 112 carries signals and may be implemented using wired, wireless, fiber optic, telephone, cellular, radio frequency (RF), or other communications channels.
[0028] Network 114 can include any computer network or combination thereof. Examples of computer networks that can be configured to operate as network 114 include, but are not limited to, wireless networks, landlines, cable lines, digital subscriber lines (DSL), fiber optic lines, cellular networks (e.g., 3G, 4G, 5G, etc.), local area networks (LANs), wide area networks (WANs), metropolitan area networks (MANs), etc. However, network 114 is not limited to connections coupling separate computer units. Rather, network 114 can also include subsystems that transfer data between servers or computing devices. For example, network 114 can also include point-to-point connections, the Internet, Ethernet, electrical buses, neural networks, or other internal systems. Such network architectures are well known and need not be discussed in depth here.
[0029] Computer storage memory 108 includes any amount of memory associated with or accessible to client computing device 100. Computer storage memory 108 may take the form of computer storage media, referenced below, and operatively provides storage of computer-readable code, data structures, program modules, and other code for client computing device 100 for storing and accessing instructions configured to perform various operations disclosed herein. Computer storage memory 108 may include memory devices in the form of volatile and / or non-volatile memory, removable or non-removable memory, a data disk of a virtual environment, or combinations thereof. Examples of client computing device 100 include, but are not limited to, memory technologies such as random access memory (RAM), read-only memory (ROM), electronically erasable programmable read-only memory (EEPROM), flash memory, CD-ROM, digital versatile disk (DVD), other optical or holographic media, magnetic cassettes, magnetic tape, magnetic disk storage, other magnetic storage devices, memory hardwired to an analog computing device, or other computer memory.
[0030] Computer storage memory 108 may be located within client computing device 100 (as shown in FIG. 1 ), external to client computing device 100 (not shown), or both (not shown). Additionally or alternatively, computer storage memory 108 may be distributed across multiple client computing devices 100 and / or servers, for example, in a virtualized environment providing distributed processing. For purposes of this disclosure, "computer storage medium," "computer storage memory," "memory," and "memory device" are synonyms for computer storage medium 108, and none of these terms include a carrier wave or propagating signal.
[0031] In some examples, computer storage memory 108 stores executable computer instructions for an operating system (OS) 116 and various software applications 118. OS 116 may be any OS designed to control the functionality of client computing device 100, including, but not limited to, WINDOWS® developed by MICROSOFT CORPORATION® of Redmond, Washington, MACOS® developed by APPLE, INC.® of Cupertino, California, ANDROID™ developed by GOOGLE INC.® of Mountain View, California, the open source LINUX®, etc.
[0032] Among other programs, applications 118 include a multimedia application 120 configured to play and capture (e.g., record) audio and / or video captured by microphone 110a and camera 110b of I / O component 110, respectively. Multimedia application 120 may be a video or audio player, a video or audio recorder, a video conferencing application (e.g., MICROSOFT TEAMS®), a video sharing application (e.g., YOUTUBE®), or any other audio / video player. In some implementations, multimedia application 120 provides a recording function that allows a user to capture audio and / or video being captured by I / O component 110. Additionally or alternatively, multimedia application 120 may also provide a playback function for playing back audio and / or video. Multimedia application 120 may include an application for recording audio / video data (e.g., a multimedia recorder) and an application for playing back audio / video data (e.g., a multimedia player). For clarity, the implementation and examples are described here as capturing both audio and video (audio / video), but the same implementation can also be used to perform internal conversion of audio-only or video-only FMP4 files.
[0033] During operation, the multimedia application 120 records an FMP4 file that includes various fragment (moof) headers generated during recording and scattered throughout the FMP4 file. As previously mentioned, recording an FMP4 format file with fragment headers ensures that at least the FMP4 file of the recording, or at least most of the recording (e.g., N-1 fragments), will exist if a failure occurs before MP4 finalization. For example, if the captured FMP4 file recording is 60 minutes long and has 10 6-minute fragments, and there was only enough time for five of the segments to generate and allocate fragment (moof) headers before a system crash or the multimedia application 120 is closed, the resulting FMP4 file will be saved with at least five fragments and five fragment headers each before the crash or closure. Thus, the user has at least 50 minutes of FMP4 files out of the total 60 minutes, which is much better than losing the entire file because the MP4 moof atom could not be written before the failure / termination.
[0034] In some implementations, the multimedia application 120 includes an internal converter 122 for converting FMP4 files to MP4 using the techniques disclosed herein. The internal converter 122 includes executable code instructions or firmware that internally converts the audio / visual file 124 from FMP4 to MP4 format without creating a new MP4 file. For clarity, the same audio / visual file 124 is shown at two different times: before finalization (time A) and after finalization (time A'). That is, although two instances are shown at different times A and A', only one audio / visual file 124 is generated. The audio / visual file 124 is not copied or recreated. Instead, the audio / visual file 124 is initially recorded in FMP4 format, and the FMP4 version of the audio / visual file 124 is then modified using the techniques described herein for conversion to an MP4 file. Again, although two instances of the audio / visual file are shown in FIG. 1, only one file is used.
[0035] As previously mentioned, an audio / visual file 120 is captured in FMP4 format when a user begins recording, as shown at time A. The FMP4 version of audio / visual file 124, shown on the left of time A, originally includes an mdat specification (shown as mdat section 130), an initial FMP4 moov atom 126, and one or more fragment headers 128a-n assigned to different portions of the audio / visual data. Again, recording the audio / visual data and assigning fragment headers 128a-n ensures that at least a portion of the FMP4 (e.g., N-1 fragments) will survive a crash or failure.
[0036] When recording stops, the internal converter 122 modifies (automatically or in response to a user prompt) the FMP4 version of the audio / visual file 124 to create the MP4 version displayed at time A'. Such modification includes writing and appending (e.g., appending to) a finalized MP4moov atom (referred to herein as "moov(f)") 132 to the FMP4 version of the audio / visual file 124. In some implementations, the MP4moov(f) atom 132 is generated, at least in part, from the initial FMP4moov(i) atom 126 and fragment headers 128a-n. After the MP4moov(f) atom 132 is generated, the internal converter 122 hides the FMP4moov(i) atom 126 and fragment headers 128a-n by changing the "moov" and "moof" headers to "mdat" headers. To do this, search for the moov and moof headings and change both, or at least change the moov designation of the moov(i) atom 126 to an mdat designation.
[0037] Marking the FMP4 moov(i) atom 126 and fragment headers 128a-n as mdat instead of moov and moof, respectively, makes these atoms 126 and 128a-n opaque to the multimedia application 120. In other words, the FMP4 moov(i) atom 126 and fragment headers 128a-n are used to create an FMP4 recording of the audio / visual file 124, but then when the final MP4 moov(f) 132 is written, the headers of these atoms 126 and 128a-n are modified. This effectively converts the FMP4 version of the audio / visual file 124 to MP4 format, but the additional atoms 126 and 128a-n modified into mdat headers are minimal in size and require far fewer processing and memory resources than if the audio / visual data had to be written to a new file.
[0038] Figures 2-4 are block diagrams illustrating the internal conversion of an FMP4 version of an audio / visual file 124 to MP4 format by internal converter 122. These figures show audio / visual file 124 at different times, from recording as FMP4 to conversion to MP4. Specifically, Figure 2 shows the FMP4 version of audio / visual file 124 during recording. Figure 3 shows the FMP4 version of audio / visual file 124 after recording has stopped. Figure 4 shows the MP4 version of audio / visual file 124 created by modifying the FMP4 version.
[0039] Looking initially at FIG. 2, we can see that the audio / visual file 124 is being captured as an FMP4 file. A user or application 118 may have initiated recording of the audio and / or visual data. For example, a user may select a recording option during a video conference, video feeds from a home security camera may automatically begin recording when the doorbell is pressed or motion is detected, or recording may be initiated in a myriad of other ways. During recording, the audio / visual file 124 is initially recorded as an FMP4 file, and an initial FMP4moov(i) atom 126 is generated and assigned. Additionally, because the recording is being captured in FMP4, various fragment headers 128a-n are generated during recording and assigned to different audio / visual data within the mdat 130 payload. As recording continues, additional fragment headers 128 are generated and added to the audio / visual data.
[0040] FIG. 3 shows the FMP4 version of the audio / visual file 124 after recording has stopped. Once recording has stopped, the internal converter 122 begins finalization by creating a final moov(f) atom 132 from the initial moov(i) atom 126 and fragment moof atoms 128a-n. Once the final moov(f) 132 is created and appended to the FMP4 version of the audio / visual file 124, the FMP4 to MP4 conversion is completed by obfuscating the initial moov(i) atom 126 and fragment headers 128a-n, as shown in FIG. 4. To do this, some implementations change the headers of the initial moov(i) atom 126 and fragment headers 128a-n from "moov" and "moof" to "mdat." Overwriting these headers with mdat makes the initial moov(i) atom 126 and fragment headers 128a-n opaque to the multimedia application 120 and prevents them from being processed during playback. This effectively converts the FMP4 version of the audio / visual file 124 to MP4 without creating a new file, and hides the first moov(i) atom 126 and the FMP4 fragment headers 128a-n by modifying only the header of the first moov(i) atom 126. That is, some implementations modify only the bytes of the first moov(i) atom 126 to hide both it and the fragment headers 128a-n.
[0041] Furthermore, the newly created MP4 can also be converted back to the FMP4 format by reverting the change of the first moov(i) atom 126. That is, the newly created MP4 file can be converted back to FMP4 by changing the first moov(i) atom 126 from an mdat designation back to a moov header designation. Because the MP4 file contains all the data in the first moov(i) atom 126 and fragment headers 128a-n, this change from mdat to moov causes the first moov(i) atom 126 and fragment headers 128a-n to become visible to the multimedia application 120.
[0042] 5 and 6 illustrate modifying an FMP4 data file 500 of an audio / visual file 124 for internal conversion to MP4 format according to some published implementations. As shown in FIG. 5, the data file 500 includes an initial moov(i) atom 126, depicted within a dotted box. The initial moov(i) atom 126 includes a moov header 502 that specifies that the atom 126 is a moov atom. In some implementations, this initial moov(i) atom 126 is initially created and assigned the moov header 502 while the audio / visual file 124 is being recorded. When recording stops, the internal converter 122 is triggered to perform the disclosed internal conversion of the FMP4 data file 500 to MP4 format.
[0043] The internal conversion of FMP4 data file 500 to MP4 format is performed, in some implementations, by changing the moov header 502 of data file 500 from the "moov" designation to the "mdat" designation. This change is illustrated in FIG. 6. As shown, the previous moov header 502 of the first moov(i) atom 126 has been changed to an mdat header 604 by changing "moov" to "mdat." Changing the moov header 502 to the mdat header 604 obscures the first moov(i) atom 126 from the multimedia application 120. This effectively converts the FMP4 data file 500 to an MP4 file without creating or copying any data into a new file.
[0044] 7 shows a flowchart diagram of a workflow 700 for performing internal conversion of FMP4 files to MP4 files according to some of the disclosed implementations. First, a command to begin capturing audio / visual data is received, as shown at 702. This can be provided by a user activating a recording function in a multimedia application, such as a videoconferencing application. Alternatively, the audio / visual data can be captured by accessing streaming audio / video content online and recording the audio / visual content using the microphone and / or camera of the client computing device 100, by accessing the audio / video content over the Internet, or in any other manner.
[0045] The audio / visual data is initially stored as an FMP4 file, then converted to an MP4 file, as shown at 702, and finally converted to MP4 format using the disclosed internal conversion techniques. During the capture of the audio / visual data, an initial moov(i) atom is generated and assigned to the FMP4 file, as shown at 704. Fragment headers are generated and assigned to different portions of the FMP4 file, as shown at 706. For example, a first moov header is assigned to 10 minutes of audio / video data, a second moov header is assigned to the next 10 minutes of audio / video data, and so on. Additional fragment headers are assigned to the captured audio / video data until the capture (e.g., recording) of the audio / video data stops, as shown at decision box 708. Once the capture stops, the created FMP4 file is converted to MP4 format, as shown at 710, using the operations shown in FIG. 8, as shown at branch connector A, as referenced next.
[0046] As shown at 712, if a system failure occurs on the client computing device, it may be closed before, during, or before the internal conversion of the audio / visual data to MP4 format, leaving the FMP4 file intact, as shown at 714. Similarly, as shown at 716, if a multimedia application capturing or accessing the audio / visual data is closed before conversion, the FMP4 file may be preserved, as shown at 714. These two paths allow at least a portion of the audio / video data to be preserved for later conversion.
[0047] FIG. 8 shows a flowchart diagram of a workflow 800 for converting an FMP4 file to an MP4 file according to some of the disclosed implementations. As previously described, the internal conversion of FMP4 may begin when the capture (e.g., recording) of the audio / video data is stopped. After stopping, a final moov(f) atom of the FMP4 file of the audio / visual data is created, as shown at 802. This final moov(f) atom may be generated, in part, from the initial moov(i) atom and the fragment header of the FMP4 file. In some implementations, the final moov(f) atom is otherwise appended or added to the FMP4 file.
[0048] Once added, the internal conversion is completed by changing the header of the first moov(i) to an mdat specification, as shown at 804. To do this, in some implementations, the internal converter searches for the moov(i) header in the FMP4 file and changes it to mdat. In some implementations, the fragment header is also changed to an mdat specification. Once at least the moov(i) header has been changed, the FMP4—with the final moov(f) atom added and the first moov(i) atom changed—may be stored as an MP4 file, as shown at 806.
[0049] The disclosed examples and implementations may be described in the general context of computer code or machine-usable instructions, including computer-executable instructions, such as program components, executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program components, including routines, programs, objects, components, data structures, etc., refer to code that performs particular tasks or implements particular abstract data types. The disclosed examples may be implemented in a variety of system configurations, including personal computers, laptops, smartphones, mobile tablets, handheld devices, consumer electronics, and specialized computing devices. The disclosed examples may also be implemented in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
[0050] Examples of the disclosure may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices, in software, firmware, hardware, or combinations thereof. Computer-executable instructions may be organized into one or more computer-executable components or modules. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the disclosure may be implemented with any number and arrangement of such components or modules. For example, aspects of the disclosure are not limited to the specific computer-executable instructions or specific components or modules illustrated in the figures and described herein. Other examples of the disclosure may include different computer-executable instructions or components with more or less functionality than shown and described herein. In examples involving a general-purpose computer, aspects of the disclosure, when configured to execute the instructions described herein, transform the general-purpose computer into a special-purpose computing device configured to perform internal conversion of FMP4 files to MP4 format.
[0051] By way of example, and not limitation, computer-readable media comprises computer storage media devices and communication media. Computer storage media devices include volatile and nonvolatile, removable and non-removable memory implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, etc. Computer storage media devices are tangible and mutually exclusive to communication media. Computer storage media devices are implemented in hardware and exclude carrier waves and propagated signals. For purposes of this disclosure, computer storage media devices are not signals themselves. Examples of computer storage media devices include hard disks, flash drives, solid-state memory, phase-change random access memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD-ROM), digital versatile disc (DVD) or other optical storage devices, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other non-transmission media that can be used to store information for access by a computing device. In contrast, communication media typically embodies computer-readable instructions, data structures, program modules, etc., in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
[0052] Additional Examples There are several examples of methods (workflow 700) for performing internal conversion of fragmented MP4 (FMP4) files to MP4 files. capturing (702) the audio and visual data of the FMP4 file; During the capture, generating an initial moov atom for the FMP4 file, the initial moov atom including a header with a moov designation (704); detecting (708) a cessation of the capturing of the audio and visual data; When a stop occurs, converting (710) the FMP4 file to the MP4 file by changing the header of the initial moov atom to an mdat specification; Converting FMP4 files directly to MP4 files using the disclosed internal conversion dramatically reduces the amount of memory and processing resources required for such a conversion, while also capturing the audio / visual data in a format that will survive a system failure or crash.
[0053] Some implementations also include storing the mdat-specified FMP4 file as an MP4 file (806), so that only the FMP4 file is required to create an MP4 file using internal conversion.
[0054] Some examples further include assigning at least one fragment header to a portion of the audio and visual data, and generating a final moov atom for the MP4 file from the initial moov atom and the at least one fragment header (706). Interspersed fragment headers provide safety in case the conversion to MP4 is not completed before a crash or system failure, ensuring that at least N-1 fragments are preserved for the user.
[0055] Some examples further include changing at least one fragment header to an mdat specification (Figure 4, 128a-n). Thus, only the FMP4 file is required for conversion; no additional files need to be created, and no audio / video data needs to be copied.
[0056] Some examples further include the step of creating a final moov atom from the initial moov atom and appending the final moov atom (802) to an FMP4 file that also contains the initial moov atom (802). Appending the final moov atom to the FMP4 file provides a way to use the FMP4 file as an MP4 file instead of copying the entire audio / video data into a new file.
[0057] In some examples, the header of the initial moov atom is modified after the final moov atom is appended to the FMP4 file 804. Waiting until the final moov atom is appended ensures that the MP4 file is written correctly.
[0058] In some examples, the conversion of the FMP4 file to the MP4 file occurs 124 without creating a new file or copying data other than the FMP4 file, thereby saving significant processing and memory resources for the FMP4 to MP4 conversion.
[0059] Some examples include assigning (706) at least one fragment header to the portion of the audio and visual data; Detecting (716) that the multimedia application that captures the audio and visual data has closed; storing (714) the FMP4 file with the at least one fragment header; receiving (122) an instruction to open the stored FMP4 file; Once the FMP4 is opened, starting the conversion of the FMP4 file to the MP4 file (710); As mentioned above, the fragment header helps preserve the FMP4 file in case of a crash, system failure, or application termination before the internal conversion is complete.
[0060] Some examples include the steps of: changing the initial moov atom to the mdat specification and starting playback of the MP4 file (120); and ignoring (120) the initial moov atom and one or more fragment headers of the FMP4 file for mdat specification during said playback. After hiding the initial moov atom and fragment headers, the conversion process is finalized, adding a few extra bytes of data to the MP4 file, but the conversion requires much less processing and memory resources than conventional conversion.
[0061] In some examples, the MP4 file includes the FMP4 file with the header of the initial moov atom changed to the mdat specification 124. By obfuscating the initial moov atom, it is possible to create an MP4 file from an FMP4 file, in part, without creating a new file.
[0062] In some examples, capturing audio and visual data includes recording the audio and visual data 110. Examples described herein ensure that such recording, or at least a substantial portion of it, is always captured regardless of system failure, application termination, or other interruptions before the file is converted to MP4 format.
[0063] In some examples, the recording step is performed in at least one of a video conferencing application, a teleconferencing application, or a video sharing application 110. Adding the internal conversion described herein to such applications improves the user experience by preserving files in the event of a system failure, application termination, or other interruption.
[0064] In some instances, the FMP4 file is converted to an MP4 file at the client computing device (100), providing a client-side application that protects the user's recordings and also saves valuable processing and memory resources.
[0065] Another example is how to perform internal conversion of a fragmented MP4 (FMP4) file to an MP4 file (100). a memory (108) having embedded therein a multimedia application configured to convert the FMP4 to the MP4 file; one or more processors, capturing (702) the audio and visual data of said FMP4 file; During the capture, an initial moov atom of the FMP4 file is generated (704), the initial moov atom including a header with a moov designation (124); Detecting (708) a stop of the capturing of the audio and visual data; When the stop occurs, convert the FMP4 file to the MP4 file by changing the header of the initial moov atom to an mdat specification (710); one or more processors (102) programmed to: Systems that perform internal conversions dramatically reduce the amount of memory and processing resources required for such conversions, while capturing the audio / visual data in a format that survives system failures or crashes.
[0066] In some instances, changing the header of the initial moov atom to the mdat specification is performed automatically by the multimedia application without user intervention 122. Because the user is likely unaware of the file conversion, performing the internal conversion automatically only enhances the user experience, and in some cases does not hinder it.
[0067] In some examples, one or more processors may: Allocating (706) at least one fragment header to a portion of the audio and visual data; Detecting (716) the termination of a multimedia application that captures audio and visual data; Stores an FMP4 file with at least one fragment header (714), Change the second header of at least one fragment header to specify mdat (804) Therefore, only the FMP4 file is needed for conversion - no additional files need to be created and no audio / video data needs to be copied.
[0068] In some examples, capturing audio and visual data includes recording the audio and visual data 110. Adding the disclosed internal conversion to multimedia applications improves the user experience by saving audio / video data to FMP4 files and automatically converting FMP4 files to player-friendly MP4 files.
[0069] In some examples, the capture is performed through a recording function of at least one of a video conferencing application, a teleconferencing application, or a video sharing application 110. Such applications can be equipped with the disclosed internal converter to conserve processing and memory resources by performing the disclosed internal conversion of FMP4 files to MP4 files.
[0070] Yet another example is directed to one or more computer storage memories (108) with computer-executable instructions executable by at least one processor (102) to perform an internal conversion of a fragmented MP4 (FMP4) file to an MP4 file. The memory includes: a file multimedia application (120) executable by the at least one processor (102) and configured to capture audio and visual data of the FMP4 file and assign (110) an initial moov atom to the FMP4 file; an internal converter (122) executable by the at least one processor and configured to convert the FMP4 file to the MP4 file by changing a header of the initial moov atom from a moov designation to an mdat designation; It converts FMP4 to MP4 files without creating a new file and copying the data, saving a lot of memory and processing resources.
[0071] In some instances, the initial moov atom header change occurs when the aforementioned cessation of audio and visual data capture (708) occurs, so that the internal conversion occurs automatically, thereby reducing inevitable errors that require user intervention.
[0072] Although the disclosed aspects are described in terms of various examples and their associated operations, one skilled in the art will appreciate that a combination of operations from any number of different examples is within the scope of the disclosed aspects.
[0073] The execution or order of performance of operations in the examples of the disclosure illustrated and described herein is not required and may be performed in different orders in various examples. For example, it is considered within the scope of aspects of the disclosure for a particular operation to be performed or executed before, contemporaneously with, or after another operation.
[0074] When introducing elements of aspects of the disclosure and examples thereof, the articles "a," "an," "the," and "said" are intended to mean that there are one or more of those elements. The terms "comprising," "including," and "having" are intended to be inclusive and mean that there may be additional elements other than the listed elements. The term "exemplary" is intended to mean "an example of." The phrase "one or more of: A, B, and C" means "at least one of A, and / or at least one of B, and / or at least one of C."
[0075] After describing the disclosed aspects in detail, it will become apparent that modifications and variations are possible without departing from the scope of the disclosed aspects as defined in the appended claims. Because various changes can be made in the structures, products, and methods described above without departing from the scope of the disclosed aspects, it is intended that all matter contained in the above description and shown in the accompanying drawings be interpreted as illustrative and not in a limiting sense.
Claims
1. 1. A method for performing internal conversion of a fragmented MP4 (FMP4) file to an MP4 file, comprising: capturing the audio and visual data of the FMP4 file; During the capture, generating an initial moov atom of the FMP4 file, the initial moov atom including a header with a moov designation; allocating at least one fragment header to said portions of audio and visual data; detecting a cessation of the capturing of the audio and visual data; when said termination occurs, converting said FMP4 file to said MP4 file by changing the header of said first moov atom to an mdat specification; Including, detecting that the multimedia application that captures the audio and visual data has closed; storing the FMP4 file with the at least one fragment header; receiving an instruction to open the stored FMP4 file; Once the FMP4 is opened, starting the conversion of the FMP4 file to the MP4 file; The method further comprises:
2. The method of claim 1 , further comprising the step of storing the FMP4 file with the mdat specification as the MP4 file.
3. A step of generating a last moov atom of the MP4 file from the first moov atom and the at least one fragment header; The method according to claim 1 or 2, further comprising:
4. 4. The method of claim 3, further comprising the step of modifying the at least one fragment header to the mdat specification.
5. generating a final moov atom from the first moov atom; appending the final moov atom to the FMP4 file; The method according to at least one of claims 1 to 4, further comprising:
6. 6. The method of claim 5, wherein the header of the first moov atom is modified after the last moov atom is added to the FMP4 file.
7. The method according to at least one of claims 1 to 6, wherein the conversion of the FMP4 file into the MP4 file is performed without creating a new file other than the FMP4 file or copying data.
8. The method according to at least one of claims 1 to 7, further comprising the step of starting playback of the MP4 file in which the first moov atom has been changed to the mdat specification.
9. The method according to at least one of claims 1 to 8, wherein the MP4 file comprises the FMP4 file in which the header of the first moov atom has been changed to the mdat specification.
10. The method according to at least one of claims 1 to 9, wherein capturing the audio and visual data comprises recording the audio and visual data.
11. The method of claim 10 , wherein the recording step is performed in at least one of a video conferencing application, a teleconferencing application, or a video sharing application.
12. The method according to at least one of claims 1 to 11, wherein the FMP4 file is converted to the MP4 file in a client computing device.
13. 1. A system for performing internal conversion of a fragmented MP4 (FMP4) file to an MP4 file, comprising: a memory having embedded therein a multimedia application configured to convert the FMP4 to the MP4 file; one or more processors, Capture the audio and visual data of the FMP4 file, generating an initial moov atom of the FMP4 file during the capture, the initial moov atom including a header with a moov designation; assigning at least one fragment header to a portion of said audio and visual data; Detecting a cessation of the capturing of the audio and visual data; When the stop occurs, convert the FMP4 file to the MP4 file by changing the header of the first moov atom to specify mdat. It is programmed to The one or more processors further include: detecting that a multimedia application that captures the audio and visual data has closed; storing the FMP4 file with the at least one fragment header; receiving a command to open the stored FMP4 file; Once the FMP4 opens, it will begin converting the FMP4 file to the MP4 file. one or more processors programmed to: A system including:
14. one or more computer storage memories having computer-executable instructions embedded therein, the computer-executable instructions being executable by at least one processor to perform an internal conversion of a fragmented MP4 (FMP4) file to an MP4 file; a multimedia application executable by the at least one processor and configured to capture audio and visual data of the FMP4 file, assign an initial moov atom to the FMP4 file, and assign at least one fragment header to portions of the audio and visual data; an internal converter executable by the at least one processor and configured to detect that a multimedia application capturing the audio and visual data has been closed, store the FMP4 file having the at least one fragment header, receive an instruction to open the stored FMP4 file, and, upon opening the FMP4, convert the FMP4 file to the MP4 file by changing a header of the first moov atom from a moov designation to an mdat designation; Computer storage memory including:
Citation Information
Patent Citations
Audio and video stream processing method and device for DVR
CN111083410A
Recording apparatus and method, program, recording medium, and data recording medium
JP2006351130A