US20230289329A1 - Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques - Google Patents

Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques Download PDF

Info

Publication number
US20230289329A1
US20230289329A1 US18/320,907 US202318320907A US2023289329A1 US 20230289329 A1 US20230289329 A1 US 20230289329A1 US 202318320907 A US202318320907 A US 202318320907A US 2023289329 A1 US2023289329 A1 US 2023289329A1
Authority
US
United States
Prior art keywords
media file
file
partitions
format
transcoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
US18/320,907
Inventor
Tanooj Luthra
Ritik Malhotra
Bryan Huh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Box Inc
Original Assignee
Box Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Box Inc filed Critical Box Inc
Priority to US18/320,907 priority Critical patent/US20230289329A1/en
Assigned to Box, Inc. reassignment Box, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HUH, BRYAN, LUTHRA, TANOOJ, MALHOTRA, RITIK
Publication of US20230289329A1 publication Critical patent/US20230289329A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • G06F16/196Specific adaptations of the file system to access devices and non-file objects via standard file system access operations, e.g. pseudo file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2443Stored procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Definitions

  • This disclosure relates to the field of file sharing of large media files, and more particularly to techniques for low latency and low defect media file transcoding using optimized storage, partitioning, and delivery techniques.
  • a collaborator would want to view a video as soon as it is posted, however, due to the aforementioned reasons why such a conversion or transcoding might be needed, the video would need to be converted before being made available for previewing or sharing. Further transcoding may be needed for viewing the video using the various media players available on the various devices of the collaborators.
  • Legacy approaches to the problem of reducing the latency between availability of an original media file (e.g., in a first format) and availability of a transcoded media file (e.g., in a second format) can be improved.
  • an original media file is sent to an extremely high-powered computer, with the expectation that the transcoding can complete sooner.
  • an original media file in a first format is divided into equally sized partitions, and each partition is transcoded in parallel with each other partition. While such a partitioning and parallel processing techniques serve to reduce the latency time to a first viewing of a transcoded media file, such an approach is na ⁇ ve, at least as pertains to the extent that many of the resulting transcoded partitions exhibit defects.
  • the present disclosure provides improved systems, methods, and computer program products suited to address the aforementioned issues with legacy approaches. More specifically, the present disclosure provides a detailed description of techniques used in systems, methods, and in computer program products for low latency and low defect media file transcoding using optimized partitioning. Certain embodiments are directed to technological solutions for exploiting parallelism when transcoding from a first format to a second format by determining partition boundaries based on the first format.
  • the disclosed techniques and devices within the shown environments as depicted in the figures provide advances in the technical field of high-performance computing as well as advances in the technical fields of distributed computing and distributed storage.
  • FIG. 1 depicts an environment for using and transcoding media files.
  • FIG. 2 A presents a diagram depicting a full file transcoding approach for comparison of techniques for performing low latency and low defect media file transcoding using optimized partitioning.
  • FIG. 2 B presents a diagram illustrating techniques for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 3 A is a chart showing media file partitioning as implemented in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 3 B 1 and FIG. 3 B 2 are a block diagrams showing media file reformatting as implemented in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 3 C depicts media file reformatting as implemented in systems for low latency and low defect media, according to an embodiment.
  • FIG. 3 D depicts an on-the-fly watermarking system as implemented in systems for low latency and low defect media file transcoding, according to an embodiment.
  • FIG. 4 A presents a processing timeline to show full file transcoding latency for comparison to techniques for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 4 B presents a latency timeline illustrating a low first-view latency technique used in systems implementing low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 5 is a flow diagram illustrating a system for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 A is a flow diagram illustrating caching of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 B is a flow diagram illustrating pre-transcoding of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 C is a flow diagram illustrating frame-by-frame delivery of a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 D 1 is a flow diagram illustrating playlist generation from a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 D 2 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 D 3 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 D 4 is a flow diagram illustrating timecode correction techniques used when delivering video clips to viewers as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6 E is a flow diagram illustrating techniques for accessing media files through a custom virtual file system as used when delivering video clips to collaborators, according to an embodiment.
  • FIG. 7 depicts a system as an arrangement of computing modules that are interconnected so as to operate cooperatively to implement certain of the herein-disclosed embodiments.
  • FIG. 8 A and FIG. 8 B depict exemplary architectures of components suitable for implementing embodiments of the present disclosure, and/or for use in the herein-described environments.
  • Some embodiments of the present disclosure address the problem of reducing the first-view latency time incurred when transcoding a media file in a first format to a second format, while reducing or eliminating defects in the resulting transcoded file and some embodiments are directed to approaches for exploiting parallelism when transcoding from a first format to a second format by determining partition boundaries based on the first format. More particularly, disclosed herein and in the accompanying figures are exemplary environments, systems, methods, and computer program products for low latency and low defect media file transcoding using optimized partitioning.
  • the techniques described herein receive and analyze an original media file to determine optimized partitions for transcoding, and techniques described herein operate in conjunction with cloud-based remote file storage.
  • a custom file system can be employed and/or optimized partitions can be based in part on the target format or formats (e.g., encoding scheme, codec, container, etc.) and/or available computing resources (e.g., storage, processing, communications bandwidth, etc.).
  • the partition boundaries can be selected with respect to key frames (e.g., I-frames).
  • a leading edge boundary partition can be selected to be precisely at a key frame, and a trailing edge boundary can be adjacent to a next key frame.
  • the partitions can be assigned to computing resources for simultaneous transcoding of the respective partitions.
  • the transcoded media file partitions can then be assembled into a single transcoded video file (e.g., container) and delivered for viewing.
  • the partitions can include attribute datasets (e.g., moov atoms) such that a first or beginning transcoded partition can be delivered and viewed in advance of the availability and assemblage of the remaining transcoded partitions, thus further reduce the first-view latency time.
  • FIG. 1 depicts an environment 100 for using and transcoding media files.
  • environment 100 for using and transcoding media files.
  • one or more instances of environment 100 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the environment 100 or any aspect thereof may be implemented in any desired environment.
  • the environment 100 supports access to workspaces (e.g., workspace 122 1 and workspace 122 2 ) by a plurality of users (e.g., collaborators 120 ) through a variety of computing devices (e.g., user devices 102 ).
  • the collaborators 120 can comprise a user collaborator 123 , an administrator collaborator 124 , and a creator collaborator 125 .
  • the user devices 102 can comprise one or more instances of a laptop 102 1 and laptop 102 5 , one or more instances of a tablet 102 2 , one or more instances of a smart phone 102 3 , and one or more instances of a workstation (e.g., workstation 102 4 and workstation 102 6 ).
  • the workspaces can present to the collaborators 120 a set of documents accessible by each collaborator (e.g., based on permissions).
  • the workspaces can provide certain groups of the collaborators 120 access to a set of media files (e.g., with container file extensions .mov, .mp4, .wmv, .flv, etc.) for various collaboration activities (e.g., creating, sharing, viewing, listening, editing, etc.).
  • the environment 100 further illustrates the content (e.g., media files) represented in the workspaces can be managed (e.g., converted, transcoded, etc.) and stored on a server farm 110 .
  • the server farm 110 can be a cloud-based and/or distributed computing and storage network(s) comprising one or more instances of a host server 112 , one or more instances of a sync server 113 , one or more instances of a notification server 114 , one or more instances of a collaboration server 116 , one or more instances of a content server 117 , and one or more instances of an origin server 118 .
  • other combinations of computing devices and storage devices can comprise the server farm 110 .
  • the collaborators 120 interact with the workspaces to upload media files (e.g., original media file 132 ) through an upload path 127 to the server farm 110 .
  • the collaborators 120 can further interact with the workspaces to download media files (e.g., transcoded media file 134 ) through a download path 129 from the server farm 110 .
  • the creator collaborator 125 may have just posted a new video (e.g., original media file 132 over the upload path 127 ) that is shared with the user collaborator 123 in the workspace 122 1 , and the user collaborator 123 selected the new video for viewing on laptop 102 1 .
  • a media player 103 on laptop 102 1 and/or the associated computing resource constraints e.g., of laptop 102 1 , of download path 129 , etc.
  • the original media file 132 be transcoded to the transcoded media file 134 having a video playback format (e.g., advanced systems format (ASF) file) that is different than the original media file 132 format (e.g., MP4).
  • AMF advanced systems format
  • one or more servers in the server farm 110 can perform the transcoding using various approaches, where the choice of approach will impact a first-view latency time 104 (e.g., the time from a request to view to the start of viewing) and extent of viewing quality defects experienced by the user collaborator 123 and other users.
  • a first-view latency time 104 e.g., the time from a request to view to the start of viewing
  • extent of viewing quality defects experienced by the user collaborator 123 and other users e.g., the time from a request to view to the start of viewing
  • FIG. 2 A presents a diagram 2 A 00 depicting a full file transcoding approach for comparison of techniques for performing low latency and low defect media file transcoding using optimized partitioning.
  • diagram 2 A 00 depicting a full file transcoding approach for comparison of techniques for performing low latency and low defect media file transcoding using optimized partitioning.
  • one or more instances of diagram 2 A 00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the diagram 2 A 00 or any aspect thereof may be implemented in any desired environment.
  • a video file may need to be transcoded for viewing by a user.
  • the approach receives an original media file (see step 202 ) and proceeds to process (e.g., transcode) the entire original media file (see step 204 ).
  • process e.g., transcode
  • the user desiring to view the media file will need to wait until the entire media file is transcoded before being able to view the transcoded media file.
  • processing the original media file can comprise two steps of first converting to an intermediate format and then converting to a target format.
  • a first-view latency time 221 using the approach shown in diagram 2 A 00 can be improved by using high-powered computing resources, yet the first-view latency time 221 can remain long. For example, a 30-minute video can take 20 minutes to be transcoded and made ready for viewing using the full file transcoding approach shown in FIG. 2 A .
  • the first-view latency time 221 will further increase as the demanded resolution of the video increases.
  • an original media file is sent to an extremely high-powered computer, with the expectation that the transcoding can complete sooner.
  • an original media file in a first format is divided into equally sized partitions, and each partition is transcoded in parallel with each other partition. For example, when an original media file in a first format is divided into N equally sized partitions, then the time to complete the transcoding can theoretically be reduced a time proportional to 1/N. While this divide by N partitioning and parallel processing technique serves to reduce the latency time to a first viewing of a transcoded media file, such an approach can be improved upon, at least as pertains to the aspect that many of the resulting transcoded partitions exhibit defects. For example, many of the resulting transcoded partitions exhibit image distortions brought about by generating clip boundaries according to strict divide by N partitioning.
  • FIG. 2 B presents a diagram 2 B 00 illustrating techniques for low latency and low defect media file transcoding using optimized partitioning.
  • diagram 2 B 00 illustrating techniques for low latency and low defect media file transcoding using optimized partitioning.
  • one or more instances of diagram 2 B 00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the diagram 2 B 00 or any aspect thereof may be implemented in any desired environment.
  • the approach illustrated in diagram 2 B 00 implements an optimized partitioning of a media file for low latency and low defect transcoding.
  • the set of steps describing such an approach begins with receiving an original media file (see step 202 ) and analyzing the original media file to determine optimized partitions for transcoding (see step 206 ).
  • optimized partitions can be based in part on the target format or formats (e.g., encoding scheme, codec, container, etc.) and/or available computing resources (e.g., storage, processing, communications bandwidth, etc.).
  • the size of a partition might vary with environmental considerations.
  • the leading-edge partition boundaries can be at encoding key frames (e.g., I-frames).
  • the partitions can be assigned to computing resources for transcoding (see step 208 ).
  • the computing resources e.g., server farm 110
  • the computing resources can then transcode the original media file partitions to respective transcoded media file partitions (see parallel steps of step 210 1 , step 210 2 , to step 210 N ).
  • the transcoded media file partitions can then be assembled into a single transcoded video file (e.g., container) (see step 212 ).
  • partitioning the media file e.g., into N partitions
  • a distributed computing system e.g., N servers
  • a first-view latency time e.g., by a factor of 1/N
  • defects in the resulting transcoded file can be minimized or eliminated.
  • a user can start viewing the transcoded media file when the first partition has been transcoded or the first set of partitions have been transcoded, such that viewing can begin before the transcoded file has been assembled.
  • a reduced first-view latency time 222 for a 30-minute video using the herein disclosed approach shown in diagram 2 B 00 can be a few seconds (e.g., when the first partition has been transcoded and delivered). More details regarding the partitioning of media files are shown and described as pertains to FIG. 3 A , FIG. 3 B 1 , FIG. 3 B 2 , FIG. 3 C and FIG. 3 D .
  • FIG. 3 A is a chart 3 A 00 showing media file partitioning as implemented in systems for low latency and low defect media file transcoding using optimized partitioning.
  • chart 3 A 00 showing media file partitioning as implemented in systems for low latency and low defect media file transcoding using optimized partitioning.
  • one or more instances of chart 3 A 00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the chart 3 A 00 or any aspect thereof may be implemented in any desired environment.
  • the chart 3 A 00 shows a time-based representation of an original media file 302 in a first encoding format or a first set of encoding formats.
  • the original media file 302 can be a video file packaged in a container that comprises a moov atom at the end.
  • the moov atom also referred to as a movie atom, is an attribute dataset comprising information about the original media file 302 such as the timescale, duration, display characteristics of the video, sub-atoms containing information associated with each track in the video, and other attributes.
  • an original moov atom 303 is present at the end of the original media file 302 .
  • the original media file 302 can be analyzed to determine a set of candidate partitions 304 for parallel processing.
  • the candidate partitions can be determined by equally dividing (e.g., into units of time or duration) the original media file 302 by the number of computing resources (e.g., servers) available for parallel transcoding operations.
  • the candidate partitions 304 may have partition boundaries that result in defects in the playback of the assembled transcoded media file.
  • defects can comprise subjective quality as perceived by a user (e.g., blockiness, blurriness, ringing artifacts, added high frequency content, picture outages, freezing at a particular frame and then skipping forward by a few seconds, etc.).
  • objective metrics that characterize one or more aspects of playback quality can be computed (e.g., frame-by-frame comparison of an original object and a transcoded object).
  • the herein disclosed techniques can determine a set of optimized partitions 305 for transcoding the original media file 302 to reduce first-view latency and reduce or eliminate transcoding defects.
  • a set of key frame locations e.g., key frame location 3061 , key frame location 3062 , key frame location 3063 , key frame location 3064 , key frame location 3065
  • the key frame locations can be defined in the original media file 302 , and in certain embodiments, the key frame locations can be based in part on the target transcoding format or formats.
  • the candidate partitions 304 can be aligned to the closest key frame location (e.g., based on an optimal partitioning boundary to deliver low defects).
  • key frame location 3062 is chosen as a partition boundary over key frame location 3065 as being closer to an instance of a candidate partition 304 .
  • a set of moov atoms can be included at various positions in one or more partitions based in part on the known and/or expected delivery and playback method.
  • each instance of a partition in the optimized partitions 305 is shown to have a moov atom at the beginning of the partition (e.g., see moov atom 3071 in partition P 1 and moov atom 3072 in partition P 2 ).
  • Positioning the moov atom at the beginning of the partitions can reduce the first-view latency by enabling the user media player to start decoding and playing the first partition (e.g., P 1 ) independently of the transcoding completion status and delivery of the other partitions (e.g., for video streaming, progressive downloading, etc.).
  • FIG. 3 B 1 presents a block diagram 3 B 100 showing media file reformatting as implemented in systems for low latency and low defect media file transcoding using optimized partitioning.
  • the techniques for media file reformatting can be practiced in any environment.
  • a media file is laid out in a first format (e.g., the shown source format) where the file is organized into multiple adjacent partitions.
  • the adjacent partitions comprise playlist data (e.g., playlist F1 322 F1 ), video data (e.g., video extent 324 ), and audio data (e.g., audio extent 323 ).
  • playlist data e.g., playlist F1 322 F1
  • video data e.g., video extent 324
  • audio data e.g., audio extent 323
  • One way to convert from a source format 342 1 to a target format 352 1 is to use a multi-format transcoder where the multi-format transcoder accepts a media file in a source format and produces a media file in a target format.
  • Another way to convert from certain source formats to certain target formats is to use a non-transcoding segment reformatter 320 .
  • Such a non-transcoding segment reformatter 320 segments a video stream into a plurality of video segments (e.g., video segment 1 326 through video segmentN 328 ).
  • a particular video segment may have corresponding audio data (e.g., the soundtrack for the particular video segment).
  • a non-transcoding segment reformatter 320 can combine (e.g., interleave) a particular video segment with corresponding audio data.
  • the act of combining can include producing a series of extents (e.g., 512 byte blocks or 1 k byte blocks) that can be stored as a file. As shown an extent includes both video data and audio data.
  • the combination into the extent can involve interleaving. Interleaving can be implemented where one extent comprises a video segment (e.g., video segment 1 326 , or video segmentN 328 ) as well as an audio segment (e.g., audio segment 1 327 , or audio segmentN 329 ). Different interleaving techniques interleave within an extent at different degrees of granularity.
  • the combination of video data and audio data within the extent can involve interleaving at a block-level degree of granularity, or at a timecode degree of granularity, or at a byte-by-byte or word-by-word degree of granularity.
  • a non-transcoding segment reformatter 320 can combine video in a particular video format (e.g., in an HTTP live streaming (HLS) format or a dynamic adaptive streaming over HTTP (DASH) format) with corresponding audio data in a particular audio format or encoding (e.g., as an advanced audio coding (AAC) stream or as an MP3 stream).
  • interleaving can be implemented by merely moving video or audio segments from one location (e.g., from a location in a source format) to a location in a target format without performing signal-level transcoding operations.
  • interleaving can be implemented by merely moving video segments from one location (e.g., from a location in a source format) to an allocation in a target format without performing any video signal-level transcoding operations.
  • Audio data can segmented and transcoded as needed (e.g., using the shown audio transcoder 331 ) to meet the specification of the target format. For example, situations where the video is already being delivered in a standard H.264 encoding, the video doesn't need to be re-transcoded, however if the audio is encoded using (for example) the free lossless audio codec (FLAC), the audio might need to be transcoded into an appropriate target format (MP3, high-efficiency advanced audio coding (HE-AAC), or AC-3).
  • FLAC free lossless audio codec
  • HE-AAC high-efficiency advanced audio coding
  • Some formats include a playlist. Such a playlist might identify titles or chapters or other positions in a corresponding stream.
  • the playlist F1 322 F1 in the depicted source format includes a series of markers (e.g., titles or chapters or other positions). For each marker, the playlist F1 322 F1 includes two pointers or offsets: (1) into the video data extent 324 , and (2) into the audio data extent 323 .
  • the playlist F2 322 F2 in the depicted target format includes a series of markers (e.g., titles or chapters or other positions) where, for each marker, the playlist F2 322 F2 includes one pointer to an extent. The degree of interleaving is assumed or inherent or can be determined from characteristics of the target format.
  • FIG. 3 B 2 presents a block diagram 3 B 200 showing a variation of the media file reformatting as depicted in FIG. 3 B 1 .
  • One way to convert from a source format 342 2 to a target format 352 2 is to use a multi-format transcoder where the multi-format transcoder accepts a media file in a source format (e.g., in an interleaved format) and produces a media file in a target format (e.g., comprising a video extent and an audio extent).
  • a source format e.g., in an interleaved format
  • a target format e.g., comprising a video extent and an audio extent
  • FIG. 3 C depicts a media file reformatting system 3 C 00 as implemented in systems for low latency and low defect media file transcoding.
  • one or more media files comprise a video portion, a respective audio portion, and a respective playlist.
  • Each of the shown video files are encoded and/or formatted in a source format 342 3 .
  • a non-transcoding media file reformatter 350 serves to process each video portion, its respective audio portion, and its respective playlist so as to generate a media file in the target format 354 3 .
  • the non-transcoding media file reformatter 350 moves video data from its position in the media file of the source format (e.g., preceding the audio portion) to a position in the target format (e.g., following the audio portion).
  • the video portions of a media file e.g., video portion 346 1 , video portion 346 2 , video portion 346 N
  • the audio portions of a media file e.g., audio portion 348 1 , audio portion 348 2 , audio portion 348 N
  • Playlists of media files in the source format e.g., playlist S1 , playlist S2 , .
  • playlists of media files in the target format are converted using the non-transcoding segment media file reformatter 350 such that the playlists of media files in the target format (e.g., playlist T1 , playlist T2 , . . . playlist TN ) are adjusted so as to point to the same titles, chapters, locations, etc. as were present in the playlists of media files in the source format.
  • target format e.g., playlist T1 , playlist T2 , . . . playlist TN
  • FIG. 3 D depicts an on-the-fly watermarking system 3 D 00 as implemented in systems for low latency and low defect media file transcoding.
  • the system includes a watermark generator 380 and a watermark applicator 381 .
  • On-the-fly watermarking is performed as follows:
  • a server video cache 396 holds video segments that are made ready for delivery to a user/viewer.
  • a selector 398 determines a next video segment (e.g., segment S 1 , segment 2 S 2 , segment 3 S 3 , . . . , segmentN S N ) to send over a network (e.g., using sending unit 388 ) to a device destination prescribed by the user/viewer.
  • a network e.g., using sending unit 388
  • the watermark generator 380 has access (e.g., through a data access module 390 ) to a media file repository 382 that stores media files 386 as well as media playlist files 384 .
  • the watermark generator 380 further has access to an environmental data repository 385 .
  • a watermark can be generated based on any combination of data retrieved from any source.
  • a watermark can contain a user's unique information (e.g., name or nickname or email alias, etc.), and/or the name or identification of the user's device, the time of day, copyright notices, logos, etc.
  • the watermark can be placed over the entire video and/or in a small section, and/or move around every X frames or Y seconds, etc.
  • the watermark itself can also update as the video stream progresses.
  • watermark can be generated by combining a segment from the server video cache with environmental data 394 retrieved from the environmental data repository 385 . More specifically, a video segment can be watermarked by applying an image over one or more frames in the selected video segment.
  • the aforementioned image might be an aspect of the requesting user, possibly including the requesting user's userID, either based on a plain text version of the userID, or based on an obfuscated version of the userID.
  • the aforementioned image might include an aspect of a time (e.g., a timestamp), and/or some branding information (e.g., a corporate logo).
  • the watermark generator 380 performs only watermark generation so as to produce a generated watermark 393 and passes the generated watermark to the watermark applicator 381 .
  • the watermark applicator in turn can apply the generated watermark 393 to a video segment so as to produce watermarked selected segments (e.g., watermarked selected segment 389 1 , watermarked selected segment 389 2 ).
  • a watermark can be included in or on an added frame. In such cases, the length of the video segment is changed (e.g., by the added frame).
  • the playlist regenerator 387 can retrieve and process a selected segment playlist (e.g., see selected segment playlist 392 1 and selected segment playlist 392 2 ) as well as instructions from the watermark applicator (e.g., “added one frame immediately after frame 0020 ”) so as to produce a regenerated media file playlist 389 that corresponds to the media file from which the selected segment was cached.
  • a selected segment playlist e.g., see selected segment playlist 392 1 and selected segment playlist 392 2
  • instructions from the watermark applicator e.g., “added one frame immediately after frame 0020 ”
  • a client-side video cache 397 can be implemented. As such, serving of video segments is enhanced.
  • the present embodiment of the invention provides an improved approach to display data in a virtual file system that significantly eliminates these intermittent interruptions.
  • the data is not always immediately queued for display to the user. Instead, chunks (e.g., segments) of data are continuously requested by a client-local module (e.g., a client-local video player), and the data starts being displayed only when there are sufficient amounts of data (e.g., a sufficient number of segments) that has been locally received to ensure smooth display of the data.
  • a client-local module e.g., a client-local video player
  • FIG. 3 D includes one approach to implement aspects of video segment caching.
  • a request originating from a user device is received by the server.
  • the requested data may correspond to any granularity of data (e.g., block, segment, chapter, title, etc.). For example, an entire media file or title may be requested; or, only a range of blocks or chapter of the media can be requested. Further, the requested data may pertain to any type of structure or format.
  • FIG. 4 A presents a processing timeline 4 A 00 to show full file transcoding latency for comparison to techniques for low latency and low defect media file transcoding using optimized partitioning.
  • processing timeline 4 A 00 may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the processing timeline 4 A 00 or any aspect thereof may be implemented in any desired environment.
  • Processing timeline 4 A 00 shows an original media file 01 404 1 transcoded into a transcoded media file 01 406 1 using a full file transcoding approach 410 .
  • a setup time 402 for a computing device or resource to prepare for transcoding an entire media file e.g., a two-hour movie.
  • the full file transcoding approach 410 then proceeds to transcode the original media file 01 , requiring that a user desiring to view the transcoded file wait until the entire file is transcoded, thus experiencing a full file transcoding approach first-view latency 412 .
  • transcoding a one-hour video to certain combinations of formats and resolutions can result in the full file transcoding approach first-view latency 412 being one to two hours.
  • FIG. 4 B illustrates the herein disclosed techniques for reducing the first-view latency of transcoded media files, while minimizing or eliminating defects in the transcoded media files.
  • FIG. 4 B presents a latency timeline 4 B 00 illustrating a low first-view latency technique used in systems implementing low latency and low defect media file transcoding using optimized partitioning.
  • latency timeline 4 B 00 illustrating a low first-view latency technique used in systems implementing low latency and low defect media file transcoding using optimized partitioning.
  • one or more instances of latency timeline 4 B 00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the latency timeline 4 B 00 or any aspect thereof may be implemented in any desired environment.
  • Latency timeline 4 B 00 shows an original media file 01 404 1 transcoded into a transcoded media file 01 406 1 using an optimized partitioning approach 420 and a progressive optimized partitioning approach 430 according to the herein disclosed techniques for low latency and low defect media file transcoding using optimized partitioning.
  • the optimized partitioning approach 420 can determine optimized partitioning of the original media file 01 based in part on the current and/or target format (e.g., key frame location) and/or available computing resources.
  • the resulting partitions are delivered to a set of computing resources for parallel processing (e.g., transcoding) and assembled into a file container.
  • the transcoded file can be viewed by a user when the first partition (e.g., P 1 ) has been processed and delivered, resulting in an optimized partitioning first-view latency 422 .
  • the first partition e.g., P 1
  • the first partition is relatively small to enable a faster transcoding processing time for an initial clip.
  • a shorter progressive optimized partitioning first-view latency 432 can be implemented to improve still further over the earlier-described latency of optimized partitioning first-view latency 422 .
  • the first-view latencies can be substantially shorter (e.g., seconds) than the full file transcoding approach first-view latency 412 as shown in FIG. 4 A (e.g., hours).
  • the initial relatively small clip enables a faster transcoding processing time for an initial clip.
  • Successively larger chunks e.g., clip size
  • the successively larger clip sizes can improve overall performance of the system as a whole.
  • Use of progressive chunk size e.g., even for just a few of the chunks after the first one
  • a quality upgrade can only happen at a chunk boundary.
  • the client starts with a default quality (e.g., a very low one such as 360p). If the client can actually support 1080p, which may be four quality jumps away, it will take 4 chunk times (40 seconds) to reach that quality.
  • a default quality e.g., a very low one such as 360p.
  • 1080p which may be four quality jumps away
  • An alternative technique for making all the chunks into small sizes e.g., 2 seconds each) so as to reduce the chunk time quantum would result in a very large number of chunks—and each individual network request (e.g., request for a chunk) introduces communication latency and processing overhead, resulting in undesired slower retrieval of data.
  • Increasing the chunk size strikes a balance between use of system resources and user experience.
  • FIG. 5 is a flow diagram 500 illustrating a system for low latency and low defect media file transcoding using optimized partitioning.
  • flow diagram 500 illustrating a system for low latency and low defect media file transcoding using optimized partitioning.
  • one or more instances of flow diagram 500 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein.
  • the flow diagram 500 or any aspect thereof may be implemented in any desired environment.
  • an intermediate server 506 can comprise a partitioner module 508 , a partition workload assigner 510 , and a transcoder partition assembler 512 .
  • the intermediate server 506 can further communicate with a cloud-computing provider 520 comprising a plurality of workload nodes (e.g., workload node 524 1 , workload node 524 2 , workload node 524 3 , to workload node 524 N ) to perform various distributed computing and storage operations.
  • workload nodes e.g., workload node 524 1 , workload node 524 2 , workload node 524 3 , to workload node 524 N
  • the partitioner module 508 of the intermediate server 506 can receive an original media file 502 from a storage facility for transcoding.
  • the partitioner module 508 can analyze the original media file 502 to determine optimized partitions for transcoding (e.g., based in part on the target format or formats and/or available computing resources at cloud computing provider 520 ).
  • the partition workload assigner 510 can assign the respective partitions to the workload nodes at the cloud computing provider 520 to transcode the partitioned original media file segments to respective transcoded media file segments.
  • the transcoder partition assembler 512 can then assemble the transcoded media file segments into a transcoded media video file 504 .
  • FIG. 6 A is a flow diagram 6 A 00 illustrating caching of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning. Performance of previewing and other delivery of media to a collaborator can be improved by pre-transcoding an initial portion of a media file upon initial posting.
  • a user requests to view a media clip (e.g., by selecting from a workspace media preview icon)
  • the system checks in a cache 602 for the presence of the media clip (or portion thereof). If the requested media clip is already available in the cache, then the clip is served. If requested media clip is not yet available in the cache, then at least an initial portion of the media can be transcoded, stored in the cache, and served to the requestor.
  • FIG. 6 B Various techniques for pre-transcoding an initial portion of a media file are shown and discussed as pertains to FIG. 6 B .
  • FIG. 6 B is a flow diagram 6 B 00 illustrating pre-transcoding of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning.
  • a creator collaborator 125 might provide a media file for uploading to the remote collaborative cloud-based storage system.
  • the system can detect that the media file is new to the system and, in accordance with some pre-transcoding techniques, the new file can be preprocessed.
  • Many preprocessing operations can be performed, in particular pre-transcoding of an initial clip.
  • a preprocessed initial clip of the newly received file is available and can be served to the requestor upon request, resulting in low-latency delivery of the requested media and providing a good user experience.
  • the media file can be transcoded into multiple initial clips corresponding to various initial lengths (e.g., 10 seconds, 20 seconds, 30 seconds, etc.) and corresponding to various qualities (e.g., 480p, 720p, 1080p, etc.).
  • FIG. 6 C is a flow diagram 6 C 00 illustrating frame-by-frame delivery of a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning.
  • an initial transcoded clip or other requested transcoded clip might not be pre-transcoded (e.g., might not yet be stored in the cache, and might not be stored in the remote collaborative cloud-based storage system).
  • the transcoder needs to send a chunk to the client but does not have the chunk transcoded, it will start the transcoding operation for that chunk and, as each frame is transcoded, send the frame down to the client, keeping the connection open for subsequent frames.
  • the transcoder If the transcoder does have the chunk already transcoded (e.g., because it is running with more resources than it needs and is ahead in the transcoding operation than the client is in the viewing operation), then it simply sends the entire chunk down at once (e.g., without using a frame-by-frame pipeline).
  • a low latency preview can be facilitated by transcoding a very small portion for initial deliver (e.g., see the technique of FIG. 4 B ).
  • a technique to establishing a frame-by-frame pipeline for transcoding and delivery can be employed. When sufficient computing resources needed to transcode become available, the frame-by-frame pipeline can be flushed, and other transcoding and delivery techniques can be pursued.
  • FIG. 6 D 1 is a flow diagram illustrating playlist generation from a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning.
  • a playlist e.g., an HLS playlist
  • manifest e.g., a DASH manifest
  • the requester can see various characteristics of the entire media file, and a media player can present navigation controls that are substantially accurate vis-à-vis the entire media file.
  • many different sized clips possibly using different qualities of video, can be delivered. In some such cases the timecode of the different clips is corrected (see FIG. 6 D 4 , below).
  • FIG. 6 D 2 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning.
  • Generating a playlist or manifest for a clip or series of clips involves relating a time or time range with a media file. Strictly as an example, a playlist corresponding to a series of successively larger chunks (e.g., such as discussed in the foregoing FIG. 4 B ) can be determined as transcoding proceeds through the original media file.
  • the playlist can refer to the initial media file location (e.g., by URL) for immediate playback, and a playlist can identify to the successively larger clips by referring to the media file location of respective successively larger clips.
  • Multiple playlists can be generated upon presentation of a media file, and the resulting playlists or manifests can be stored or cached for fast retrieval.
  • FIG. 6 D 3 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning.
  • Generating a playlist or manifest for a clip or series of clips involves relating a time or time range with a media file. Strictly as an example, a playlist corresponding to a series of successively larger chunks (e.g., such as discussed in the foregoing FIG. 4 B ) can be determined as transcoding proceeds through the original media file. As shown, the processing proceeds as follows: (1) a user requests video media from workspace, (2) the video media metadata is retrieved, and (3) a playlist is generated that contains state-encoded URLs.
  • each URL (e.g., a state-encoded URL entry) that is generated corresponds to an independent transcoding job for that specific chunk.
  • the state-encoding in the URL pertaining to that chunk is communicates state variables (e.g., variable values) to the transcoding server, which then operates using the state variables and other encoded information necessary to provide the appropriate transcoded chunk.
  • the transcoded chunk data is then delivered to the requesting client.
  • a stateful URL is:
  • the URL itself comprises information delivered to the transcoder.
  • other information can be known by the transcoder, merely by receiving and parsing the stateful URL.
  • FIG. 6 D 4 is a flow diagram illustrating timecode correction techniques used when transcoding or delivering video clips to viewers as used in systems for low latency and low defect media file transcoding using optimized partitioning.
  • the environment in which a video clip can be served might vary widely depending on the situation (e.g., serving to a client with a hardline Internet connection, serving to a mobile device over a wireless channel, etc.).
  • the environment in a particular situation can vary in real-time.
  • the bit rate available to and from a mobile device might vary substantially while the mobile device user traverses through between cellular towers. More generally, many variations in the communication fabric to and from a user device can occur at any time.
  • Various techniques ameliorate this situation by selecting a next clip to deliver to a mobile device where the selected next clip is selected on the basis of determined characteristics of the available communication channels. For example, during periods where the communication channel is only able to provide (for example) 500 Kbps of bandwidth, a relatively low quality of video (e.g., 480p) can be delivered. When the communication channel improves so as to be able to provide (for example) higher bandwidth, then a relatively higher quality of video (e.g., 1080p) can be delivered to the viewer. Variations of quality vis-à-vis available bandwidth can occur dynamically over time, and any time duration for re-measuring available bandwidth can be relatively shorter or relatively longer.
  • a relatively low quality of video e.g., 480p
  • a relatively higher quality of video e.g. 1080p
  • One artifact of such dynamic selection of a particular quality of a video clip is that the timecode of the next delivered clip needs to be corrected, depending on the selected quality.
  • the metadata of the clip has to be compared with the playlist so that the playlist will still serve for navigation (e.g., fast forward, rewind, etc.) purposes.
  • a succession of chunks exhibit artifacts and glitches (e.g., image freezing, skipping around, missing frames, etc.).
  • transcoding is performed “on-the-fly” using a “dynamic transcoder”.
  • a dynamic transcoder starts and stops frequently based on incoming requests.
  • the starting and stopping of the transcoder resets the timecode of the chunks it generates.
  • One or more timecode correction techniques are applied to make each chunk indistinguishable from a chunk that had been made in a single continuous transcoding job.
  • a transcoding job might be interrupted whenever a request for a chunk that the transcoder does not have transcoded at that time is received. Such a condition can occur when the client requests a different quality than the previous chunk and/or when the client requests a chunk that is determined to be a forward chunk (e.g., a “seek”) in the video rather than a next chunk as would be received during continuous playback of the video.
  • a forward chunk e.g., a “seek”
  • FIG. 6 E is a flow diagram 6 E 00 illustrating techniques for accessing media files through a custom virtual file system as used when delivering video clips to collaborators.
  • the remote collaborative cloud-based storage systems rely on a particular file system (e.g., NTFS, CIFS, etc.), and in some situations, the characteristics of such a particular file system might not map conveniently to the functional requirements of a transcoding and delivery service.
  • a particular file system e.g., NTFS, CIFS, etc.
  • One technique to ameliorate differences between the functional requirements of a transcoding and delivery service and a back-end file system is to provide a custom virtual file system, which can be used as a video prefetcher 620 .
  • the video prefetcher is used for various purposes, including:
  • the video prefetcher 620 serves to fetch the predicted next parts of the original video that the transcoder is predicted to process soon. This improves transcoding throughput by pipelining the downloading and the transcoding into adjacent pipeline phases. Further, the video prefetcher can be configured to cache recently downloaded videos so that the transcoder doesn't need to re-download the original when transcoding into another quality level or when re-transcoding for another user. In exemplary embodiments, the video prefetcher provides an abstraction layer to other element of the system, thus allowing the transcoder to remain independent from all network requests. The transcoder is relieved of tasks and operations pertaining to downloading, authentication, identifying and transferring metadata, etc.
  • FIG. 7 depicts a system 700 as an arrangement of computing modules that are interconnected so as to operate cooperatively to implement certain of the herein-disclosed embodiments.
  • the partitioning of system 700 is merely illustrative and other partitions are possible.
  • FIG. 7 depicts a block diagram of a system to perform certain functions of a computer system.
  • the system 700 may be implemented in the context of the architecture and functionality of the embodiments described herein. Of course, however, the system 700 or any operation therein may be carried out in any desired environment.
  • the system 700 comprises at least one processor and at least one memory, the memory serving to store program instructions corresponding to the operations of the system. As shown, an operation can be implemented in whole or in part using program instructions accessible by a module.
  • the modules are connected to a communication path 705 , and any operation can communicate with other operations over communication path 705 .
  • the modules of the system can, individually or in combination, perform method operations within system 700 .
  • any operations performed within system 700 may be performed in any order unless as may be specified in the claims.
  • the shown embodiment implements a portion of a computer system, presented as system 700 , comprising a computer processor to execute a set of program code instructions (see module 710 ) and modules for accessing memory to hold program code instructions to perform: identifying a first media file having a first format to be converted to a second media file having a second format (see module 720 ); partitioning the first media file into two or more partitions separated by one or more partition boundaries, wherein the one or more partition boundaries are at a determined key frame position (see module 730 ); converting into the second format, the two or more partitions to respective two or more converted partitions, wherein the respective two or more partitions are converted by respective two or more computing devices (see module 740 ); and assembling the respective two or more converted partitions to comprise the second media file (see module 750 ).
  • Variations include:
  • FIG. 8 A depicts a block diagram of an instance of a computer system 8 A 00 suitable for implementing embodiments of the present disclosure.
  • Computer system 8 A 00 includes a bus 806 or other communication mechanism for communicating information.
  • the bus interconnects subsystems and devices such as a CPU, or a multi-core CPU (e.g., processor 807 ), a system memory (e.g., main memory 808 , or an area of random access memory RAM), a non-volatile storage device or area (e.g., ROM 809 ), an internal or external storage device 810 (e.g., magnetic or optical), a data interface 833 , a communications interface 814 (e.g., PHY, MAC, Ethernet interface, modem, etc.).
  • a communications interface 814 e.g., PHY, MAC, Ethernet interface, modem, etc.
  • the aforementioned components are shown within processing element partition 801 , however other partitions are possible.
  • the shown computer system 8 A 00 further comprises a display 811 (e.g., CRT or LCD), various input devices 812 (e.g., keyboard, cursor control), and an external data repository 831 .
  • computer system 8 A 00 performs specific operations by processor 807 executing one or more sequences of one or more program code instructions contained in a memory.
  • Such instructions e.g., program instructions 8021 , program instructions 8022 , program instructions 8023 , etc.
  • program instructions 8021 , program instructions 8022 , program instructions 8023 , etc. can be contained in or can be read into a storage location or memory from any computer readable/usable medium such as a static storage device or a disk drive.
  • the sequences can be organized to be accessed by one or more processing entities configured to execute a single process or configured to execute multiple concurrent processes to perform work.
  • a processing entity can be hardware-based (e.g., involving one or more cores) or software-based, and/or can be formed using a combination of hardware and software that implements logic, and/or can carry out computations and/or processing steps using one or more processes and/or one or more tasks and/or one or more threads or any combination therefrom.
  • computer system 8 A 00 performs specific networking operations using one or more instances of communications interface 814 .
  • Instances of the communications interface 814 may comprise one or more networking ports that are configurable (e.g., pertaining to speed, protocol, physical layer characteristics, media access characteristics, etc.) and any particular instance of the communications interface 814 or port thereto can be configured differently from any other particular instance.
  • Portions of a communication protocol can be carried out in whole or in part by any instance of the communications interface 814 , and data (e.g., packets, data structures, bit fields, etc.) can be positioned in storage locations within communications interface 814 , or within system memory, and such data can be accessed (e.g., using random access addressing, or using direct memory access DMA, etc.) by devices such as processor 807 .
  • data e.g., packets, data structures, bit fields, etc.
  • DMA direct memory access
  • the communications link 815 can be configured to transmit (e.g., send, receive, signal, etc.) communications packets 838 comprising any organization of data items.
  • the data items can comprise a payload data area 837 , a destination address 836 (e.g., a destination IP address), a source address 835 (e.g., a source IP address), and can include various encodings or formatting of bit fields to populate the shown packet characteristics 834 .
  • the packet characteristics include a version identifier, a packet or payload length, a traffic class, a flow label, etc.
  • the payload data area 837 comprises a data structure that is encoded and/or formatted to fit into byte or word boundaries of the packet.
  • hard-wired circuitry may be used in place of or in combination with software instructions to implement aspects of the disclosure.
  • embodiments of the disclosure are not limited to any specific combination of hardware circuitry and/or software.
  • the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the disclosure.
  • Non-volatile media includes, for example, optical or magnetic disks such as disk drives or tape drives.
  • Volatile media includes dynamic memory such as a random access memory.
  • Computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, or any other magnetic medium; CD-ROM or any other optical medium; punch cards, paper tape, or any other physical medium with patterns of holes; RAM, PROM, EPROM, FLASH-EPROM, or any other memory chip or cartridge, or any other non-transitory computer readable medium.
  • Such data can be stored, for example, in any form of external data repository 831 , which in turn can be formatted into any one or more storage areas, and which can comprise parameterized storage 839 accessible by a key (e.g., filename, table name, block address, offset address, etc.).
  • Execution of the sequences of instructions to practice certain embodiments of the disclosure are performed by a single instance of the computer system 8 A 00 .
  • two or more instances of computer system 8 A 00 coupled by a communications link 815 may perform the sequence of instructions required to practice embodiments of the disclosure using two or more instances of components of computer system 8 A 00 .
  • the computer system 8 A 00 may transmit and receive messages such as data and/or instructions organized into a data structure (e.g., communications packets 838 ).
  • the data structure can include program instructions (e.g., application code 803 ), communicated through communications link 815 and communications interface 814 .
  • Received program code may be executed by processor 807 as it is received and/or stored in the shown storage device or in or upon any other non-volatile storage for later execution.
  • Computer system 8 A 00 may communicate through a data interface 833 to a database 832 on an external data repository 831 . Data items in a database can be accessed using a primary key (e.g., a relational database primary key).
  • a primary key e.g., a relational database primary key
  • the processing element partition 801 is merely one sample partition.
  • Other partitions can include multiple data processors, and/or multiple communications interfaces, and/or multiple storage devices, etc. within a partition.
  • a partition can bound a multi-core processor (e.g., possibly including embedded or co-located memory), or a partition can bound a computing cluster having plurality of computing elements, any of which computing elements are connected directly or indirectly to a communications link.
  • a first partition can be configured to communicate to a second partition.
  • a particular first partition and particular second partition can be congruent (e.g., in a processing element array) or can be different (e.g., comprising disjoint sets of components).
  • a module as used herein can be implemented using any mix of any portions of the system memory and any extent of hard-wired circuitry including hard-wired circuitry embodied as a processor 807 . Some embodiments include one or more special-purpose hardware components (e.g., power control, logic, sensors, transducers, etc.). A module may include one or more state machines and/or combinational logic used to implement or facilitate the performance characteristics of low latency and low defect media file transcoding using optimized partitioning.
  • Various implementations of the database 832 comprise storage media organized to hold a series of records or files such that individual records or files are accessed using a name or key (e.g., a primary key or a combination of keys and/or query clauses).
  • Such files or records can be organized into one or more data structures (e.g., data structures used to implement or facilitate aspects of low latency and low defect media file transcoding using optimized partitioning).
  • Such files or records can be brought into and/or stored in volatile or non-volatile memory.
  • FIG. 8 B depicts a block diagram of an instance of a cloud-based environment 8 B 00 .
  • a cloud-based environment supports access to workspaces through the execution of workspace access code (e.g., workspace access code 8531 and workspace access code 8532 .
  • Workspace access code can be executed on any of the shown user devices 852 (e.g., laptop device 8524 , workstation device 8525 , IP phone device 8523 , tablet device 8522 , smart phone device 8521 , etc.).
  • a group of users can form a collaborator group 858 , and a collaborator group can be comprised of any types or roles of users.
  • a collaborator group can comprise a user collaborator, an administrator collaborator, a creator collaborator, etc. Any user can use any one or more of the user devices, and such user devices can be operated concurrently to provide multiple concurrent sessions and/or other techniques to access workspaces through the workspace access code.
  • a portion of workspace access code can reside in and be executed on any user device.
  • a portion of the workspace access code can reside in and be executed on any computing platform (e.g., computing platform 860 ), including in a middleware setting.
  • a portion of the workspace access code e.g., workspace access code 853 3
  • the workspace access code can interface with storage devices such the shown networked storage 866 .
  • Storage of workspaces and/or any constituent files or objects, and/or any other code or scripts or data can be stored in any one or more storage partitions (e.g., storage partition 864 1 ).
  • a processing element includes forms of storage, such as RAM and/or ROM and/or FLASH, and/or other forms of volatile and non-volatile storage.
  • a stored workspace can be populated via an upload (e.g., an upload from a user device to a processing element over an upload network path 857 ).
  • One or more constituents of a stored workspace can be delivered to a particular user and/or shared with other particular users via a download (e.g., a download from a processing element to a user device over a download network path 859 ).

Abstract

Systems, methods and computer program products for high-performance, low latency start-up of large shared media files. A method for low latency startup with low defect playback commences upon identifying a first media file having a first format to be converted to a second media file having a second format. A scheduler divides the first media file into multiple partitions separated by partition boundaries. The method continues by converting the partitions into respective converted partitions that comport with the second format. Determinations as to the position of the partition boundaries is made based on measurable conditions present at a particular moment in time. Different formats receive different treatment based on the combination of characteristics of the first format, characteristics of the second format, as well as on characteristics of measurable conditions present at the moment in time just before conversion of a segment.

Description

    RELATED APPLICATIONS
  • The present application is a continuation of U.S. application Ser. No. 15/140,357, which claims the benefit of priority to U.S. Provisional Patent Application Ser. No. 62/154,658, and also claims benefit of priority to U.S. Provisional Patent Application Ser. No. 62/154,022, all of which are hereby incorporated by reference in their entirety.
  • FIELD
  • This disclosure relates to the field of file sharing of large media files, and more particularly to techniques for low latency and low defect media file transcoding using optimized storage, partitioning, and delivery techniques.
  • BACKGROUND
  • In today's “always on, always connected” world, people often share video and other media files on multiple devices (e.g., smart phones, tablets, laptops, etc.) for various purposes (e.g., collaboration, social interaction, entertainment, etc.). In some situations, the format (e.g., encoding, container, etc.) of a particular media file needs to be converted (e.g., transcoded) into some other format. There are many reasons why such a conversion or transcoding is needed. For example, a collaborator might have a video file in a first encoding or format, and would want to compress it so as to consume less storage space and/or consume less transmission bandwidth when it is shared (e.g., delivered to collaborating recipients). In many cases, a collaborator would want to view a video as soon as it is posted, however, due to the aforementioned reasons why such a conversion or transcoding might be needed, the video would need to be converted before being made available for previewing or sharing. Further transcoding may be needed for viewing the video using the various media players available on the various devices of the collaborators.
  • Legacy approaches to the problem of reducing the latency between availability of an original media file (e.g., in a first format) and availability of a transcoded media file (e.g., in a second format) can be improved. In one legacy case, an original media file is sent to an extremely high-powered computer, with the expectation that the transcoding can complete sooner. In other legacy cases, an original media file in a first format is divided into equally sized partitions, and each partition is transcoded in parallel with each other partition. While such a partitioning and parallel processing techniques serve to reduce the latency time to a first viewing of a transcoded media file, such an approach is naïve, at least as pertains to the extent that many of the resulting transcoded partitions exhibit defects.
  • What is needed is a technique or techniques to improve over legacy and/or over other considered approaches. Some of the approaches described in this background section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
  • What is needed is a technique or techniques to reduce the first-view latency time incurred when transcoding a media file in a first format to a second format while reducing or eliminating defects in the resulting transcoded media file. The problem to be solved is rooted in technological limitations of the legacy approaches. Improvements, in particular improved design, and improved implementation and application of the related technologies, are needed.
  • SUMMARY
  • The present disclosure provides improved systems, methods, and computer program products suited to address the aforementioned issues with legacy approaches. More specifically, the present disclosure provides a detailed description of techniques used in systems, methods, and in computer program products for low latency and low defect media file transcoding using optimized partitioning. Certain embodiments are directed to technological solutions for exploiting parallelism when transcoding from a first format to a second format by determining partition boundaries based on the first format. The disclosed techniques and devices within the shown environments as depicted in the figures provide advances in the technical field of high-performance computing as well as advances in the technical fields of distributed computing and distributed storage.
  • Further details of aspects, objectives, and advantages of the disclosure are described below and in the detailed description, drawings, and claims. Both the foregoing general description of the background and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the claims.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The drawings described below are for illustration purposes only. The drawings are not intended to limit the scope of the present disclosure.
  • FIG. 1 depicts an environment for using and transcoding media files.
  • FIG. 2A presents a diagram depicting a full file transcoding approach for comparison of techniques for performing low latency and low defect media file transcoding using optimized partitioning.
  • FIG. 2B presents a diagram illustrating techniques for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 3A is a chart showing media file partitioning as implemented in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 3B1 and FIG. 3B2 are a block diagrams showing media file reformatting as implemented in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 3C depicts media file reformatting as implemented in systems for low latency and low defect media, according to an embodiment.
  • FIG. 3D depicts an on-the-fly watermarking system as implemented in systems for low latency and low defect media file transcoding, according to an embodiment.
  • FIG. 4A presents a processing timeline to show full file transcoding latency for comparison to techniques for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 4B presents a latency timeline illustrating a low first-view latency technique used in systems implementing low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 5 is a flow diagram illustrating a system for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6A is a flow diagram illustrating caching of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6B is a flow diagram illustrating pre-transcoding of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6C is a flow diagram illustrating frame-by-frame delivery of a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6D1 is a flow diagram illustrating playlist generation from a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6D2 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6D3 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6D4 is a flow diagram illustrating timecode correction techniques used when delivering video clips to viewers as used in systems for low latency and low defect media file transcoding using optimized partitioning, according to an embodiment.
  • FIG. 6E is a flow diagram illustrating techniques for accessing media files through a custom virtual file system as used when delivering video clips to collaborators, according to an embodiment.
  • FIG. 7 depicts a system as an arrangement of computing modules that are interconnected so as to operate cooperatively to implement certain of the herein-disclosed embodiments.
  • FIG. 8A and FIG. 8B depict exemplary architectures of components suitable for implementing embodiments of the present disclosure, and/or for use in the herein-described environments.
  • DETAILED DESCRIPTION
  • Some embodiments of the present disclosure address the problem of reducing the first-view latency time incurred when transcoding a media file in a first format to a second format, while reducing or eliminating defects in the resulting transcoded file and some embodiments are directed to approaches for exploiting parallelism when transcoding from a first format to a second format by determining partition boundaries based on the first format. More particularly, disclosed herein and in the accompanying figures are exemplary environments, systems, methods, and computer program products for low latency and low defect media file transcoding using optimized partitioning.
  • OVERVIEW
  • In today's “always on, always connected” world, people often share video and other media files on multiple devices (e.g., smart phones, tablets, laptops, etc.) for various purposes (e.g., collaboration, social interaction, etc.). In some situations, the format (e.g., encoding, container, etc.) of a particular media file needs to be converted (e.g., transcoded) into some other format. However, a person may want to immediately view and/or her media file, yet may need to wait for the media file to be converted or transcoded. To address the need to reduce the first-view latency time incurred when transcoding a media file in a first format to a second format while reducing or eliminating defects in the resulting transcoded media file, the techniques described herein receive and analyze an original media file to determine optimized partitions for transcoding, and techniques described herein operate in conjunction with cloud-based remote file storage. For example, a custom file system can be employed and/or optimized partitions can be based in part on the target format or formats (e.g., encoding scheme, codec, container, etc.) and/or available computing resources (e.g., storage, processing, communications bandwidth, etc.). Specifically, in one or more embodiments, the partition boundaries can be selected with respect to key frames (e.g., I-frames). For example, a leading edge boundary partition can be selected to be precisely at a key frame, and a trailing edge boundary can be adjacent to a next key frame. When the partitions and partition boundaries have been determined, the partitions can be assigned to computing resources for simultaneous transcoding of the respective partitions. The transcoded media file partitions can then be assembled into a single transcoded video file (e.g., container) and delivered for viewing. In some embodiments, the partitions can include attribute datasets (e.g., moov atoms) such that a first or beginning transcoded partition can be delivered and viewed in advance of the availability and assemblage of the remaining transcoded partitions, thus further reduce the first-view latency time.
  • Various embodiments are described herein with reference to the figures. It should be noted that the figures are not necessarily drawn to scale and that the elements of similar structures or functions are sometimes represented by like reference numerals throughout the figures. It should also be noted that the figures are only intended to facilitate the description of the disclosed embodiments—they are not representative of an exhaustive treatment of all possible embodiments, and they are not intended to impute any limitation as to the scope of the claims. In addition, an illustrated embodiment need not portray all aspects or advantages of usage in any particular environment. An aspect or an advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiments even if not so illustrated. Also, reference throughout this specification to “some embodiments” or “other embodiments” means that a particular feature, structure, material, or characteristic described in connection with the embodiments is included in at least one embodiment. Thus, the appearances of the phrase “in some embodiments” or “in other embodiments” in various places throughout this specification are not necessarily referring to the same embodiment or embodiments.
  • Definitions
  • Some of the terms used in this description are defined below for easy reference. The presented terms and their respective definitions are not rigidly restricted to these definitions—a term may be further defined by the term's use within this disclosure. The term “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion. As used in this application and the appended claims, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or is clear from the context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A, X employs B, or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. The articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or is clear from the context to be directed to a singular form.
  • Reference is now made in detail to certain embodiments. The disclosed embodiments are not intended to be limiting of the claims.
  • DESCRIPTIONS OF EXEMPLARY EMBODIMENTS
  • FIG. 1 depicts an environment 100 for using and transcoding media files. As an option, one or more instances of environment 100 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The environment 100 or any aspect thereof may be implemented in any desired environment.
  • As shown, the environment 100 supports access to workspaces (e.g., workspace 122 1 and workspace 122 2) by a plurality of users (e.g., collaborators 120) through a variety of computing devices (e.g., user devices 102). For example, the collaborators 120 can comprise a user collaborator 123, an administrator collaborator 124, and a creator collaborator 125. In addition, for example, the user devices 102 can comprise one or more instances of a laptop 102 1 and laptop 102 5, one or more instances of a tablet 102 2, one or more instances of a smart phone 102 3, and one or more instances of a workstation (e.g., workstation 102 4 and workstation 102 6). As shown, the workspaces can present to the collaborators 120 a set of documents accessible by each collaborator (e.g., based on permissions). For example, the workspaces can provide certain groups of the collaborators 120 access to a set of media files (e.g., with container file extensions .mov, .mp4, .wmv, .flv, etc.) for various collaboration activities (e.g., creating, sharing, viewing, listening, editing, etc.).
  • The environment 100 further illustrates the content (e.g., media files) represented in the workspaces can be managed (e.g., converted, transcoded, etc.) and stored on a server farm 110. For example, the server farm 110 can be a cloud-based and/or distributed computing and storage network(s) comprising one or more instances of a host server 112, one or more instances of a sync server 113, one or more instances of a notification server 114, one or more instances of a collaboration server 116, one or more instances of a content server 117, and one or more instances of an origin server 118. In certain embodiments, other combinations of computing devices and storage devices can comprise the server farm 110. The collaborators 120 interact with the workspaces to upload media files (e.g., original media file 132) through an upload path 127 to the server farm 110. The collaborators 120 can further interact with the workspaces to download media files (e.g., transcoded media file 134) through a download path 129 from the server farm 110.
  • As an example, the creator collaborator 125 may have just posted a new video (e.g., original media file 132 over the upload path 127) that is shared with the user collaborator 123 in the workspace 122 1, and the user collaborator 123 selected the new video for viewing on laptop 102 1. However, a media player 103 on laptop 102 1 and/or the associated computing resource constraints (e.g., of laptop 102 1, of download path 129, etc.) may demand the original media file 132 be transcoded to the transcoded media file 134 having a video playback format (e.g., advanced systems format (ASF) file) that is different than the original media file 132 format (e.g., MP4). In this case, one or more servers in the server farm 110 can perform the transcoding using various approaches, where the choice of approach will impact a first-view latency time 104 (e.g., the time from a request to view to the start of viewing) and extent of viewing quality defects experienced by the user collaborator 123 and other users. A comparison of one approach shown in FIG. 2A to the herein disclosed approach shown in FIG. 2B is described in the following.
  • FIG. 2A presents a diagram 2A00 depicting a full file transcoding approach for comparison of techniques for performing low latency and low defect media file transcoding using optimized partitioning. As an option, one or more instances of diagram 2A00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The diagram 2A00 or any aspect thereof may be implemented in any desired environment.
  • One approach to transcoding a media file is shown in diagram 2A00. For example, a video file may need to be transcoded for viewing by a user. As shown, the approach receives an original media file (see step 202) and proceeds to process (e.g., transcode) the entire original media file (see step 204). In this legacy full file transcoding approach, the user desiring to view the media file will need to wait until the entire media file is transcoded before being able to view the transcoded media file. In some cases, processing the original media file can comprise two steps of first converting to an intermediate format and then converting to a target format. A first-view latency time 221 using the approach shown in diagram 2A00 can be improved by using high-powered computing resources, yet the first-view latency time 221 can remain long. For example, a 30-minute video can take 20 minutes to be transcoded and made ready for viewing using the full file transcoding approach shown in FIG. 2A. The first-view latency time 221 will further increase as the demanded resolution of the video increases.
  • In some cases, an original media file is sent to an extremely high-powered computer, with the expectation that the transcoding can complete sooner. In other cases, an original media file in a first format is divided into equally sized partitions, and each partition is transcoded in parallel with each other partition. For example, when an original media file in a first format is divided into N equally sized partitions, then the time to complete the transcoding can theoretically be reduced a time proportional to 1/N. While this divide by N partitioning and parallel processing technique serves to reduce the latency time to a first viewing of a transcoded media file, such an approach can be improved upon, at least as pertains to the aspect that many of the resulting transcoded partitions exhibit defects. For example, many of the resulting transcoded partitions exhibit image distortions brought about by generating clip boundaries according to strict divide by N partitioning.
  • One improved approach implemented in the herein disclosed techniques for low latency and low defect media file transcoding using optimized partitioning is described as pertains to FIG. 2B.
  • FIG. 2B presents a diagram 2B00 illustrating techniques for low latency and low defect media file transcoding using optimized partitioning. As an option, one or more instances of diagram 2B00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The diagram 2B00 or any aspect thereof may be implemented in any desired environment.
  • The approach illustrated in diagram 2B00 implements an optimized partitioning of a media file for low latency and low defect transcoding. Specifically, the set of steps describing such an approach begins with receiving an original media file (see step 202) and analyzing the original media file to determine optimized partitions for transcoding (see step 206). For example, optimized partitions can be based in part on the target format or formats (e.g., encoding scheme, codec, container, etc.) and/or available computing resources (e.g., storage, processing, communications bandwidth, etc.). In some cases the size of a partition might vary with environmental considerations. Specifically, in one or more embodiments, the leading-edge partition boundaries can be at encoding key frames (e.g., I-frames). When the partitions and partition boundaries have been determined, the partitions can be assigned to computing resources for transcoding (see step 208). The computing resources (e.g., server farm 110) can then transcode the original media file partitions to respective transcoded media file partitions (see parallel steps of step 210 1, step 210 2, to step 210 N). The transcoded media file partitions can then be assembled into a single transcoded video file (e.g., container) (see step 212).
  • The herein disclosed approach and technique presented in diagram 2B00 has several advantages. For example, partitioning the media file (e.g., into N partitions) for parallel transcoding across a distributed computing system (e.g., N servers) can reduce a first-view latency time (e.g., by a factor of 1/N) as compared to a full file transcoding approach. Further, by determining optimal partitions and partition boundaries (e.g., aligned with key frames), defects in the resulting transcoded file can be minimized or eliminated. In addition, a user can start viewing the transcoded media file when the first partition has been transcoded or the first set of partitions have been transcoded, such that viewing can begin before the transcoded file has been assembled. For example, a reduced first-view latency time 222 for a 30-minute video using the herein disclosed approach shown in diagram 2B00 can be a few seconds (e.g., when the first partition has been transcoded and delivered). More details regarding the partitioning of media files are shown and described as pertains to FIG. 3A, FIG. 3B1, FIG. 3B2, FIG. 3C and FIG. 3D.
  • FIG. 3A is a chart 3A00 showing media file partitioning as implemented in systems for low latency and low defect media file transcoding using optimized partitioning. As an option, one or more instances of chart 3A00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The chart 3A00 or any aspect thereof may be implemented in any desired environment.
  • The chart 3A00 shows a time-based representation of an original media file 302 in a first encoding format or a first set of encoding formats. As shown, for example, the original media file 302 can be a video file packaged in a container that comprises a moov atom at the end. The moov atom, also referred to as a movie atom, is an attribute dataset comprising information about the original media file 302 such as the timescale, duration, display characteristics of the video, sub-atoms containing information associated with each track in the video, and other attributes. As shown, an original moov atom 303 is present at the end of the original media file 302. When transcoding of the original media file 302 is demanded, the original media file 302 can be analyzed to determine a set of candidate partitions 304 for parallel processing. For example, in legacy approaches, the candidate partitions can be determined by equally dividing (e.g., into units of time or duration) the original media file 302 by the number of computing resources (e.g., servers) available for parallel transcoding operations. In this case, however, the candidate partitions 304 may have partition boundaries that result in defects in the playback of the assembled transcoded media file. Such defects can comprise subjective quality as perceived by a user (e.g., blockiness, blurriness, ringing artifacts, added high frequency content, picture outages, freezing at a particular frame and then skipping forward by a few seconds, etc.). In many cases, objective metrics that characterize one or more aspects of playback quality can be computed (e.g., frame-by-frame comparison of an original object and a transcoded object).
  • In one embodiment, the herein disclosed techniques can determine a set of optimized partitions 305 for transcoding the original media file 302 to reduce first-view latency and reduce or eliminate transcoding defects. As shown, for example, a set of key frame locations (e.g., key frame location 3061, key frame location 3062, key frame location 3063, key frame location 3064, key frame location 3065) can be used to define the boundaries of the file partitions (e.g., P1, P2, P3, and P4). In some embodiments, the key frame locations can be defined in the original media file 302, and in certain embodiments, the key frame locations can be based in part on the target transcoding format or formats. In one or more embodiments, the candidate partitions 304 (e.g., based on an optimal set of computing resources to deliver low latency) can be aligned to the closest key frame location (e.g., based on an optimal partitioning boundary to deliver low defects). For example, key frame location 3062 is chosen as a partition boundary over key frame location 3065 as being closer to an instance of a candidate partition 304. In some cases and embodiments, a set of moov atoms can be included at various positions in one or more partitions based in part on the known and/or expected delivery and playback method. For example, each instance of a partition in the optimized partitions 305 is shown to have a moov atom at the beginning of the partition (e.g., see moov atom 3071 in partition P1 and moov atom 3072 in partition P2). Positioning the moov atom at the beginning of the partitions can reduce the first-view latency by enabling the user media player to start decoding and playing the first partition (e.g., P1) independently of the transcoding completion status and delivery of the other partitions (e.g., for video streaming, progressive downloading, etc.).
  • FIG. 3B1 presents a block diagram 3B100 showing media file reformatting as implemented in systems for low latency and low defect media file transcoding using optimized partitioning. The techniques for media file reformatting can be practiced in any environment.
  • As shown, a media file is laid out in a first format (e.g., the shown source format) where the file is organized into multiple adjacent partitions. The adjacent partitions comprise playlist data (e.g., playlistF1 322 F1), video data (e.g., video extent 324), and audio data (e.g., audio extent 323). One way to convert from a source format 342 1 to a target format 352 1 is to use a multi-format transcoder where the multi-format transcoder accepts a media file in a source format and produces a media file in a target format. Another way to convert from certain source formats to certain target formats is to use a non-transcoding segment reformatter 320. Such a non-transcoding segment reformatter 320 segments a video stream into a plurality of video segments (e.g., video segment1 326 through video segmentN 328). In some cases, and as shown, a particular video segment may have corresponding audio data (e.g., the soundtrack for the particular video segment).
  • A non-transcoding segment reformatter 320 can combine (e.g., interleave) a particular video segment with corresponding audio data. The act of combining can include producing a series of extents (e.g., 512 byte blocks or 1 k byte blocks) that can be stored as a file. As shown an extent includes both video data and audio data. The combination into the extent can involve interleaving. Interleaving can be implemented where one extent comprises a video segment (e.g., video segment1 326, or video segmentN 328) as well as an audio segment (e.g., audio segment1 327, or audio segmentN 329). Different interleaving techniques interleave within an extent at different degrees of granularity. For example, the combination of video data and audio data within the extent can involve interleaving at a block-level degree of granularity, or at a timecode degree of granularity, or at a byte-by-byte or word-by-word degree of granularity.
  • In some embodiments, a non-transcoding segment reformatter 320 can combine video in a particular video format (e.g., in an HTTP live streaming (HLS) format or a dynamic adaptive streaming over HTTP (DASH) format) with corresponding audio data in a particular audio format or encoding (e.g., as an advanced audio coding (AAC) stream or as an MP3 stream). In some cases interleaving can be implemented by merely moving video or audio segments from one location (e.g., from a location in a source format) to a location in a target format without performing signal-level transcoding operations. In some cases interleaving can be implemented by merely moving video segments from one location (e.g., from a location in a source format) to an allocation in a target format without performing any video signal-level transcoding operations. Audio data can segmented and transcoded as needed (e.g., using the shown audio transcoder 331) to meet the specification of the target format. For example, situations where the video is already being delivered in a standard H.264 encoding, the video doesn't need to be re-transcoded, however if the audio is encoded using (for example) the free lossless audio codec (FLAC), the audio might need to be transcoded into an appropriate target format (MP3, high-efficiency advanced audio coding (HE-AAC), or AC-3).
  • Some formats include a playlist. Such a playlist might identify titles or chapters or other positions in a corresponding stream. For example, the playlistF1 322 F1 in the depicted source format includes a series of markers (e.g., titles or chapters or other positions). For each marker, the playlistF1 322 F1 includes two pointers or offsets: (1) into the video data extent 324, and (2) into the audio data extent 323. Strictly as an additional example, the playlistF2 322 F2 in the depicted target format includes a series of markers (e.g., titles or chapters or other positions) where, for each marker, the playlistF2 322 F2 includes one pointer to an extent. The degree of interleaving is assumed or inherent or can be determined from characteristics of the target format.
  • FIG. 3B2 presents a block diagram 3B200 showing a variation of the media file reformatting as depicted in FIG. 3B1. One way to convert from a source format 342 2 to a target format 352 2 is to use a multi-format transcoder where the multi-format transcoder accepts a media file in a source format (e.g., in an interleaved format) and produces a media file in a target format (e.g., comprising a video extent and an audio extent).
  • FIG. 3C depicts a media file reformatting system 3C00 as implemented in systems for low latency and low defect media file transcoding. As shown, one or more media files comprise a video portion, a respective audio portion, and a respective playlist. Each of the shown video files are encoded and/or formatted in a source format 342 3. A non-transcoding media file reformatter 350 serves to process each video portion, its respective audio portion, and its respective playlist so as to generate a media file in the target format 354 3.
  • In some embodiments the non-transcoding media file reformatter 350 moves video data from its position in the media file of the source format (e.g., preceding the audio portion) to a position in the target format (e.g., following the audio portion). As shown, the video portions of a media file (e.g., video portion 346 1, video portion 346 2, video portion 346 N) are moved to different positions in the media file of the target format. Also as shown, the audio portions of a media file (e.g., audio portion 348 1, audio portion 348 2, audio portion 348 N) are moved to different positions in the media file of the target format. Playlists of media files in the source format (e.g., playlistS1, playlistS2, . . . playlistSN) are converted using the non-transcoding segment media file reformatter 350 such that the playlists of media files in the target format (e.g., playlistT1, playlistT2, . . . playlistTN) are adjusted so as to point to the same titles, chapters, locations, etc. as were present in the playlists of media files in the source format.
  • FIG. 3D depicts an on-the-fly watermarking system 3D00 as implemented in systems for low latency and low defect media file transcoding. As shown, the system includes a watermark generator 380 and a watermark applicator 381. On-the-fly watermarking is performed as follows: A server video cache 396 holds video segments that are made ready for delivery to a user/viewer. At some moment before delivery to the user/viewer, a selector 398 determines a next video segment (e.g., segment S1, segment2 S2, segment3 S3, . . . , segmentN SN) to send over a network (e.g., using sending unit 388) to a device destination prescribed by the user/viewer.
  • The watermark generator 380 has access (e.g., through a data access module 390) to a media file repository 382 that stores media files 386 as well as media playlist files 384. The watermark generator 380 further has access to an environmental data repository 385. A watermark can be generated based on any combination of data retrieved from any source. For example, a watermark can contain a user's unique information (e.g., name or nickname or email alias, etc.), and/or the name or identification of the user's device, the time of day, copyright notices, logos, etc. The watermark can be placed over the entire video and/or in a small section, and/or move around every X frames or Y seconds, etc. The watermark itself can also update as the video stream progresses.
  • In exemplary embodiments watermark can be generated by combining a segment from the server video cache with environmental data 394 retrieved from the environmental data repository 385. More specifically, a video segment can be watermarked by applying an image over one or more frames in the selected video segment. The aforementioned image might be an aspect of the requesting user, possibly including the requesting user's userID, either based on a plain text version of the userID, or based on an obfuscated version of the userID. In some scenarios, the aforementioned image might include an aspect of a time (e.g., a timestamp), and/or some branding information (e.g., a corporate logo).
  • In some cases, the watermark generator 380 performs only watermark generation so as to produce a generated watermark 393 and passes the generated watermark to the watermark applicator 381. The watermark applicator in turn can apply the generated watermark 393 to a video segment so as to produce watermarked selected segments (e.g., watermarked selected segment 389 1, watermarked selected segment 389 2). In some cases a watermark can be included in or on an added frame. In such cases, the length of the video segment is changed (e.g., by the added frame). As such, the playlist regenerator 387 can retrieve and process a selected segment playlist (e.g., see selected segment playlist 392 1 and selected segment playlist 392 2) as well as instructions from the watermark applicator (e.g., “added one frame immediately after frame 0020”) so as to produce a regenerated media file playlist 389 that corresponds to the media file from which the selected segment was cached.
  • In the context of watermarking video streams as well as in other video streams, some or all of the files in the file system may actually be located in a remote storage location (e.g., in a collaborative cloud-based storage system). To avoid incurring delays in the downloading and processing of that data, a client-side video cache 397 can be implemented. As such, serving of video segments is enhanced.
  • For example, consider the situation when a video file in a file system is selected to be played on a client-local video player, but the file is actually located across the network at another network location (e.g., on a server). If network conditions are perfect and download speeds are high enough, then it is quite possible for the video to be streamed across the network without any stalls or interruptions in the display of the video data. However, situations often exist where video downloads still need to perform even when the network conditions are not ideal. Consider if the system is configured such that the video starts being displayed as soon as portions of the video data are received at the local client. In this situation, there is likely to be intermittent interruptions in the video display, where a portion of the video is played, followed by an annoying stall in video playing (as network conditions cause delays in data downloads), followed by more of the video being displayed as additional data is downloaded.
  • The present embodiment of the invention provides an improved approach to display data in a virtual file system that significantly eliminates these intermittent interruptions. In the present embodiment, the data is not always immediately queued for display to the user. Instead, chunks (e.g., segments) of data are continuously requested by a client-local module (e.g., a client-local video player), and the data starts being displayed only when there are sufficient amounts of data (e.g., a sufficient number of segments) that has been locally received to ensure smooth display of the data. This approach therefore avoids the problems associated with immediate playback of data, since there should always be enough data on hand to smooth out any changes in network conditions.
  • FIG. 3D includes one approach to implement aspects of video segment caching. In the depicted system, a request originating from a user device is received by the server. The requested data may correspond to any granularity of data (e.g., block, segment, chapter, title, etc.). For example, an entire media file or title may be requested; or, only a range of blocks or chapter of the media can be requested. Further, the requested data may pertain to any type of structure or format.
  • FIG. 4A presents a processing timeline 4A00 to show full file transcoding latency for comparison to techniques for low latency and low defect media file transcoding using optimized partitioning. As an option, one or more instances of processing timeline 4A00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The processing timeline 4A00 or any aspect thereof may be implemented in any desired environment.
  • Processing timeline 4A00 shows an original media file01 404 1 transcoded into a transcoded media file01 406 1 using a full file transcoding approach 410. As shown, such an approach introduces a setup time 402 for a computing device or resource to prepare for transcoding an entire media file (e.g., a two-hour movie). The full file transcoding approach 410 then proceeds to transcode the original media file01, requiring that a user desiring to view the transcoded file wait until the entire file is transcoded, thus experiencing a full file transcoding approach first-view latency 412. For example, transcoding a one-hour video to certain combinations of formats and resolutions can result in the full file transcoding approach first-view latency 412 being one to two hours. For comparison to the full file transcoding approach 410, FIG. 4B illustrates the herein disclosed techniques for reducing the first-view latency of transcoded media files, while minimizing or eliminating defects in the transcoded media files.
  • FIG. 4B presents a latency timeline 4B00 illustrating a low first-view latency technique used in systems implementing low latency and low defect media file transcoding using optimized partitioning. As an option, one or more instances of latency timeline 4B00 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The latency timeline 4B00 or any aspect thereof may be implemented in any desired environment.
  • Optimized Partitioning Approach Using Increasing Chunk Size
  • Latency timeline 4B00 shows an original media file01 404 1 transcoded into a transcoded media file01 406 1 using an optimized partitioning approach 420 and a progressive optimized partitioning approach 430 according to the herein disclosed techniques for low latency and low defect media file transcoding using optimized partitioning. Specifically, the optimized partitioning approach 420 can determine optimized partitioning of the original media file01 based in part on the current and/or target format (e.g., key frame location) and/or available computing resources. The resulting partitions are delivered to a set of computing resources for parallel processing (e.g., transcoding) and assembled into a file container. As shown, in some embodiments, the transcoded file can be viewed by a user when the first partition (e.g., P1) has been processed and delivered, resulting in an optimized partitioning first-view latency 422. In the embodiment implementing the progressive optimized partitioning approach 430, the first partition is relatively small to enable a faster transcoding processing time for an initial clip. A shorter progressive optimized partitioning first-view latency 432 can be implemented to improve still further over the earlier-described latency of optimized partitioning first-view latency 422. In both approaches shown in FIG. 4B, the first-view latencies can be substantially shorter (e.g., seconds) than the full file transcoding approach first-view latency 412 as shown in FIG. 4A (e.g., hours). The initial relatively small clip enables a faster transcoding processing time for an initial clip. Successively larger chunks (e.g., clip size) can be determined as transcoding proceeds through the original media file. More particularly, although the initial, relatively small clip is transcoded and presented to the requestor with low latency, the successively larger clip sizes can improve overall performance of the system as a whole. Use of progressive chunk size (e.g., even for just a few of the chunks after the first one) facilitates delivering more and better quality upgrades (e.g., via more and better quality levels) at a faster rate. Consider a system that implements equal chunk sizes of 10 seconds. In such a case, a quality upgrade can only happen at a chunk boundary. It follows then that it would take at least 10 seconds of playback before the quality can be upgraded. Initially, the client starts with a default quality (e.g., a very low one such as 360p). If the client can actually support 1080p, which may be four quality jumps away, it will take 4 chunk times (40 seconds) to reach that quality. By using progressive chunk sizes initially, the amount of time it takes to upgrade to the maximum available quality is shortened. An alternative technique for making all the chunks into small sizes (e.g., 2 seconds each) so as to reduce the chunk time quantum would result in a very large number of chunks—and each individual network request (e.g., request for a chunk) introduces communication latency and processing overhead, resulting in undesired slower retrieval of data. Increasing the chunk size strikes a balance between use of system resources and user experience.
  • FIG. 5 is a flow diagram 500 illustrating a system for low latency and low defect media file transcoding using optimized partitioning. As an option, one or more instances of flow diagram 500 or any aspect thereof may be implemented in the context of the architecture and functionality of the embodiments described herein. The flow diagram 500 or any aspect thereof may be implemented in any desired environment.
  • Flow diagram 500 in FIG. 5 shows one embodiment of representative modules of, and flows through, a system for implementing techniques for low latency and low defect media file transcoding using optimized partitioning. Specifically, an intermediate server 506 can comprise a partitioner module 508, a partition workload assigner 510, and a transcoder partition assembler 512. The intermediate server 506 can further communicate with a cloud-computing provider 520 comprising a plurality of workload nodes (e.g., workload node 524 1, workload node 524 2, workload node 524 3, to workload node 524 N) to perform various distributed computing and storage operations. Specifically, as pertains to the herein disclosed techniques, the partitioner module 508 of the intermediate server 506 can receive an original media file 502 from a storage facility for transcoding. The partitioner module 508 can analyze the original media file 502 to determine optimized partitions for transcoding (e.g., based in part on the target format or formats and/or available computing resources at cloud computing provider 520). When the partitions and partition boundaries have been determined, the partition workload assigner 510 can assign the respective partitions to the workload nodes at the cloud computing provider 520 to transcode the partitioned original media file segments to respective transcoded media file segments. The transcoder partition assembler 512 can then assemble the transcoded media file segments into a transcoded media video file 504.
  • Caching
  • FIG. 6A is a flow diagram 6A00 illustrating caching of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning. Performance of previewing and other delivery of media to a collaborator can be improved by pre-transcoding an initial portion of a media file upon initial posting. For example, and as shown in FIG. 6A, when a user requests to view a media clip (e.g., by selecting from a workspace media preview icon), the system checks in a cache 602 for the presence of the media clip (or portion thereof). If the requested media clip is already available in the cache, then the clip is served. If requested media clip is not yet available in the cache, then at least an initial portion of the media can be transcoded, stored in the cache, and served to the requestor. Various techniques for pre-transcoding an initial portion of a media file are shown and discussed as pertains to FIG. 6B.
  • Pre-Transcoding
  • FIG. 6B is a flow diagram 6B00 illustrating pre-transcoding of an initial clip as used in systems for low latency and low defect media file transcoding using optimized partitioning. As shown, a creator collaborator 125 might provide a media file for uploading to the remote collaborative cloud-based storage system. At that time, the system can detect that the media file is new to the system and, in accordance with some pre-transcoding techniques, the new file can be preprocessed. Many preprocessing operations can be performed, in particular pre-transcoding of an initial clip. When a collaborator requests to view that media, a preprocessed initial clip of the newly received file is available and can be served to the requestor upon request, resulting in low-latency delivery of the requested media and providing a good user experience. In some embodiments, the media file can be transcoded into multiple initial clips corresponding to various initial lengths (e.g., 10 seconds, 20 seconds, 30 seconds, etc.) and corresponding to various qualities (e.g., 480p, 720p, 1080p, etc.).
  • Frame-by-Frame Delivery Using a Delivery Pipeline
  • FIG. 6C is a flow diagram 6C00 illustrating frame-by-frame delivery of a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning. In some cases, an initial transcoded clip or other requested transcoded clip might not be pre-transcoded (e.g., might not yet be stored in the cache, and might not be stored in the remote collaborative cloud-based storage system). For example, if the transcoder needs to send a chunk to the client but does not have the chunk transcoded, it will start the transcoding operation for that chunk and, as each frame is transcoded, send the frame down to the client, keeping the connection open for subsequent frames. If the transcoder does have the chunk already transcoded (e.g., because it is running with more resources than it needs and is ahead in the transcoding operation than the client is in the viewing operation), then it simply sends the entire chunk down at once (e.g., without using a frame-by-frame pipeline).
  • In some situations a low latency preview can be facilitated by transcoding a very small portion for initial deliver (e.g., see the technique of FIG. 4B). In other cases, such as when sufficient computing resources needed to transcode an entire initial clip cannot be reserved, then a technique to establishing a frame-by-frame pipeline for transcoding and delivery can be employed. When sufficient computing resources needed to transcode become available, the frame-by-frame pipeline can be flushed, and other transcoding and delivery techniques can be pursued.
  • Frame-by-Frame Delivery Using Automatic Pre-Generation of a Playlist
  • FIG. 6D1 is a flow diagram illustrating playlist generation from a video clip as used in systems for low latency and low defect media file transcoding using optimized partitioning. In many situations, a playlist (e.g., an HLS playlist) or manifest (e.g., a DASH manifest) is delivered before delivery of a media clip or portion thereof. In many cases it is felicitous to pre-generate a playlist or manifest upon receipt of a request to access (e.g., watch) a media file. The requester can see various characteristics of the entire media file, and a media player can present navigation controls that are substantially accurate vis-à-vis the entire media file. In some cases many different sized clips, possibly using different qualities of video, can be delivered. In some such cases the timecode of the different clips is corrected (see FIG. 6D4, below).
  • Generation of URLs Used for Retrieval of Media Clips
  • FIG. 6D2 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning. Generating a playlist or manifest for a clip or series of clips involves relating a time or time range with a media file. Strictly as an example, a playlist corresponding to a series of successively larger chunks (e.g., such as discussed in the foregoing FIG. 4B) can be determined as transcoding proceeds through the original media file. The playlist can refer to the initial media file location (e.g., by URL) for immediate playback, and a playlist can identify to the successively larger clips by referring to the media file location of respective successively larger clips. Multiple playlists can be generated upon presentation of a media file, and the resulting playlists or manifests can be stored or cached for fast retrieval.
  • Generation of Stateful URLs Used for Retrieval of Media Clips
  • FIG. 6D3 is a flow diagram illustrating generation of URLs for video clips as used in systems for low latency and low defect media file transcoding using optimized partitioning. Generating a playlist or manifest for a clip or series of clips involves relating a time or time range with a media file. Strictly as an example, a playlist corresponding to a series of successively larger chunks (e.g., such as discussed in the foregoing FIG. 4B) can be determined as transcoding proceeds through the original media file. As shown, the processing proceeds as follows: (1) a user requests video media from workspace, (2) the video media metadata is retrieved, and (3) a playlist is generated that contains state-encoded URLs.
  • In exemplary embodiments, there is one URL generated for each chunk in the playlist, and each URL (e.g., a state-encoded URL entry) that is generated corresponds to an independent transcoding job for that specific chunk. When the URL is accessed by the player, such as after the player reads the playlist file and requests a specific chunk, the state-encoding in the URL pertaining to that chunk is communicates state variables (e.g., variable values) to the transcoding server, which then operates using the state variables and other encoded information necessary to provide the appropriate transcoded chunk. The transcoded chunk data is then delivered to the requesting client. An example of a stateful URL is:
  • “http://transcode-001.streem.com/1080.ts?start=20&chunkDuration=10&totalDuration=120&orientation=180&mediald=184719719371&userId=38205818491&jobld=5112485”
  • The URL itself comprises information delivered to the transcoder. In the example above, the start location (e.g., “start=20”), the chunk duration (e.g., “chunkDuration=10”), and other information can be known by the transcoder, merely by receiving and parsing the stateful URL.
  • Timecode Correction Techniques to Compensate for Variable Communication Channels
  • FIG. 6D4 is a flow diagram illustrating timecode correction techniques used when transcoding or delivering video clips to viewers as used in systems for low latency and low defect media file transcoding using optimized partitioning. As heretofore described, the environment in which a video clip can be served might vary widely depending on the situation (e.g., serving to a client with a hardline Internet connection, serving to a mobile device over a wireless channel, etc.). Moreover, the environment in a particular situation can vary in real-time. For example, the bit rate available to and from a mobile device might vary substantially while the mobile device user traverses through between cellular towers. More generally, many variations in the communication fabric to and from a user device can occur at any time. Various techniques ameliorate this situation by selecting a next clip to deliver to a mobile device where the selected next clip is selected on the basis of determined characteristics of the available communication channels. For example, during periods where the communication channel is only able to provide (for example) 500 Kbps of bandwidth, a relatively low quality of video (e.g., 480p) can be delivered. When the communication channel improves so as to be able to provide (for example) higher bandwidth, then a relatively higher quality of video (e.g., 1080p) can be delivered to the viewer. Variations of quality vis-à-vis available bandwidth can occur dynamically over time, and any time duration for re-measuring available bandwidth can be relatively shorter or relatively longer. One artifact of such dynamic selection of a particular quality of a video clip is that the timecode of the next delivered clip needs to be corrected, depending on the selected quality. In particular, the metadata of the clip has to be compared with the playlist so that the playlist will still serve for navigation (e.g., fast forward, rewind, etc.) purposes. Further, absent timecode correction, a succession of chunks exhibit artifacts and glitches (e.g., image freezing, skipping around, missing frames, etc.). In exemplary embodiments, transcoding is performed “on-the-fly” using a “dynamic transcoder”. A dynamic transcoder starts and stops frequently based on incoming requests. In some implementations, the starting and stopping of the transcoder resets the timecode of the chunks it generates. One or more timecode correction techniques are applied to make each chunk indistinguishable from a chunk that had been made in a single continuous transcoding job.
  • Strictly as one example, when a transcoding job is interrupted, a timecode correction is needed. A transcoding job might be interrupted whenever a request for a chunk that the transcoder does not have transcoded at that time is received. Such a condition can occur when the client requests a different quality than the previous chunk and/or when the client requests a chunk that is determined to be a forward chunk (e.g., a “seek”) in the video rather than a next chunk as would be received during continuous playback of the video.
  • Access Techniques Using a Virtual File System
  • FIG. 6E is a flow diagram 6E00 illustrating techniques for accessing media files through a custom virtual file system as used when delivering video clips to collaborators.
  • In certain situations, the remote collaborative cloud-based storage systems rely on a particular file system (e.g., NTFS, CIFS, etc.), and in some situations, the characteristics of such a particular file system might not map conveniently to the functional requirements of a transcoding and delivery service. One technique to ameliorate differences between the functional requirements of a transcoding and delivery service and a back-end file system is to provide a custom virtual file system, which can be used as a video prefetcher 620. The video prefetcher is used for various purposes, including:
      • 1. Listing the available video files on the user's cloud remote account. The file listing presents actual, readily available files so as to eliminate or reduce the need to write custom code to interact with the APIs of the cloud provider.
      • 2. Handling the downloading of video file content (e.g., frames, bytes, etc.).
      • 3. Prefetching frames or bytes of the video file that are most likely to be accessed in the near future by the transcoder. This reduces network load by reducing or eliminating the need to fetch data every time the transcoder needs new portions of the video file. As such, throughput and latency are greatly improved.
      • 4. Providing a local repository (e.g., a cache) of the video file that is being requested so that subsequent accesses to the same part of the video file by the transcoder can be retrieved from the local repository rather than from cloud-based storage.
  • The video prefetcher 620 serves to fetch the predicted next parts of the original video that the transcoder is predicted to process soon. This improves transcoding throughput by pipelining the downloading and the transcoding into adjacent pipeline phases. Further, the video prefetcher can be configured to cache recently downloaded videos so that the transcoder doesn't need to re-download the original when transcoding into another quality level or when re-transcoding for another user. In exemplary embodiments, the video prefetcher provides an abstraction layer to other element of the system, thus allowing the transcoder to remain independent from all network requests. The transcoder is relieved of tasks and operations pertaining to downloading, authentication, identifying and transferring metadata, etc.
  • ADDITIONAL EMBODIMENTS OF THE DISCLOSURE Additional Practical Application Examples
  • FIG. 7 depicts a system 700 as an arrangement of computing modules that are interconnected so as to operate cooperatively to implement certain of the herein-disclosed embodiments. The partitioning of system 700 is merely illustrative and other partitions are possible.
  • FIG. 7 depicts a block diagram of a system to perform certain functions of a computer system. As an option, the system 700 may be implemented in the context of the architecture and functionality of the embodiments described herein. Of course, however, the system 700 or any operation therein may be carried out in any desired environment. The system 700 comprises at least one processor and at least one memory, the memory serving to store program instructions corresponding to the operations of the system. As shown, an operation can be implemented in whole or in part using program instructions accessible by a module. The modules are connected to a communication path 705, and any operation can communicate with other operations over communication path 705. The modules of the system can, individually or in combination, perform method operations within system 700. Any operations performed within system 700 may be performed in any order unless as may be specified in the claims. The shown embodiment implements a portion of a computer system, presented as system 700, comprising a computer processor to execute a set of program code instructions (see module 710) and modules for accessing memory to hold program code instructions to perform: identifying a first media file having a first format to be converted to a second media file having a second format (see module 720); partitioning the first media file into two or more partitions separated by one or more partition boundaries, wherein the one or more partition boundaries are at a determined key frame position (see module 730); converting into the second format, the two or more partitions to respective two or more converted partitions, wherein the respective two or more partitions are converted by respective two or more computing devices (see module 740); and assembling the respective two or more converted partitions to comprise the second media file (see module 750).
  • Variations include:
      • Variations where the determined key frame position is a closest key frame location to a respective one of the partition boundaries.
      • Variations that comprise storing at least a portion of the second media file into a cache.
      • Variations that comprise retrieving at least a portion of the second media file from a cache.
      • Variations that comprise delivering at least a portion of the second media file to a requestor to be viewed on a media player.
      • Variations that comprise assigning of the two or more partitions to the respective two or more computing devices.
      • Variations where the two or more partitions are characterized by a set of progressively increasing durations.
      • Variations where the two or more partitions are characterized by a set of progressively decreasing durations.
      • Variations where the two or more partitions are characterized by a set of progressively increasing quality levels.
      • Variations where the partitioning is based at least in part on a total computing resource availability.
      • Variations where the partitioning is based at least in part on at least one of, the first format and the second format.
      • Variations where the respective two or more computing devices comprise a cloud-based computing system.
      • Variations where at least one of the respective two or more converted partitions comprise an attribute dataset.
      • Variations where the attribute dataset is at least one of, an atom, a movie atom, and a moov atom.
      • Variations where steps for converting into the second format comprise a timecode correction.
      • Variations that comprise generating a playlist based at least in part on the second media file.
      • Variations where at least some playlist entries comprise a state-encoded URL.
      • Variations where the respective two or more partitions are selected based on a length.
      • Variations where at least one of the respective two or more partitions are stored before an assembling step.
      • Variations where at least one of the respective two or more partitions corresponds to a beginning portion of the first media file.
    System Architecture Overview Additional System Architecture Examples
  • FIG. 8A depicts a block diagram of an instance of a computer system 8A00 suitable for implementing embodiments of the present disclosure. Computer system 8A00 includes a bus 806 or other communication mechanism for communicating information. The bus interconnects subsystems and devices such as a CPU, or a multi-core CPU (e.g., processor 807), a system memory (e.g., main memory 808, or an area of random access memory RAM), a non-volatile storage device or area (e.g., ROM 809), an internal or external storage device 810 (e.g., magnetic or optical), a data interface 833, a communications interface 814 (e.g., PHY, MAC, Ethernet interface, modem, etc.). The aforementioned components are shown within processing element partition 801, however other partitions are possible. The shown computer system 8A00 further comprises a display 811 (e.g., CRT or LCD), various input devices 812 (e.g., keyboard, cursor control), and an external data repository 831.
  • According to an embodiment of the disclosure, computer system 8A00 performs specific operations by processor 807 executing one or more sequences of one or more program code instructions contained in a memory. Such instructions (e.g., program instructions 8021, program instructions 8022, program instructions 8023, etc.) can be contained in or can be read into a storage location or memory from any computer readable/usable medium such as a static storage device or a disk drive. The sequences can be organized to be accessed by one or more processing entities configured to execute a single process or configured to execute multiple concurrent processes to perform work. A processing entity can be hardware-based (e.g., involving one or more cores) or software-based, and/or can be formed using a combination of hardware and software that implements logic, and/or can carry out computations and/or processing steps using one or more processes and/or one or more tasks and/or one or more threads or any combination therefrom.
  • According to an embodiment of the disclosure, computer system 8A00 performs specific networking operations using one or more instances of communications interface 814. Instances of the communications interface 814 may comprise one or more networking ports that are configurable (e.g., pertaining to speed, protocol, physical layer characteristics, media access characteristics, etc.) and any particular instance of the communications interface 814 or port thereto can be configured differently from any other particular instance. Portions of a communication protocol can be carried out in whole or in part by any instance of the communications interface 814, and data (e.g., packets, data structures, bit fields, etc.) can be positioned in storage locations within communications interface 814, or within system memory, and such data can be accessed (e.g., using random access addressing, or using direct memory access DMA, etc.) by devices such as processor 807.
  • The communications link 815 can be configured to transmit (e.g., send, receive, signal, etc.) communications packets 838 comprising any organization of data items. The data items can comprise a payload data area 837, a destination address 836 (e.g., a destination IP address), a source address 835 (e.g., a source IP address), and can include various encodings or formatting of bit fields to populate the shown packet characteristics 834. In some cases the packet characteristics include a version identifier, a packet or payload length, a traffic class, a flow label, etc. In some cases the payload data area 837 comprises a data structure that is encoded and/or formatted to fit into byte or word boundaries of the packet.
  • In some embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement aspects of the disclosure. Thus, embodiments of the disclosure are not limited to any specific combination of hardware circuitry and/or software. In embodiments, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the disclosure.
  • The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to processor 807 for execution. Such a medium may take many forms including, but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks such as disk drives or tape drives. Volatile media includes dynamic memory such as a random access memory.
  • Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, or any other magnetic medium; CD-ROM or any other optical medium; punch cards, paper tape, or any other physical medium with patterns of holes; RAM, PROM, EPROM, FLASH-EPROM, or any other memory chip or cartridge, or any other non-transitory computer readable medium. Such data can be stored, for example, in any form of external data repository 831, which in turn can be formatted into any one or more storage areas, and which can comprise parameterized storage 839 accessible by a key (e.g., filename, table name, block address, offset address, etc.).
  • Execution of the sequences of instructions to practice certain embodiments of the disclosure are performed by a single instance of the computer system 8A00. According to certain embodiments of the disclosure, two or more instances of computer system 8A00 coupled by a communications link 815 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions required to practice embodiments of the disclosure using two or more instances of components of computer system 8A00.
  • The computer system 8A00 may transmit and receive messages such as data and/or instructions organized into a data structure (e.g., communications packets 838). The data structure can include program instructions (e.g., application code 803), communicated through communications link 815 and communications interface 814. Received program code may be executed by processor 807 as it is received and/or stored in the shown storage device or in or upon any other non-volatile storage for later execution. Computer system 8A00 may communicate through a data interface 833 to a database 832 on an external data repository 831. Data items in a database can be accessed using a primary key (e.g., a relational database primary key).
  • The processing element partition 801 is merely one sample partition. Other partitions can include multiple data processors, and/or multiple communications interfaces, and/or multiple storage devices, etc. within a partition. For example, a partition can bound a multi-core processor (e.g., possibly including embedded or co-located memory), or a partition can bound a computing cluster having plurality of computing elements, any of which computing elements are connected directly or indirectly to a communications link. A first partition can be configured to communicate to a second partition. A particular first partition and particular second partition can be congruent (e.g., in a processing element array) or can be different (e.g., comprising disjoint sets of components).
  • A module as used herein can be implemented using any mix of any portions of the system memory and any extent of hard-wired circuitry including hard-wired circuitry embodied as a processor 807. Some embodiments include one or more special-purpose hardware components (e.g., power control, logic, sensors, transducers, etc.). A module may include one or more state machines and/or combinational logic used to implement or facilitate the performance characteristics of low latency and low defect media file transcoding using optimized partitioning.
  • Various implementations of the database 832 comprise storage media organized to hold a series of records or files such that individual records or files are accessed using a name or key (e.g., a primary key or a combination of keys and/or query clauses). Such files or records can be organized into one or more data structures (e.g., data structures used to implement or facilitate aspects of low latency and low defect media file transcoding using optimized partitioning). Such files or records can be brought into and/or stored in volatile or non-volatile memory.
  • FIG. 8B depicts a block diagram of an instance of a cloud-based environment 8B00. Such a cloud-based environment supports access to workspaces through the execution of workspace access code (e.g., workspace access code 8531 and workspace access code 8532. Workspace access code can be executed on any of the shown user devices 852 (e.g., laptop device 8524, workstation device 8525, IP phone device 8523, tablet device 8522, smart phone device 8521, etc.). A group of users can form a collaborator group 858, and a collaborator group can be comprised of any types or roles of users. For example, and as shown, a collaborator group can comprise a user collaborator, an administrator collaborator, a creator collaborator, etc. Any user can use any one or more of the user devices, and such user devices can be operated concurrently to provide multiple concurrent sessions and/or other techniques to access workspaces through the workspace access code.
  • A portion of workspace access code can reside in and be executed on any user device. In addition, a portion of the workspace access code can reside in and be executed on any computing platform (e.g., computing platform 860), including in a middleware setting. As shown, a portion of the workspace access code (e.g., workspace access code 853 3) resides in and can be executed on one or more processing elements (e.g., processing element 862 1). The workspace access code can interface with storage devices such the shown networked storage 866. Storage of workspaces and/or any constituent files or objects, and/or any other code or scripts or data can be stored in any one or more storage partitions (e.g., storage partition 864 1). In some environments, a processing element includes forms of storage, such as RAM and/or ROM and/or FLASH, and/or other forms of volatile and non-volatile storage.
  • A stored workspace can be populated via an upload (e.g., an upload from a user device to a processing element over an upload network path 857). One or more constituents of a stored workspace can be delivered to a particular user and/or shared with other particular users via a download (e.g., a download from a processing element to a user device over a download network path 859).
  • In the foregoing specification, the disclosure has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the disclosure. The specification and drawings to be regarded in an illustrative sense rather than in a restrictive sense.

Claims (20)

What is claimed is:
1. A method comprising:
identifying a storage system where a first media file is stored in a backend file system; and
implementing a virtual file system to deliver the first media file to a user device from the backend file system of the storage system;
wherein the virtual file system forms a video prefetcher to fetch the first media file from the backend file system of the storage system, wherein the first media file is partitioned into two or more partitions separated by one or more partition boundaries and the one or more partition boundaries are at a determined key frame position, and where the virtual file system prefetches a partition of the first media file that are predicted to be accessed by a transcoder.
2. The method of claim 1, wherein the first media file corresponds to a first format to be converted to a second media file having a second format, the first media file is converted into the second format where the two or more partitions correspond to respective two or more converted partitions, and the respective two or more converted partitions are assembled to comprise the second media file.
3. The method of claim 1, wherein the determined key frame position is a closest key frame location to a respective one of the partition boundaries.
4. The method of claim 1, wherein the two or more partitions are characterized by a set of progressively increasing quality levels.
5. The method of claim 1, wherein a file listing is provided using the virtual file system so that custom code is not needed at the user device to interact with an API at the storage system.
6. The method of claim 1, wherein network load is reduced by prefetching the partition of the first media file so that data is not fetched every time the transcoder needs a new portion of the first media file.
7. The method of claim 1, wherein the virtual file system provides a cache for recently downloaded content.
8. A non-transitory computer readable medium, embodied in a non-transitory computer readable medium, the non-transitory computer readable medium having stored thereon a sequence of instructions which, when stored in memory and executed by a processor causes the processor to perform a set of acts, the acts comprising:
identifying a storage system where a first media file is stored in a backend file system; and
implementing a virtual file system to deliver the first media file to a user device from the backend file system of the storage system;
wherein the virtual file system forms a video prefetcher to fetch the first media file from the backend file system of the storage system, wherein the first media file is partitioned into two or more partitions separated by one or more partition boundaries and the one or more partition boundaries are at a determined key frame position, and where the virtual file system prefetches a partition of the first media file that are predicted to be accessed by a transcoder.
9. The non-transitory computer readable medium of claim 8, wherein the first media file corresponds to a first format to be converted to a second media file having a second format, the first media file is converted into the second format where the two or more partitions correspond to respective two or more converted partitions, and the respective two or more converted partitions are assembled to comprise the second media file.
10. The non-transitory computer readable medium of claim 8, wherein the determined key frame position is a closest key frame location to a respective one of the partition boundaries.
11. The non-transitory computer readable medium of claim 8, wherein the two or more partitions are characterized by a set of progressively increasing quality levels.
12. The non-transitory computer readable medium of claim 8, wherein a file listing is provided using the virtual file system so that custom code is not needed at the user device to interact with an API at the storage system.
13. The non-transitory computer readable medium of claim 8, wherein network load is reduced by prefetching the partition of the first media file so that data is not fetched every time the transcoder needs a new portion of the first media file.
14. The non-transitory computer readable medium of claim 8, wherein the virtual file system provides a cache for recently downloaded content.
15. A system comprising:
a storage medium having stored thereon a sequence of instructions; and
a processor or processors that execute the instructions to cause the processor or processors to perform a set of acts, the acts comprising identifying a storage system where a first media file is stored in a backend file system; and implementing a virtual file system to deliver the first media file to a user device from the backend file system of the storage system; wherein the virtual file system forms a video prefetcher to fetch the first media file from the backend file system of the storage system, wherein the first media file is partitioned into two or more partitions separated by one or more partition boundaries and the one or more partition boundaries are at a determined key frame position, and where the virtual file system prefetches a partition of the first media file that are predicted to be accessed by a transcoder.
16. The system of claim 15, wherein the first media file corresponds to a first format to be converted to a second media file having a second format, the first media file is converted into the second format where the two or more partitions correspond to respective two or more converted partitions, and the respective two or more converted partitions are assembled to comprise the second media file.
17. The system of claim 15, wherein the determined key frame position is a closest key frame location to a respective one of the partition boundaries.
18. The system of claim 15, wherein the two or more partitions are characterized by a set of progressively increasing quality levels.
19. The system of claim 15, wherein a file listing is provided using the virtual file system so that custom code is not needed at the user device to interact with an API at the storage system.
20. The system of claim 15, wherein network load is reduced by prefetching the partition of the first media file so that data is not fetched every time the transcoder needs a new portion of the first media file.
US18/320,907 2015-04-28 2023-05-19 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques Pending US20230289329A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/320,907 US20230289329A1 (en) 2015-04-28 2023-05-19 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562154022P 2015-04-28 2015-04-28
US201562154658P 2015-04-29 2015-04-29
US15/140,357 US20160323351A1 (en) 2015-04-29 2016-04-27 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques
US18/320,907 US20230289329A1 (en) 2015-04-28 2023-05-19 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/140,357 Continuation US20160323351A1 (en) 2015-04-28 2016-04-27 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques

Publications (1)

Publication Number Publication Date
US20230289329A1 true US20230289329A1 (en) 2023-09-14

Family

ID=57204093

Family Applications (14)

Application Number Title Priority Date Filing Date
US15/140,179 Active 2037-04-01 US10114835B2 (en) 2015-04-29 2016-04-27 Virtual file system for cloud-based shared content
US15/140,330 Active 2036-11-24 US10013431B2 (en) 2015-04-29 2016-04-27 Secure cloud-based shared content
US15/140,248 Active 2037-01-03 US10025796B2 (en) 2015-04-29 2016-04-27 Operation mapping in a virtual file system for cloud-based shared content
US15/140,310 Active 2037-01-14 US10180947B2 (en) 2015-04-29 2016-04-27 File-agnostic data downloading in a virtual file system for cloud-based shared content
US15/140,270 Active 2036-12-16 US10409781B2 (en) 2015-04-29 2016-04-27 Multi-regime caching in a virtual file system for cloud-based shared content
US15/140,292 Active US10929353B2 (en) 2015-04-29 2016-04-27 File tree streaming in a virtual file system for cloud-based shared content
US15/140,357 Abandoned US20160323351A1 (en) 2015-04-28 2016-04-27 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques
US16/024,748 Active US10402376B2 (en) 2015-04-29 2018-06-30 Secure cloud-based shared content
US16/036,735 Active 2037-03-10 US10866932B2 (en) 2015-04-29 2018-07-16 Operation mapping in a virtual file system for cloud-based shared content
US16/174,202 Active 2036-09-25 US10942899B2 (en) 2015-04-29 2018-10-29 Virtual file system for cloud-based shared content
US17/182,105 Pending US20210248113A1 (en) 2015-04-29 2021-02-22 File tree streaming in a virtual file system for cloud-based shared content
US17/195,596 Active US11663168B2 (en) 2015-04-29 2021-03-08 Virtual file system for cloud-based shared content
US18/320,907 Pending US20230289329A1 (en) 2015-04-28 2023-05-19 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques
US18/323,891 Pending US20230385246A1 (en) 2015-04-29 2023-05-25 Virtual file system for cloud-based shared content

Family Applications Before (12)

Application Number Title Priority Date Filing Date
US15/140,179 Active 2037-04-01 US10114835B2 (en) 2015-04-29 2016-04-27 Virtual file system for cloud-based shared content
US15/140,330 Active 2036-11-24 US10013431B2 (en) 2015-04-29 2016-04-27 Secure cloud-based shared content
US15/140,248 Active 2037-01-03 US10025796B2 (en) 2015-04-29 2016-04-27 Operation mapping in a virtual file system for cloud-based shared content
US15/140,310 Active 2037-01-14 US10180947B2 (en) 2015-04-29 2016-04-27 File-agnostic data downloading in a virtual file system for cloud-based shared content
US15/140,270 Active 2036-12-16 US10409781B2 (en) 2015-04-29 2016-04-27 Multi-regime caching in a virtual file system for cloud-based shared content
US15/140,292 Active US10929353B2 (en) 2015-04-29 2016-04-27 File tree streaming in a virtual file system for cloud-based shared content
US15/140,357 Abandoned US20160323351A1 (en) 2015-04-28 2016-04-27 Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques
US16/024,748 Active US10402376B2 (en) 2015-04-29 2018-06-30 Secure cloud-based shared content
US16/036,735 Active 2037-03-10 US10866932B2 (en) 2015-04-29 2018-07-16 Operation mapping in a virtual file system for cloud-based shared content
US16/174,202 Active 2036-09-25 US10942899B2 (en) 2015-04-29 2018-10-29 Virtual file system for cloud-based shared content
US17/182,105 Pending US20210248113A1 (en) 2015-04-29 2021-02-22 File tree streaming in a virtual file system for cloud-based shared content
US17/195,596 Active US11663168B2 (en) 2015-04-29 2021-03-08 Virtual file system for cloud-based shared content

Family Applications After (1)

Application Number Title Priority Date Filing Date
US18/323,891 Pending US20230385246A1 (en) 2015-04-29 2023-05-25 Virtual file system for cloud-based shared content

Country Status (1)

Country Link
US (14) US10114835B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230208900A1 (en) * 2015-05-14 2023-06-29 Bright Data Ltd. System and Method for Streaming Content from Multiple Servers
US11962636B2 (en) 2023-02-22 2024-04-16 Bright Data Ltd. System providing faster and more efficient data communication

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9246741B2 (en) * 2012-04-11 2016-01-26 Google Inc. Scalable, live transcoding with support for adaptive streaming and failover
US9633041B2 (en) * 2013-09-26 2017-04-25 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed file system network
CN117010021A (en) * 2013-11-06 2023-11-07 英特尔公司 Unifying interfaces for cloud content sharing services
US10366137B2 (en) * 2014-08-15 2019-07-30 Interdigital Patent Holdings, Inc. Methods and apparatus for content delivery via browser cache extension
US10101917B1 (en) * 2014-09-25 2018-10-16 EMC IP Holding Company LLC Evaluating and selecting data caching techniques
US10114835B2 (en) 2015-04-29 2018-10-30 Box, Inc. Virtual file system for cloud-based shared content
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
US9756143B2 (en) * 2015-09-09 2017-09-05 American Megatrends, Inc. System and method for improving virtual media redirection speed in baseboard management controller (BMC)
US10887371B2 (en) * 2015-09-14 2021-01-05 Google Llc Systems and methods for content storage and retrieval
US10733147B2 (en) * 2015-10-19 2020-08-04 Google Llc Distributed management of file modification-time field
US9860066B2 (en) * 2015-11-12 2018-01-02 International Business Machines Corporation Location control of cloud data stores
US11128717B2 (en) * 2015-11-19 2021-09-21 Microsoft Technology Licensing, Llc Private editing of shared files
US20170153951A1 (en) * 2015-11-30 2017-06-01 Microsoft Technology Licensing, Llc Incremental synchronous hierarchical system restoration
US10558736B2 (en) * 2016-02-04 2020-02-11 Sap Se Metadata driven user interface layout control for web applications
US9852361B1 (en) * 2016-02-11 2017-12-26 EMC IP Holding Company LLC Selective image backup using trained image classifier
GB201604070D0 (en) 2016-03-09 2016-04-20 Ibm On-premise and off-premise communication
US10193975B2 (en) * 2016-03-10 2019-01-29 Microsoft Technology Licensing, Llc Managing multiple cloud stores through a web service
CN107231566B (en) * 2016-03-25 2020-12-18 阿里巴巴集团控股有限公司 Video transcoding method, device and system
US10075518B2 (en) * 2016-04-06 2018-09-11 Box, Inc. Collaborator network creation using cloud-based metadata
US11100107B2 (en) 2016-05-16 2021-08-24 Carbonite, Inc. Systems and methods for secure file management via an aggregation of cloud storage services
US10404798B2 (en) * 2016-05-16 2019-09-03 Carbonite, Inc. Systems and methods for third-party policy-based file distribution in an aggregation of cloud storage services
US10356158B2 (en) * 2016-05-16 2019-07-16 Carbonite, Inc. Systems and methods for aggregation of cloud storage
US10116629B2 (en) 2016-05-16 2018-10-30 Carbonite, Inc. Systems and methods for obfuscation of data via an aggregation of cloud storage services
US10264072B2 (en) 2016-05-16 2019-04-16 Carbonite, Inc. Systems and methods for processing-based file distribution in an aggregation of cloud storage services
US10417237B2 (en) * 2016-05-24 2019-09-17 International Business Machines Corporation Sorting tables in analytical databases
US10402375B2 (en) * 2016-07-18 2019-09-03 Microsoft Technology Licensing, Llc Cloud content states framework
CN106250064B (en) * 2016-08-19 2020-05-12 深圳大普微电子科技有限公司 Solid state disk control device and solid state disk data access method based on learning
CA2977302C (en) * 2016-08-26 2019-10-01 Alexander Charles Marshall Dworkin Cloud collaboration and management application
US20180062867A1 (en) * 2016-08-29 2018-03-01 Microsoft Technology Licensing, Llc Launch and keep-alive mechanism for universal platform application
US10326835B1 (en) * 2016-09-12 2019-06-18 EMC IP Holding Company LLC Global data movement in cloud computing environment
US11005650B2 (en) 2016-10-19 2021-05-11 Stripe, Inc. Systems and methods for data management and the use of salts and keys in data encryption/decryption
US20180115556A1 (en) * 2016-10-25 2018-04-26 American Megatrends, Inc. Systems and Methods of Restricting File Access
US10594770B2 (en) * 2016-11-01 2020-03-17 International Business Machines Corporation On-premises and off-premises communication
US10929346B2 (en) 2016-11-14 2021-02-23 Tuxera, Inc. Systems and methods for storing large files using file allocation table based file systems
US10838913B2 (en) * 2016-11-14 2020-11-17 Tuxera, Inc. Systems and methods for storing large files using file allocation table based file systems
US11644992B2 (en) * 2016-11-23 2023-05-09 Samsung Electronics Co., Ltd. Storage system performing data deduplication, method of operating storage system, and method of operating data processing system
US10635639B2 (en) * 2016-11-30 2020-04-28 Nutanix, Inc. Managing deduplicated data
US10296614B2 (en) * 2016-12-07 2019-05-21 International Business Machines Corporation Bulk data insertion in analytical databases
CN110063089B (en) * 2016-12-07 2022-07-19 惠普发展公司,有限责任合伙企业 Computing system, method and storage medium for transmitting content
US10904329B1 (en) * 2016-12-30 2021-01-26 CSC Holdings, LLC Virtualized transcoder
US10701121B2 (en) * 2016-12-30 2020-06-30 Facebook, Inc. Live broadcast on an online social network
US11074112B2 (en) * 2017-01-13 2021-07-27 Microsoft Technology Licensing, Llc Maintaining the responsiveness of a user interface while performing a synchronous operation
KR20180087770A (en) * 2017-01-25 2018-08-02 삼성전자주식회사 Electronic device and data management method thereof
US11223528B2 (en) * 2017-01-27 2022-01-11 Box. Inc. Management of cloud-based shared content using predictive cost modeling
US10505730B2 (en) * 2017-02-06 2019-12-10 Red Hat, Inc. Secure data management
FR3063361B1 (en) 2017-02-24 2019-04-19 Moore METHOD, EQUIPMENT AND SYSTEM FOR MANAGING THE FILE SYSTEM
GB201703460D0 (en) * 2017-03-03 2017-04-19 Scirra Ltd Methods adn devices for testing appliances
KR102263357B1 (en) * 2017-04-19 2021-06-11 한국전자통신연구원 System for supporting user-level dma i/o in distributed filesystem environment and method for the same
US11061868B1 (en) * 2017-04-28 2021-07-13 EMC IP Holding Company LLC Persistent cache layer to tier data to cloud storage
CN107145588A (en) * 2017-05-11 2017-09-08 上海颐学网络科技有限公司 A kind of file arborescence automatically creates method and system
JP6797755B2 (en) * 2017-06-20 2020-12-09 キヤノン株式会社 Imaging device, processing method and program of imaging device
JP6731887B2 (en) * 2017-06-27 2020-07-29 Kddi株式会社 Maintenance system and maintenance method
CN107403105B (en) * 2017-06-30 2020-09-04 华为技术有限公司 Permission setting method and device for file system
US10528486B2 (en) * 2017-06-30 2020-01-07 Intel Corporation Techniques for crypto-aware cache partitioning
US11470131B2 (en) 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system
US10929210B2 (en) 2017-07-07 2021-02-23 Box, Inc. Collaboration system protocol processing
US11126718B2 (en) * 2017-07-12 2021-09-21 Acronis International Gmbh Method for decrypting data encrypted by ransomware
CN111133412A (en) 2017-07-25 2020-05-08 奥罗拉实验室有限公司 Software incremental update and anomaly detection for building vehicle ECU software based on tool chain
US11016894B2 (en) * 2017-08-07 2021-05-25 Intel Corporation Techniques to provide cache coherency based on cache type
JP6696942B2 (en) * 2017-08-14 2020-05-20 Kddi株式会社 Vehicle security system and vehicle security method
US20190069006A1 (en) * 2017-08-29 2019-02-28 Western Digital Technologies, Inc. Seeking in live-transcoded videos
US20190087440A1 (en) * 2017-09-15 2019-03-21 Hewlett Packard Enterprise Development Lp Hierarchical virtual file systems for accessing data sets
US11354252B2 (en) * 2017-09-28 2022-06-07 Oracle International Corporation On-demand cache management of derived cache
US10725970B2 (en) * 2017-10-05 2020-07-28 Spectra Logic Corporation Block storage device with optional deduplication
US11709753B2 (en) 2017-10-09 2023-07-25 Box, Inc. Presenting collaboration activities
US11030223B2 (en) 2017-10-09 2021-06-08 Box, Inc. Collaboration activity summaries
US11928083B2 (en) 2017-10-09 2024-03-12 Box, Inc. Determining collaboration recommendations from file path information
US11329817B2 (en) * 2017-10-19 2022-05-10 Devi Selva Kumar Vijayanarayanan Protecting data using controlled corruption in computer networks
US20190146758A1 (en) 2017-11-14 2019-05-16 Microsoft Technology Licensing, Llc Collaborative editing of source code with intelligent operations
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11588874B2 (en) * 2018-02-05 2023-02-21 Mcgraw Hill Llc Web-based content recording and adaptive streaming
US11321193B2 (en) 2018-04-13 2022-05-03 Rubrik, Inc. Database restoration across cloud environments
US11392553B1 (en) * 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
TW201947406A (en) * 2018-05-03 2019-12-16 華東科技股份有限公司 Data exchange group system and a method thereof
US10904325B2 (en) * 2018-05-04 2021-01-26 Citrix Systems, Inc. WebRTC API redirection with screen sharing
US11645237B2 (en) * 2018-05-10 2023-05-09 International Business Machines Corporation Replicating data utilizing a virtual file system and cloud storage
TW201947935A (en) * 2018-05-17 2019-12-16 晨星半導體股份有限公司 Image motion compensation device and method of the same
CN112236988B (en) * 2018-06-06 2022-05-31 华为云计算技术有限公司 System and method for controlling management operation and shared memory space of multi-tenant cache service in cloud computing
EP3579241A1 (en) * 2018-06-08 2019-12-11 Siemens Healthcare GmbH Method of managing medical records
CN108804709B (en) * 2018-06-22 2021-01-01 新华三云计算技术有限公司 Method and device for processing lock management message of shared file system and server
US11238013B2 (en) * 2018-06-27 2022-02-01 Intel Corporation Scalable access to shared files in a distributed system
US10423573B1 (en) * 2018-07-24 2019-09-24 Nasuni Corporation Cloud-native global file system with multi-site support using push classes
JP7134771B2 (en) * 2018-07-31 2022-09-12 ラピスセミコンダクタ株式会社 Communication system and program update method
US11036821B2 (en) * 2018-08-07 2021-06-15 Oracle International Corporation Ability to browse and randomly access a large hierarchy in near constant time in a stateless application
US10831489B2 (en) 2018-08-23 2020-11-10 International Business Machines Corporation Mechanism for completing atomic instructions in a microprocessor
US20200067975A1 (en) * 2018-08-27 2020-02-27 Box, Inc. Ransomware remediation in collaboration environments
US11163834B2 (en) * 2018-08-28 2021-11-02 Box, Inc. Filtering collaboration activity
CN109146189A (en) * 2018-08-30 2019-01-04 上海与德科技有限公司 Increase storing information processing method, electronic equipment and computer-readable deposits medium
US10732902B1 (en) * 2018-09-26 2020-08-04 Amazon Technologies, Inc. Using feedback for adaptive data compression
US11184423B2 (en) * 2018-10-24 2021-11-23 Microsoft Technology Licensing, Llc Offloading upload processing of a file in a distributed system using a key that includes a hash created using attribute(s) of a requestor and/or the file
US10809991B2 (en) * 2018-10-26 2020-10-20 Salesforce.Com, Inc. Security model for live applications in a cloud collaboration platform
CN109743307A (en) * 2018-12-28 2019-05-10 东莞见达信息技术有限公司 Method, server unit and the client terminal device of cloud data protection
CN109885786B (en) * 2019-01-23 2021-06-08 聚好看科技股份有限公司 Data caching processing method and device, electronic equipment and readable storage medium
US11113270B2 (en) 2019-01-24 2021-09-07 EMC IP Holding Company LLC Storing a non-ordered associative array of pairs using an append-only storage medium
US10795662B2 (en) * 2019-02-11 2020-10-06 Salesforce.Com, Inc. Scalable artifact distribution
US11347696B2 (en) * 2019-02-19 2022-05-31 Oracle International Corporation System for transition from a hierarchical file system to an object store
CN109981751B (en) * 2019-03-06 2022-06-17 珠海金山网络游戏科技有限公司 File transmission method and system, computer equipment and storage medium
US11256433B2 (en) * 2019-03-15 2022-02-22 Netapp, Inc. Aggregate inline deduplication with volume granular encryption
US11593538B2 (en) * 2019-04-02 2023-02-28 Accenture Global Solutions Limited Verification, modification, and/or validation of an infrastructure design document via improved collaboration between on site devices and remote devices
JP7269780B2 (en) * 2019-04-08 2023-05-09 株式会社日立製作所 Information processing device and data management method for information processing device
CN110401691B (en) * 2019-05-09 2021-11-16 腾讯科技(深圳)有限公司 Resource downloading control method, device and terminal
CN113243008A (en) * 2019-05-10 2021-08-10 华为技术有限公司 Distributed VFS with shared page cache
US11418560B1 (en) * 2019-06-27 2022-08-16 Cable Television Laboratories, Inc. Media and application aware network architecture
US11016697B2 (en) * 2019-07-02 2021-05-25 International Business Machines Corporation Prefetching data blocks from a primary storage to a secondary storage system while data is being synchronized between the primary storage and secondary storage
CN110377436B (en) * 2019-07-12 2021-04-27 清华大学 Data storage access method, equipment and device of persistent memory
US11243829B2 (en) * 2019-07-25 2022-02-08 EMC IP Holding Company LLC Metadata management in data storage systems
EP3805942A1 (en) * 2019-10-11 2021-04-14 Palantir Technologies Inc. Managing object data
US11169864B2 (en) * 2019-11-21 2021-11-09 Spillbox Inc. Systems, methods and computer program products for application environment synchronization between remote devices and on-premise devices
US11290531B2 (en) * 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11556395B2 (en) * 2020-01-24 2023-01-17 Microsoft Technology Licensing, Llc Data race detection with per-thread memory protection
US11290253B2 (en) * 2020-02-14 2022-03-29 Gideon Samid Document management cryptography
US11900347B2 (en) * 2020-03-27 2024-02-13 Hyland Software, Inc. Computing system for configurable off-chain storage for blockchains
US11798428B2 (en) * 2020-04-09 2023-10-24 Cognosco Media LLC System for asynchronously providing content from one or more authors for spaced repetition
US11947549B2 (en) 2020-04-10 2024-04-02 Dropbox, Inc. Generating modified view based on identified subset of content items and providing modified view to user associated with user account for display
CN113542337B (en) * 2020-04-30 2023-02-10 北京字节跳动网络技术有限公司 Information sharing method and device, electronic equipment and storage medium
US11599546B2 (en) * 2020-05-01 2023-03-07 EMC IP Holding Company LLC Stream browser for data streams
US11604759B2 (en) 2020-05-01 2023-03-14 EMC IP Holding Company LLC Retention management for data streams
US11340834B2 (en) 2020-05-22 2022-05-24 EMC IP Holding Company LLC Scaling of an ordered event stream
US11507538B1 (en) * 2020-06-26 2022-11-22 Amazon Technologies, Inc. Overlay file system for constrained environment
US11360992B2 (en) 2020-06-29 2022-06-14 EMC IP Holding Company LLC Watermarking of events of an ordered event stream
US11599420B2 (en) 2020-07-30 2023-03-07 EMC IP Holding Company LLC Ordered event stream event retention
US11340792B2 (en) 2020-07-30 2022-05-24 EMC IP Holding Company LLC Ordered event stream merging
US11645266B2 (en) * 2020-08-13 2023-05-09 Red Hat, Inc. Automated pinning of file system subtrees
US11354444B2 (en) 2020-09-30 2022-06-07 EMC IP Holding Company LLC Access control for an ordered event stream storage system
US11513871B2 (en) 2020-09-30 2022-11-29 EMC IP Holding Company LLC Employing triggered retention in an ordered event stream storage system
CN112883046A (en) * 2020-10-01 2021-06-01 曹春华 Collaborative business configuration method, system and collaborative platform based on electronic commerce collaboration
US11755555B2 (en) 2020-10-06 2023-09-12 EMC IP Holding Company LLC Storing an ordered associative array of pairs using an append-only storage medium
US11599293B2 (en) 2020-10-14 2023-03-07 EMC IP Holding Company LLC Consistent data stream replication and reconstruction in a streaming data storage platform
US11354054B2 (en) 2020-10-28 2022-06-07 EMC IP Holding Company LLC Compaction via an event reference in an ordered event stream storage system
US11652878B2 (en) * 2020-11-30 2023-05-16 Arm Limited Extended-reality system and method
US20220171744A1 (en) * 2020-12-01 2022-06-02 Sony Interactive Entertainment LLC Asset management between remote sites
US11347568B1 (en) 2020-12-18 2022-05-31 EMC IP Holding Company LLC Conditional appends in an ordered event stream storage system
US11816065B2 (en) 2021-01-11 2023-11-14 EMC IP Holding Company LLC Event level retention management for data streams
US11526297B2 (en) 2021-01-19 2022-12-13 EMC IP Holding Company LLC Framed event access in an ordered event stream storage system
US11637818B2 (en) * 2021-01-29 2023-04-25 Zoom Video Communications, Inc. Securely recording and retrieving encrypted video conferences
US11284165B1 (en) 2021-02-26 2022-03-22 CSC Holdings, LLC Copyright compliant trick playback modes in a service provider network
CN113162975B (en) * 2021-03-04 2023-04-14 西安电子科技大学 Shared mobile terminal file offline downloading system, method, storage medium and equipment
CN112860643B (en) * 2021-03-05 2022-07-08 中富通集团股份有限公司 Method for improving cache cleaning speed of 5G mobile terminal and storage device
US11740828B2 (en) 2021-04-06 2023-08-29 EMC IP Holding Company LLC Data expiration for stream storages
US11954537B2 (en) 2021-04-22 2024-04-09 EMC IP Holding Company LLC Information-unit based scaling of an ordered event stream
US11513714B2 (en) 2021-04-22 2022-11-29 EMC IP Holding Company LLC Migration of legacy data into an ordered event stream
US11645238B2 (en) * 2021-06-01 2023-05-09 International Business Machines Corporation Notifying a cache file system of changes to files in a source file system served from the cache file system
US11650957B2 (en) 2021-06-01 2023-05-16 International Business Machines Corporation Receiving at a cache node notification of changes to files in a source file system served from a cache file system at the cache node
US11681460B2 (en) 2021-06-03 2023-06-20 EMC IP Holding Company LLC Scaling of an ordered event stream based on a writer group characteristic
US11687492B2 (en) * 2021-06-21 2023-06-27 International Business Machines Corporation Selective data deduplication in a multitenant environment
US11735282B2 (en) 2021-07-22 2023-08-22 EMC IP Holding Company LLC Test data verification for an ordered event stream storage system
CN113423011B (en) * 2021-08-23 2021-11-16 南斗六星系统集成有限公司 Transcoding method for video file with any format
US11509946B1 (en) * 2021-11-08 2022-11-22 Pluto Inc. Methods and systems configured to manage video transcoder latencies
CN114020711B (en) * 2021-11-10 2022-11-01 重庆紫光华山智安科技有限公司 Storage space processing method and device, electronic equipment and readable storage medium
WO2023164616A1 (en) * 2022-02-25 2023-08-31 Visa International Service Association Privacy-preserving data deduplication
US20240004561A1 (en) * 2022-06-30 2024-01-04 Western Digital Technologies, Inc. Data Storage Device and Method for Adaptive Host Memory Buffer Allocation Based on Virtual Function Prioritization
CN116150093B (en) * 2023-03-04 2023-11-03 北京大道云行科技有限公司 Method for realizing object storage enumeration of objects and electronic equipment

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150039726A1 (en) * 2013-08-01 2015-02-05 Spotify Ab System and method for selecting a transition point for transitioning between media streams
US9307258B2 (en) * 2012-10-30 2016-04-05 Broadcom Corporation Parallel transcoding
US20160134673A1 (en) * 2014-11-10 2016-05-12 Broadcom Corporation Adaptive streaming with early client indication
US9621613B1 (en) * 2013-11-05 2017-04-11 Visualon, Inc. Bitrate adaptation transitioning using key frames
US10044466B2 (en) * 2015-01-08 2018-08-07 Arris Enterprises Llc Server-side adaptive bit rate control for DLNA HTTP streaming clients
US10097607B2 (en) * 2008-12-22 2018-10-09 Netflix, Inc. Bit rate stream switching
US10180947B2 (en) * 2015-04-29 2019-01-15 Box, Inc. File-agnostic data downloading in a virtual file system for cloud-based shared content
US10469554B2 (en) * 2004-04-30 2019-11-05 DISH Technologies L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US11184652B2 (en) * 2017-09-08 2021-11-23 Opentv, Inc. Bitrate and pipeline preservation for content presentation
US11470131B2 (en) * 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system

Family Cites Families (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US5522025A (en) 1993-10-25 1996-05-28 Taligent, Inc. Object-oriented window area display system
CA2483488A1 (en) 1997-02-19 1998-08-19 Gallium Software Inc. User interface and method for maximizing the information presented on a screen
US7281168B1 (en) 2000-03-03 2007-10-09 Intel Corporation Failover architecture for local devices that access remote storage
US7047309B2 (en) 2000-08-23 2006-05-16 International Business Machines Corporation Load balancing and dynamic control of multiple data streams in a network
US7404000B2 (en) 2001-09-28 2008-07-22 Emc Corporation Protocol translation in a storage system
US7260764B2 (en) * 2002-11-26 2007-08-21 Qualcomm Incorporated Multi-channel transmission and reception with block coding in a communication system
US20040107319A1 (en) 2002-12-03 2004-06-03 D'orto David M. Cache management system and method
WO2005103929A1 (en) 2004-04-20 2005-11-03 Pluck Corporation Method, system, and computer program product for sharing information within a global computer network
US20140149783A1 (en) 2004-06-01 2014-05-29 Ivan I. Georgiev Methods and apparatus facilitating access to storage among multiple computers
WO2006014573A2 (en) 2004-07-07 2006-02-09 Yotta Yotta, Inc. Systems and methods for providing distributed cache coherence
US20060059509A1 (en) * 2004-09-13 2006-03-16 Huang Jau H System and method for embedding commercial information in a video bitstream
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
CA2624671C (en) 2005-09-30 2012-01-03 Research In Motion Limited Methods and apparatus for dynamically adjusting a data packet window size for data packet transmission in a wireless communication network
US20070250476A1 (en) * 2006-04-21 2007-10-25 Lockheed Martin Corporation Approximate nearest neighbor search in metric space
US20100211690A1 (en) 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9432433B2 (en) * 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9210085B2 (en) 2006-10-05 2015-12-08 Bittorrent, Inc. Peer-to-peer streaming of non-live content
US20080098237A1 (en) 2006-10-20 2008-04-24 Dung Trung T Secure e-mail services system and methods implementing inversion of security control
US8520850B2 (en) * 2006-10-20 2013-08-27 Time Warner Cable Enterprises Llc Downloadable security and protection methods and apparatus
US8533310B2 (en) * 2007-03-09 2013-09-10 Riverbed Technology, Inc. Method and apparatus for acceleration by prefetching associated objects
JP4917148B2 (en) * 2007-03-19 2012-04-18 富士通株式会社 Bitstream conversion method, bitstream conversion apparatus, bitstream combination apparatus, bitstream division program, bitstream conversion program, and bitstream combination program
US7900203B2 (en) * 2007-04-24 2011-03-01 Microsoft Corporation Data sharing and synchronization with relay endpoint and sync data element
US9426522B2 (en) 2007-07-10 2016-08-23 Qualcomm Incorporated Early rendering for fast channel switching
EP2323320B1 (en) 2008-09-05 2013-04-17 Murata Machinery, Ltd. Relay server, relay communication system and communication apparatus
US9473812B2 (en) * 2008-09-10 2016-10-18 Imagine Communications Corp. System and method for delivering content
US8634456B2 (en) 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US8972515B2 (en) 2009-03-30 2015-03-03 The Boeing Company Computer architectures using shared storage
GB2469468B (en) 2009-04-14 2015-01-21 Skype Method and system for data transmission
US9087066B2 (en) 2009-04-24 2015-07-21 Swish Data Corporation Virtual disk from network shares and file servers
US8284699B1 (en) 2009-04-30 2012-10-09 Palo Alto Networks, Inc. Managing network devices
US20100333116A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US8180801B2 (en) * 2009-07-16 2012-05-15 Sap Ag Unified window support for event stream data management
US8489654B2 (en) 2009-08-28 2013-07-16 Beijing Innovation Works Technology Company Limited Method and system for forming a virtual file system at a computing device
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8392838B2 (en) 2010-01-27 2013-03-05 Vmware, Inc. Accessing virtual disk content of a virtual machine using a control virtual machine
US20110194613A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks
US8527549B2 (en) 2010-02-22 2013-09-03 Sookasa Inc. Cloud based operating and virtual file system
EP2375680A1 (en) * 2010-04-01 2011-10-12 Thomson Licensing A method for recovering content streamed into chunk
US8954596B2 (en) * 2010-04-02 2015-02-10 Netflix, Inc. Dynamic virtual chunking of streaming media content
US8423606B1 (en) 2010-04-27 2013-04-16 Adobe Systems Incorporated Data framing
US9811532B2 (en) 2010-05-03 2017-11-07 Panzura, Inc. Executing a cloud command for a distributed filesystem
US9852150B2 (en) * 2010-05-03 2017-12-26 Panzura, Inc. Avoiding client timeouts in a distributed filesystem
WO2011148496A1 (en) 2010-05-27 2011-12-01 株式会社日立製作所 Local file server operative to transfer file to remote file server via communication network, and storage system including those file servers
US20110320733A1 (en) 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
US8705616B2 (en) * 2010-06-11 2014-04-22 Microsoft Corporation Parallel multiple bitrate video encoding to reduce latency and dependences between groups of pictures
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US8799231B2 (en) * 2010-08-30 2014-08-05 Nasuni Corporation Versioned file system with fast restore
US8661063B2 (en) 2010-10-12 2014-02-25 Nasuni Corporation Versioned file system with sharing
US9185468B2 (en) 2010-12-20 2015-11-10 Google Technology Holdings LLC MP4 container file formats and methods of processing MP4 container files
US8510460B2 (en) * 2011-04-29 2013-08-13 Cbs Interactive Inc. Reduced video player start-up latency in HTTP live streaming and similar protocols
US9253166B2 (en) 2011-05-14 2016-02-02 Bitcasa, Inc. Cloud file system
US8549167B2 (en) 2011-06-21 2013-10-01 Net Power And Light, Inc. Just-in-time transcoding of application content
EP2547062B1 (en) * 2011-07-14 2016-03-16 Nxp B.V. Media streaming with adaptation
AU2012290042A1 (en) 2011-08-02 2014-02-20 Ajay JADHAV Cloud-based distributed persistence and cache data model
US10063430B2 (en) 2011-09-09 2018-08-28 Cloudon Ltd. Systems and methods for workspace interaction with cloud-based applications
US9432704B2 (en) 2011-11-06 2016-08-30 Akamai Technologies Inc. Segmented parallel encoding with frame-aware, variable-size chunking
US9805054B2 (en) 2011-11-14 2017-10-31 Panzura, Inc. Managing a global namespace for a distributed filesystem
US20130223509A1 (en) 2012-02-28 2013-08-29 Azuki Systems, Inc. Content network optimization utilizing source media characteristics
US9392304B2 (en) 2012-02-29 2016-07-12 Hulu, LLC Encoding optimization using quality level of encoded segments
US20130238785A1 (en) 2012-03-06 2013-09-12 Rackspace Us, Inc. System and Method for Metadata Discovery and Metadata-Aware Scheduling
US8752112B2 (en) * 2012-04-12 2014-06-10 Google Inc. Live streaming video processing
US8880638B2 (en) 2012-06-18 2014-11-04 International Business Machines Corporation Distributed image cache for servicing virtual resource requests in the cloud
US9021437B2 (en) * 2012-07-13 2015-04-28 Microsoft Technology Licensing, Llc Declarative style rules for default touch behaviors
US9053340B2 (en) 2012-10-12 2015-06-09 Citrix Systems, Inc. Enterprise application store for an orchestration framework for connected devices
US9015212B2 (en) 2012-10-16 2015-04-21 Rackspace Us, Inc. System and method for exposing cloud stored data to a content delivery network
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9628268B2 (en) 2012-10-17 2017-04-18 Box, Inc. Remote key management in a cloud-based environment
US9734548B2 (en) 2012-10-26 2017-08-15 Nvidia Corporation Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
US9015470B2 (en) 2012-11-08 2015-04-21 Morega Systems, Inc Adaptive video server with fast initialization and methods for use therewith
US20140140417A1 (en) 2012-11-16 2014-05-22 Gary K. Shaffer System and method for providing alignment of multiple transcoders for adaptive bitrate streaming in a network environment
US9692632B2 (en) 2012-11-29 2017-06-27 International Business Machines Corporation Migration to managed clouds
US9292330B2 (en) 2012-11-29 2016-03-22 International Business Machines Corporation Replacing virtual machine disks
US9635334B2 (en) 2012-12-03 2017-04-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Audio and video management for parallel transcoding
KR101431912B1 (en) 2012-12-10 2014-09-23 포항공과대학교 산학협력단 Virtual File System integrating multiple Cloud Storage Services
US9319678B2 (en) 2012-12-20 2016-04-19 Hulu, LLC Keyframe alignment for encoding video at multiple bitrates
US8826332B2 (en) 2012-12-21 2014-09-02 Ustudio, Inc. Media distribution and management platform
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
US9544348B2 (en) 2013-01-04 2017-01-10 Google Inc. Cloud-based rendering
US9262435B2 (en) 2013-01-11 2016-02-16 Commvault Systems, Inc. Location-based data synchronization management
US9357248B2 (en) 2013-03-13 2016-05-31 Arris Enterprises, Inc. Method and apparatus for adaptive bit rate content delivery
US9900629B2 (en) 2013-03-13 2018-02-20 Apple Inc. Codec techniques for fast switching with intermediate sequence
CA2903319A1 (en) 2013-03-14 2014-09-18 Arris Technology, Inc. Devices, systems, and methods for converting or translating dynamic adaptive streaming over http (dash) to http live streaming (hls)
WO2014145011A2 (en) 2013-03-15 2014-09-18 General Instrument Corporation Method and apparatus for streaming video
US9294530B2 (en) 2013-05-24 2016-03-22 Cisco Technology, Inc. Producing equivalent content across encapsulators in a network environment
US20140359465A1 (en) 2013-05-31 2014-12-04 Nubo Software Ltd. Method and Apparatus for Annotated Electronic File Sharing
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
WO2015005750A1 (en) * 2013-07-12 2015-01-15 삼성전자 주식회사 Video encoding method and apparatus therefor using modification vector inducement, video decoding method and apparatus therefor
EP3033887A1 (en) 2013-08-16 2016-06-22 Bitmovin GmbH Apparatus and method for constant quality optimization for adaptive streaming
CN104426955B (en) 2013-08-28 2018-05-04 北大方正集团有限公司 The processing method and cloud storage service device of shared file
EP3039636A4 (en) * 2013-08-29 2017-03-22 F5 Networks, Inc Generating frame chunking for video fast starts
US9418703B2 (en) * 2013-10-09 2016-08-16 Mindset Systems Incorporated Method of and system for automatic compilation of crowdsourced digital media productions
DE102013017031A1 (en) * 2013-10-10 2015-04-16 Bernd Korz Method for playing and separately storing audio and video tracks on the Internet
US9444695B2 (en) 2014-01-30 2016-09-13 Xerox Corporation Methods and systems for scheduling a task
US20150227600A1 (en) 2014-02-13 2015-08-13 Actifio, Inc. Virtual data backup
US9535723B2 (en) 2014-02-21 2017-01-03 International Business Machines Corporation Methods and apparatuses for generating desktop cloud instances based upon mobile device user file selections
US9288510B1 (en) * 2014-05-22 2016-03-15 Google Inc. Adaptive video transcoding based on parallel chunked log analysis
US10965608B2 (en) 2014-06-24 2021-03-30 Keepsayk LLC Mobile supercloud computing system and method
US9940241B1 (en) 2014-07-03 2018-04-10 Sanmina Corporation Network system with cache offload service for flash storage
US9571463B2 (en) * 2014-07-14 2017-02-14 Raytheon Bbn Technologies Corp. Policy-based access control in content networks
US9715428B1 (en) 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
US10747730B2 (en) * 2014-10-10 2020-08-18 Sap Se Providing extended file storage for applications
MX2017005085A (en) 2014-10-22 2018-01-30 Arris Entpr Llc Adaptive bitrate streaming latency reduction.
US10063872B2 (en) * 2015-09-11 2018-08-28 Facebook, Inc. Segment based encoding of video
US9973564B2 (en) 2015-10-30 2018-05-15 Hewlett Packard Enterprise Development Lp Determining variable chunk size for transfer of a file
US9992174B2 (en) 2015-11-11 2018-06-05 Box, Inc. Detecting disclosed content sources using dynamic steganography
US9860066B2 (en) 2015-11-12 2018-01-02 International Business Machines Corporation Location control of cloud data stores
US9852361B1 (en) 2016-02-11 2017-12-26 EMC IP Holding Company LLC Selective image backup using trained image classifier
US10567775B2 (en) * 2016-10-01 2020-02-18 Intel Corporation Method and system of hardware accelerated video coding with per-frame parameter control

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469554B2 (en) * 2004-04-30 2019-11-05 DISH Technologies L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US10097607B2 (en) * 2008-12-22 2018-10-09 Netflix, Inc. Bit rate stream switching
US9307258B2 (en) * 2012-10-30 2016-04-05 Broadcom Corporation Parallel transcoding
US20150039726A1 (en) * 2013-08-01 2015-02-05 Spotify Ab System and method for selecting a transition point for transitioning between media streams
US9621613B1 (en) * 2013-11-05 2017-04-11 Visualon, Inc. Bitrate adaptation transitioning using key frames
US20160134673A1 (en) * 2014-11-10 2016-05-12 Broadcom Corporation Adaptive streaming with early client indication
US10044466B2 (en) * 2015-01-08 2018-08-07 Arris Enterprises Llc Server-side adaptive bit rate control for DLNA HTTP streaming clients
US10180947B2 (en) * 2015-04-29 2019-01-15 Box, Inc. File-agnostic data downloading in a virtual file system for cloud-based shared content
US10929353B2 (en) * 2015-04-29 2021-02-23 Box, Inc. File tree streaming in a virtual file system for cloud-based shared content
US11470131B2 (en) * 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system
US11184652B2 (en) * 2017-09-08 2021-11-23 Opentv, Inc. Bitrate and pipeline preservation for content presentation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230208900A1 (en) * 2015-05-14 2023-06-29 Bright Data Ltd. System and Method for Streaming Content from Multiple Servers
US11962636B2 (en) 2023-02-22 2024-04-16 Bright Data Ltd. System providing faster and more efficient data communication

Also Published As

Publication number Publication date
US10929353B2 (en) 2021-02-23
US20190065525A1 (en) 2019-02-28
US10114835B2 (en) 2018-10-30
US10409781B2 (en) 2019-09-10
US10866932B2 (en) 2020-12-15
US20160321288A1 (en) 2016-11-03
US10180947B2 (en) 2019-01-15
US20210263894A1 (en) 2021-08-26
US20160321291A1 (en) 2016-11-03
US10942899B2 (en) 2021-03-09
US20160321290A1 (en) 2016-11-03
US10025796B2 (en) 2018-07-17
US20230385246A1 (en) 2023-11-30
US20160323358A1 (en) 2016-11-03
US20180307704A1 (en) 2018-10-25
US20210248113A1 (en) 2021-08-12
US10013431B2 (en) 2018-07-03
US20190042593A1 (en) 2019-02-07
US11663168B2 (en) 2023-05-30
US20160323351A1 (en) 2016-11-03
US10402376B2 (en) 2019-09-03
US20160321311A1 (en) 2016-11-03
US20160321287A1 (en) 2016-11-03

Similar Documents

Publication Publication Date Title
US20230289329A1 (en) Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques
US10511646B2 (en) System and method for delivering content
US8769139B2 (en) Efficient streaming server
US10911512B2 (en) Personalized content streams using aligned encoded content segments
US9426543B1 (en) Server-based video stitching
CN106464945B (en) Method, system and the computer-readable medium of enhanced stream media playback
JP5745462B2 (en) Method and program for supplying media content and server apparatus
US20110191446A1 (en) Storing and streaming media content
US9544344B2 (en) Method and apparatus for streaming media content to client devices
US10904642B2 (en) Methods and apparatus for updating media presentation data
US8863182B1 (en) In-stream video stitching
US20150172353A1 (en) Method and apparatus for interacting with a media presentation description that describes a summary media presentation and an original media presentation
US20170123713A1 (en) Device and process for data storage and read/write efficiency
BR112012006374B1 (en) IMPROVED BLOCK REQUEST STREAMING SYSTEM USING SIGNALING OR BLOCK CREATION
CN113330751B (en) Method and apparatus for storage and signaling of media segment size and priority ranking
US11825146B2 (en) System and method for storing multimedia files using an archive file format
KR20220133939A (en) Identification of elements in a group for dynamic element replacement
JP7246508B2 (en) Method and apparatus for dynamically adaptive streaming over HTTP
US9226034B1 (en) Apparatus and methods for generating clips using recipes with slice definitions
US20150195599A1 (en) Methods for synchronization of a live streaming broadcast and systems using the same
US10708336B2 (en) System and method for announcing media changes
JP7282981B2 (en) METHOD AND SYSTEM FOR PLAYING STREAMING CONTENT USING LOCAL STREAMING SERVER
US9229944B2 (en) Scalable networked digital video recordings via shard-based architecture
US20150088943A1 (en) Media-Aware File System and Method

Legal Events

Date Code Title Description
AS Assignment

Owner name: BOX, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LUTHRA, TANOOJ;MALHOTRA, RITIK;HUH, BRYAN;SIGNING DATES FROM 20160426 TO 20160427;REEL/FRAME:063709/0805

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS