WO2021100046A1 - System and method for data stream synchronization - Google Patents

System and method for data stream synchronization Download PDF

Info

Publication number
WO2021100046A1
WO2021100046A1 PCT/IL2020/051201 IL2020051201W WO2021100046A1 WO 2021100046 A1 WO2021100046 A1 WO 2021100046A1 IL 2020051201 W IL2020051201 W IL 2020051201W WO 2021100046 A1 WO2021100046 A1 WO 2021100046A1
Authority
WO
WIPO (PCT)
Prior art keywords
video stream
time
master
scene
cuts
Prior art date
Application number
PCT/IL2020/051201
Other languages
French (fr)
Inventor
Amos Bercovich
Original Assignee
W.S.C. Sports Technologies Ltd.
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 W.S.C. Sports Technologies Ltd. filed Critical W.S.C. Sports Technologies Ltd.
Priority to IL293175A priority Critical patent/IL293175A/en
Priority to CN202080094361.0A priority patent/CN115244939B/en
Priority to EP20890225.4A priority patent/EP4062647A4/en
Priority to AU2020385717A priority patent/AU2020385717A1/en
Publication of WO2021100046A1 publication Critical patent/WO2021100046A1/en

Links

Classifications

    • 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/1066Session management
    • H04L65/1083In-session procedures
    • 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/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21805Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/242Synchronization processes, e.g. processing of PCR [Program Clock References]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Definitions

  • the present invention relates to media systems. More particularly, the present invention relates to systems and methods for synchronizing data streams in media systems.
  • Many entertainment systems can provide real time content to users all over the world, for instance media systems providing content (e.g., sport events or music concerts) over the internet, or via a satellite broadcast.
  • content e.g., sport events or music concerts
  • Media content is usually provided and/or broadcasted in multiple streams, such as video streams or audio streams, to different locations and might sometimes be unsynchronized due to technological constraints of broadcasting equipment or of decoders and/or due to network architecture.
  • a user that views a basketball game in Spain e.g., via online streaming over the internet
  • Some entertainment providers that want to provide additional information on the broadcasted content usually use manual tagging on predefined events in the media stream. For example, certain actions in the video stream of a music concert can be manually tagged or labeled (e.g., as a song title or a guitar solo by particular band member), such that the viewer sees the labels displayed in real time for each new scene or action.
  • each media stream is separately manually labelled, by identifying different events in the stream.
  • Such manual labeling can be time consuming and not always accurate due to human error. It is therefore desired to have a way to automatically label events in various media streams.
  • a method of synchronizing multiple media streams including: identifying a time stamp for a plurality of cuts in a master stream; identifying a corresponding time stamp for each of a plurality of corresponding cuts in at least one secondary stream; determining a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream; determining at least a second set of time differences between the identified corresponding time stamps of each pair of corresponding consecutive cuts in the at least one secondary stream; calculating at least one time offset between the master stream and the at least one secondary stream for each pair of consecutive cuts in the master stream; and synchronizing the master stream and the secondary stream based on the at least one time offset.
  • At least one scene in the master stream may correspond to at least one scene in the at least one secondary stream. This correspondence may be determined based on the determined first set of time differences and the at least second set of time differences.
  • the calculation of the at least one time offset between the master stream and the at least one secondary stream may include, for each of the at least one scene in the master stream, calculating a time offset between a start and/or end time of the at least one scene in the master stream and a start and/or end time of the at least one corresponding scene in the at least one secondary stream.
  • the at least one scene may be labeled in the master stream corresponding to at least one cut, and at least one scene may be labeled in the at least one secondary stream based on the calculated at least one time offset and the labeling of the master stream.
  • the at least one cut may be a cut immediately before the start of the at least one scene or immediately after the end of the at least one scene
  • labeling of the at least one scene in the at least one secondary stream may be based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream.
  • the master stream may be automatically selected from the multiple media streams.
  • a histogram may be calculated for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master stream.
  • each media stream may include a plurality of media chunks, and the cuts may be determined for each such media chunk.
  • a minimum absolute error (MAE) may be calculated for at least one of the master stream and the secondary stream, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
  • a system for media stream synchronization including a processor and a database, coupled to the processor and including a master stream and at least one secondary stream of a media stream, wherein the processor may be configured to: identify a time stamp for each of a plurality of cuts in the master stream, identify a corresponding time stamp for each of a plurality of corresponding cuts in the at least one secondary stream, determine a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream; determine at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary stream, calculate at least one time offset between the master stream and at least one secondary stream for each pair of consecutive cuts in the master stream, and synchronize the master stream and the secondary stream based on the at least one time offset.
  • the processor may be configured to label at least one scene in the master stream corresponding to at least one cut, and label at least one scene in the at least one secondary stream based on the calculated at least one time offset. In some embodiments, labeling of the at least one scene in the at least one secondary stream may be based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream.
  • each media stream may include a plurality of media chunks, and wherein the cuts are determined for each such media chunk.
  • the processor may be configured to automatically select the master stream from the multiple media streams.
  • processor may be configured to calculate a histogram for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master stream.
  • processor may be configured to calculate a minimum absolute error (MAE) for at least one of the master stream and the secondary stream, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
  • MAE minimum absolute error
  • a method of synchronizing multiple media streams with a received master media stream wherein the received master stream includes a time stamp for a plurality of cuts in the master stream, including identifying a corresponding time stamp for each of a plurality of corresponding cuts in at least one secondary stream; determining a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream; determining at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary stream; calculating at least one time offset between the master stream and at least one secondary stream for each determined time difference between each pair of consecutive cuts in the master stream; and synchronizing the master stream and the secondary stream based on the at least one time offset.
  • At least one scene in the master stream may be labeled corresponding to at least one cut, and at least one scene in the at least one secondary stream may be labeled based on the calculated at least one time offset and the labeling of the master stream.
  • labeling of the at least one scene in the at least one secondary stream may be based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream.
  • a histogram may be calculated for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master stream.
  • each media stream may include a plurality of media chunks, and wherein the cuts are determined for each such media chunk.
  • a minimum absolute error (MAE) may be calculated for at least one of the master stream and the secondary stream, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
  • FIG. 1 shows a block diagram of an exemplary computing device, according to some embodiments of the invention
  • Fig. 2 shows a block diagram of a data synchronization system, according to some embodiments of the invention
  • FIG. 3 schematically illustrates labeling of unsynchronized media streams, according to some embodiments of the invention.
  • FIGs. 4A-4B show a flow chart for a method of synchronizing multiple media streams, according to some embodiments of the invention.
  • the terms “plurality” and “a plurality” as used herein may include, for example, “multiple” or “two or more”.
  • the terms “plurality” or “a plurality” may be used throughout the specification to describe two or more components, devices, elements, units, parameters, or the like.
  • the term set when used herein may include one or more items.
  • the method embodiments described herein are not constrained to a particular order or sequence. Additionally, some of the described method embodiments or elements thereof can occur or be performed simultaneously, at the same point in time, or concurrently.
  • Fig. 1 is a schematic block diagram of an example computing device 100, according to some embodiments of the invention.
  • Computing device 100 may include a controller or processor 105 (e.g., a central processing unit processor (CPU), a chip or any suitable computing or computational device), an operating system 115, memory 120, executable code 125, storage 130, input devices 135 (e.g. a keyboard or touchscreen), and output devices 140 (e.g., a display), a communication unit 145 (e.g., a cellular transmitter or modem, a Wi-Fi communication unit, or the like) for communicating with remote devices via a communication network, such as, for example, the Internet.
  • Controller 105 may be configured to execute program code to perform operations described herein.
  • Embodiments of the invention described herein may include one or more computing device 100, for example, to act as the various devices or the components in system 200 shown in Fig. 2.
  • system 200 may be, or may include computing device 100 or components thereof.
  • Operating system 115 may be or may include any code segment (e.g., one similar to executable code 125 described herein) designed and/or configured to perform tasks involving coordinating, scheduling, arbitrating, supervising, controlling or otherwise managing operation of computing device 100, for example, scheduling execution of software programs or enabling software programs or other modules or units to communicate.
  • code segment e.g., one similar to executable code 125 described herein
  • Memory 120 may be or may include, for example, a Random Access Memory (RAM), a read only memory (ROM), a Dynamic RAM (DRAM), a Synchronous DRAM (SD-RAM), a double data rate (DDR) memory chip, a Flash memory, a volatile memory, a non-volatile memory, a cache memory, a buffer, a short term memory unit, a long term memory unit, or other suitable memory units or storage units.
  • Memory 120 may be or may include a plurality of possibly different memory units.
  • Memory 120 may be a computer or processor non-transitory readable medium, or a computer non-transitory storage medium, e.g., a RAM.
  • Executable code 125 may be any executable code, e.g., an application, a program, a process, task or script. Executable code 125 may be executed by controller 105 possibly under control of operating system 115.
  • executable code 125 may be a software application that performs synchronization of multiple media stream, identification of a time stamp, determination of time differences, calculation of time offsets, etc. as further described herein.
  • a single item of executable code 125 is shown in Fig. 1, a embodiments of the invention may include a plurality of executable code segments similar to executable code 125 that may be stored into memory 120 and cause controller 105 to carry out methods described herein.
  • Storage 130 may be or may include, for example, a hard disk drive, a universal serial bus (USB) device or other suitable removable and/or fixed storage unit. Data, such as time stamps or labels, may be stored in storage 130 and may be loaded from storage 130 into memory 120 where it may be processed by controller 105. In some embodiments, some of the components shown in Fig. 1 may be omitted.
  • memory 120 may be a non-volatile memory having the storage capacity of storage 130. Accordingly, although shown as a separate component, storage 130 may be embedded or included in memory 120.
  • Input devices 135 may be or may include a keyboard, a touch screen or pad, one or more sensors or any other or additional suitable input device. Any suitable number of input devices 135 may be operatively connected to computing device 100.
  • Output devices 140 may include one or more displays or monitors and/or any other suitable output devices. Any suitable number of output devices 140 may be operatively connected to computing device 100.
  • Any applicable input/output (I/O) devices may be connected to computing device 100 as shown by blocks 135 and 140.
  • NIC network interface card
  • USB universal serial bus
  • external hard drive may be included in input devices 135 and/or output devices 140.
  • Embodiments of the invention may include an article, such as a computer or processor non-transitory readable medium, or a computer or processor non-transitory storage medium, such as, for example, a memory, a disk drive, or a USB flash memory, encoding, including or storing instructions, e.g., computer-executable instmctions, which, when executed by a processor or controller, carry out methods disclosed herein.
  • an article may include a storage medium, such as memory 120, computer-executable instmctions, such as executable code 125, and a controller, such as controller 105.
  • Such a non-transitory computer readable medium may be, for example, a memory, a disk drive, or a USB flash memory, encoding, including or storing instmctions, e.g., computer-executable instmctions, which when executed by a processor or controller, carry out methods disclosed herein.
  • the storage medium may include, but is not limited to, any type of disk including, semiconductor devices, such as read only memories (ROMs) and/or random access memories (RAMs), flash memories, electrically erasable programmable read-only memories (EEPROMs) or any type of media suitable for storing electronic instmctions, including programmable storage devices.
  • ROMs read only memories
  • RAMs random access memories
  • EEPROMs electrically erasable programmable read-only memories
  • memory 120 may be a non-transitory machine-readable medium.
  • Embodiments of the invention may include components, such as, but not limited to, a plurality of central processing units (CPU) or any other suitable multi-purpose or specific processors or controllers (e.g., controller 105 of Fig. 1), a plurality of input units, a plurality of output units, a plurality of memory units, and a plurality of storage units.
  • Embodiments of the invention may additionally include other suitable hardware components and/or software components.
  • Some embodiments of the invention may include or may be, for example, a personal computer, a desktop computer, a laptop computer, a workstation, a server computer, a network device, or any other suitable computing device.
  • embodiments of the invention may include one or more facility computing device (e.g., computing device 100 of Fig. 1) and one or more remote server computers in active communication with the one or more facility computing device, and in active communication with one or more portable or mobile devices such as smartphones, tablets and the like.
  • one or more facility computing device e.g., computing device 100 of Fig. 1
  • one or more remote server computers in active communication with the one or more facility computing device, and in active communication with one or more portable or mobile devices such as smartphones, tablets and the like.
  • FIG. 2 shows a block diagram of a data synchronization system 200, according to some embodiments of the invention.
  • the direction of arrows may indicate the direction of information flow.
  • Data synchronization system 200 may include at least one processor 201 (such as controller 105, shown in Fig. 1) and at least one database 202 (e.g., located on memory 120 or storage system 130 of Fig. 1) coupled thereto.
  • the at least one processor 201 may receive data, for instance media streams 20, from an external source 210 via a server 203, and the received data may be stored on the at least one database 202, by processor 201.
  • server 203 may be connected to an entertainment system 210 (e.g., for internet or TV broadcasting), such that server 203 may forward video streams 20 to the processor 201 for analysis (e.g., to determine time stamps in a video stream), modification, and/or synchronization of labeling of events in media streams 20 (e.g., identify a label for a scene having different timing).
  • media streams as used hereinafter may refer to any data including one or more of: images, text, audio, video, and/or the like, to be synchronized by data synchronization system 200.
  • the cut detection may be applied by the at least one processor 201 when silence and/or high voice are identified, and, for text, the cut detection may be applied by the at least one processor 201 based on timing between passages.
  • the media streams 20 may include the same media content; however, the same media content in different media streams may be unsynchronized due to, for example, technological constraints of broadcasting equipment of the external source 210. For example, some technological constraints may include different broadcasting equipment in different regions causing different timing of the broadcast, such as older equipment in some regions that is uncapable of handling the same broadcasting speed.
  • some technological constraints may include different broadcasting equipment in different regions causing different timing of the broadcast, such as older equipment in some regions that is uncapable of handling the same broadcasting speed.
  • the master stream may be a single media stream upon which other media streams may be synchronized.
  • Some known methods such as “shot transition detection” and/or “cut detection” may be used to identify multiple time stamps in each of the media streams 20 based on transitions or cuts in the media streams 20, such that each identified time stamp may indicate a different content item (e.g., a different scene).
  • the processor 201 may apply “cut detection” to identify scene changes (or cuts) in a video stream 20.
  • Scene changes (or cuts) may be detected as a dark frame between different scenes where the processor 201 may identify such dark frames as scene changes.
  • at least one scene may be labeled in each media stream 20 corresponding to at least one cut, as further described in Fig. 3.
  • Multiple or “twin” streams may have the same content and/or content that differs in audio and/or advertisement in the video.
  • multiple or “twin” streams may have a gap in the timing of the broadcast. If the streams are synchronized, the gap may be overcome or corrected.
  • the time gap between the streams e.g., the time difference between the same scene on different streams
  • the data synchronization system 200 may determine scene changes (or cuts) in each stream and calculate the time gap of each such change between each stream and the master stream in order to later synchronize all of the media streams 20.
  • Fig. 3 schematically illustrates labeling of unsynchronized media streams 20, according to some embodiments. It should be noted that only three media streams 20 are shown in Fig. 3 for illustrative purpose, and any number of multiple media streams may be similarly handled by the data synchronization system 200.
  • a single media stream 20 may be automatically selected as a master stream 300, and, thus, the remaining media streams 20 may be indicated as secondary (or slave) streams 301, 302.
  • one media stream 20 may be randomly selected and/or the earliest stream may be selected as the master stream 300, and the other media streams 20 may be accordingly indicated as the at least one secondary stream 301, 302.
  • Processor 201 may apply “cut detection” techniques (e.g., in near real time) to identify multiple transitions and/or cuts (or scene changes) 30a-d, 30a’ -d’, and 30a” -d”, in each media stream 300, 301, and 302, respectively.
  • cut detection techniques (e.g., in near real time) to identify multiple transitions and/or cuts (or scene changes) 30a-d, 30a’ -d’, and 30a” -d”, in each media stream 300, 301, and 302, respectively.
  • the media streams 20 may arrive in a format of several chunks (e.g., of about 3-5 or 10 seconds per chunk), with the data synchronization system 200 analyzing each of the chunks, for instance per media stream 20, to identify cuts (e.g., cuts when advertisement starts, for headshot, etc.) ⁇
  • cuts e.g., cuts when advertisement starts, for headshot, etc.
  • the cut detection technique may be applied to detect cuts or scene changes (e.g., detecting a change from an outdoor footage to focusing on a musical instmment indoors).
  • the cut detection technique may be applied to detect cuts 30a-b, 30a’-b’, and 30a”-b” before and after a lay up 303a, 303a’, and 303a”, respectively, and may be applied to detect cuts 30c-d, 30c’ -d’, and 30c” -d” before and after a free throw 303b, 303b’, and 303b”, respectively, (having a different type of displayed action, such as different events in a particular sport or music video, for instance the action selected from a predefined list of action types) that may be transmitted with different timing in the master stream 300 and the secondary streams 301, 302.
  • cuts 30a-d, 30a’ -d’, and 30a” -d maybe identified in streams without knowing the specific type of action (e.g., lay-up 303a, 303a’, and 303a”), such that the synchronization of timing occurs based on the cuts 30a-d, 30a’ -d’, and 30a” -d” only.
  • specific type of action e.g., lay-up 303a, 303a’, and 303a
  • processor 201 may identify a time stamp 304 and 305 for each of a plurality of cuts 30c, 30c’ , and 30c’ ’ in streams 300, 301 and 302, respectively, based on detected cuts in the media streams 20.
  • the processor 201 may label at least one action and/or scene 303a and/or 303b in the master stream 300 corresponding to at least one cut 30a, 30b, 30c, and/or 30d.
  • a scene 303b between two cuts 30c and 30d may be labeled in accordance with the displayed action or event (e.g., label a scene as “free throw” in a basketball game).
  • processor 201 may calculate and/or determine time differences Dl, D2, D3, D4 between the identified time stamps 304, 305 of consecutive cuts 30c-d, 30c’- d’, and 30c”-d” (with corresponding scenes 303b, 303b’, and 303b”), for streams 300, 301, and 302, respectively.
  • a scene 303b in the master stream 300 may be labeled as “free throw” (e.g., based on image processing by processor 201 from the same media source, or, for example, by an external source, such as analysis of audio commentary from a predefined commentary feed) in accordance with the event that is captured between time stamps 304, 305 of consecutive cuts 30c and 30d.
  • processor 201 may calculate at least one time offset between the master stream 300 and the at least one secondary stream 301 and 302 for each determined time difference Dl, D2, D3, D4 between cuts 30c, 30c’, 30c”, 30d, 30d’, and 30d”. It should be noted that the calculated time offset may be used to set the start and end time of each action and/or scene 303b’ and 303b” in each of the secondary streams 301 and 302.
  • the processor 201 may label at least one action and/or scene 303b’ and 303b” in the at least one secondary streams 301 and 302 based on the calculated at least one time offset, such that the start and end time for each action and/or scene 303 b’ and 303b’ ’ may be set in the at least one secondary streams 301 and 302.
  • using the data synchronization system 200 may reduce the amount of personnel needed to “tag” unsynchronized media streams with time differences therebetween, as well as lower the total cost and amount of human errors, while performing faster labeling utilizing less computer resources (such as memory, CPU and GPU).
  • automatic tagging and/or labeling may be faster and more accurate (and less subject to human error) compared to manual tagging carried out by a human tagger. This may be achieved due to the data synchronization system 200 only tagging a single stream (e.g., the master stream), and the rest of the streams are only measured to determine the time differences and not being tagged (while manual tagging may require tagging of the other streams as well).
  • the data synchronization system 200 may automatically synchronize the streams and accordingly prevent the need for separate correction and/or tagging for each stream. For example, compared to previously known methods, the data synchronization system 200 may require computer resources that are about ten times smaller than used with previously known methods of media stream tagging where unsynchronized streams may require a large number of personnel for tagging. It should be noted that since the analysis and/or processing of the unsynchronized streams is carried out only once, the required computing power is for the final step to determine the time differences between the streams, thereby requiring less processing resources compared to previous methods where each media stream is analyzed separately.
  • Fig. 3 shows three cuts per stream, there may be any number of cuts in each stream.
  • the data synchronization system 200 may store (e.g., in database 202) the time stamp of the cut in the media streams 20.
  • the master stream 300 and the secondary stream e.g., 301 or 302 may have the following time stamps for cuts, where the numbers indicate time in seconds in the media stream:
  • the data synchronization system 200 may transform the absolute time to frequency by calculating the difference between consecutive cuts.
  • the master stream 300 may have the following time differences (in seconds) between each consecutive cut:
  • the secondary stream (e.g., 301 or 302) may have the following time differences (in seconds) between each consecutive cut:
  • the at least one secondary stream may be labeled only when at least one time offset that is closest to corresponding time stamp of the master stream is smaller than a predefined threshold.
  • the processor 201 may cross correlate each such window over the frequency list of cuts for at the at least one of secondary streams 301 and 302 and determine the minimum absolute error (MAE) of these sets in case that the MAE result is less than a predetermined threshold (e.g., if MAE is smaller than two seconds).
  • the absolute time offset may be calculated based on the determined MAE.
  • the MAE may be calculated for at least one of the master stream 300 and the secondary streams 301 and 302, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
  • a timing offset histogram may be calculated for each action and/or scene 303 for each time difference Dl, D2, D3, D4 between the master stream 300 and the at least one secondary streams 301 and 302.
  • the histogram may be calculated for the time offsets to find at least one time offset Dl, D2, D3, D4 that is closest to corresponding time stamps 304 and 305 of the master stream 300.
  • the most common offset with lowest average MAE may be selected in a recursive manner such that after a predetermined number of checks (e.g., after three recursive checks) the same offset is determined, and the memory (e.g., memory 120 of Fig. 1) may be cleared so that the algorithm starts from that point in the media stream, and thereby label the corresponding action and/or scene 303a or 303b in the at least one secondary stream 301 and 302 (e.g., scenes 303a’ or 303b’ in stream 301 and scenes 303a” or 303b” in stream 302) with the same label as the action and/or scene 303a or 303b in the master stream 300 despite the time difference.
  • a predetermined number of checks e.g., after three recursive checks
  • the memory e.g., memory 120 of Fig. 1
  • the memory e.g., memory 120 of Fig. 1
  • the memory e.g., memory 120 of Fig. 1
  • the memory
  • processor 201 may receive a master media stream 300 with predefined cuts 30a-d, time stamps 304 and 305, and labeling of scenes 303a and 303b, such that analysis of time stamps and/or cuts 30a’-d’ and 30a”-d’ ’ in the at least one secondary streams 301 and 302, respectively, may allow the processor 201 to modify the labeling of the corresponding scenes in the at least one secondary streams 301 and 302 based on calculated time difference with the received master stream 300.
  • processor 201 may determine multiple labels for the same scene (e.g., 303a or 303b), for instance labels for “free throw”, “game time”, “scores” for a single basketball game scene.
  • Figs. 4A-4B show a flow chart for a method of synchronizing multiple media streams, according to some embodiments of the invention.
  • the multiple media streams may be substantially identical streams of the same event with the only difference being a mis-synchronization problem.
  • a time stamp may be identified 401 (e.g., by processor 201 in Fig. 2) for a plurality of cuts (e.g., cuts 30a-b in Fig. 3) in a master stream (e.g., master stream 300 in Fig. 3), based on cuts in the master media stream.
  • at least one scene e.g., scenes 303a or 303b in Fig. 3
  • may be labeled 402 e.g., by processor 201 in the master stream corresponding to at least one cut.
  • a time stamp may be identified 403 (e.g., by processor 201) for each of a plurality of cuts (e.g., cuts 30a’ -d’) in at least one secondary stream (e.g., secondary stream 301 or 302), based on the cuts in the secondary media stream.
  • a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream may be determined
  • At least one time offset may be calculated 406 between the master stream and at least one secondary stream for each determined time difference between cuts.
  • at least one scene may be labeled 407 in the at least one secondary stream based on the calculated at least one time offset and the labeling 402 of the master stream, for instance based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

Systems and methods of synchronizing multiple media streams, including identifying a time stamp for a plurality of cuts in a master stream, identifying a corresponding time stamp for each of a plurality of cuts in at least one secondary stream, determining a first set of time differences between the identified time stamps of consecutive cuts in the master stream and at least a second set of time differences between the identified time stamps of consecutive cuts in the at least one secondary stream, calculating at least one time offset between the master stream and at least one secondary stream for each pair of consecutive cuts in the master stream, and synchronizing the master stream and the secondary stream based on the at least one time offset.

Description

SYSTEM AND METHOD FOR DATA STREAM SYNCHRONIZATION
FIELD OF THE INVENTION
[001] The present invention relates to media systems. More particularly, the present invention relates to systems and methods for synchronizing data streams in media systems.
BACKGROUND OF THE INVENTION
[002] Many entertainment systems can provide real time content to users all over the world, for instance media systems providing content (e.g., sport events or music concerts) over the internet, or via a satellite broadcast.
[003] Media content is usually provided and/or broadcasted in multiple streams, such as video streams or audio streams, to different locations and might sometimes be unsynchronized due to technological constraints of broadcasting equipment or of decoders and/or due to network architecture. For example, a user that views a basketball game in Spain (e.g., via online streaming over the internet) might receive a video stream that is not synchronized with another viewer in France watching the same game.
[004] Some entertainment providers that want to provide additional information on the broadcasted content (e.g., display captions on real time events) usually use manual tagging on predefined events in the media stream. For example, certain actions in the video stream of a music concert can be manually tagged or labeled (e.g., as a song title or a guitar solo by particular band member), such that the viewer sees the labels displayed in real time for each new scene or action.
[005] During such manual labeling, the start time and end time of each event can be manually identified, for instance for each stream separately. In a typical process, each media stream is separately manually labelled, by identifying different events in the stream. Such manual labeling can be time consuming and not always accurate due to human error. It is therefore desired to have a way to automatically label events in various media streams.
SUMMARY [006] There is thus provided, in accordance with some embodiments of the invention, a method of synchronizing multiple media streams, including: identifying a time stamp for a plurality of cuts in a master stream; identifying a corresponding time stamp for each of a plurality of corresponding cuts in at least one secondary stream; determining a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream; determining at least a second set of time differences between the identified corresponding time stamps of each pair of corresponding consecutive cuts in the at least one secondary stream; calculating at least one time offset between the master stream and the at least one secondary stream for each pair of consecutive cuts in the master stream; and synchronizing the master stream and the secondary stream based on the at least one time offset.
[007] In some embodiments of the invention, at least one scene in the master stream may correspond to at least one scene in the at least one secondary stream. This correspondence may be determined based on the determined first set of time differences and the at least second set of time differences. The calculation of the at least one time offset between the master stream and the at least one secondary stream may include, for each of the at least one scene in the master stream, calculating a time offset between a start and/or end time of the at least one scene in the master stream and a start and/or end time of the at least one corresponding scene in the at least one secondary stream. The at least one scene may be labeled in the master stream corresponding to at least one cut, and at least one scene may be labeled in the at least one secondary stream based on the calculated at least one time offset and the labeling of the master stream. The at least one cut may be a cut immediately before the start of the at least one scene or immediately after the end of the at least one scene In some embodiments, labeling of the at least one scene in the at least one secondary stream may be based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream. In some embodiments, the master stream may be automatically selected from the multiple media streams. In some embodiments, a histogram may be calculated for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master stream. In some embodiments, each media stream may include a plurality of media chunks, and the cuts may be determined for each such media chunk. In some embodiments, a minimum absolute error (MAE) may be calculated for at least one of the master stream and the secondary stream, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
[008] There is thus provided, in accordance with some embodiments of the invention, a system for media stream synchronization, including a processor and a database, coupled to the processor and including a master stream and at least one secondary stream of a media stream, wherein the processor may be configured to: identify a time stamp for each of a plurality of cuts in the master stream, identify a corresponding time stamp for each of a plurality of corresponding cuts in the at least one secondary stream, determine a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream; determine at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary stream, calculate at least one time offset between the master stream and at least one secondary stream for each pair of consecutive cuts in the master stream, and synchronize the master stream and the secondary stream based on the at least one time offset.
[009] In some embodiments, the processor may be configured to label at least one scene in the master stream corresponding to at least one cut, and label at least one scene in the at least one secondary stream based on the calculated at least one time offset. In some embodiments, labeling of the at least one scene in the at least one secondary stream may be based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream. In some embodiments, each media stream may include a plurality of media chunks, and wherein the cuts are determined for each such media chunk. In some embodiments, the processor may be configured to automatically select the master stream from the multiple media streams. In some embodiments, processor may be configured to calculate a histogram for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master stream. In some embodiments, the processor may be configured to calculate a minimum absolute error (MAE) for at least one of the master stream and the secondary stream, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
[010] There is thus provided, in accordance with some embodiments of the invention, a method of synchronizing multiple media streams with a received master media stream, wherein the received master stream includes a time stamp for a plurality of cuts in the master stream, including identifying a corresponding time stamp for each of a plurality of corresponding cuts in at least one secondary stream; determining a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream; determining at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary stream; calculating at least one time offset between the master stream and at least one secondary stream for each determined time difference between each pair of consecutive cuts in the master stream; and synchronizing the master stream and the secondary stream based on the at least one time offset.
[Oil] In some embodiments, at least one scene in the master stream may be labeled corresponding to at least one cut, and at least one scene in the at least one secondary stream may be labeled based on the calculated at least one time offset and the labeling of the master stream. In some embodiments, labeling of the at least one scene in the at least one secondary stream may be based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream. In some embodiments, a histogram may be calculated for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master stream. In some embodiments, each media stream may include a plurality of media chunks, and wherein the cuts are determined for each such media chunk. In some embodiments, a minimum absolute error (MAE) may be calculated for at least one of the master stream and the secondary stream, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
BRIEF DESCRIPTION OF THE DRAWINGS
[012] The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
[013] Fig. 1 shows a block diagram of an exemplary computing device, according to some embodiments of the invention; [014] Fig. 2 shows a block diagram of a data synchronization system, according to some embodiments of the invention;
[015] Fig. 3 schematically illustrates labeling of unsynchronized media streams, according to some embodiments of the invention; and
[016] Figs. 4A-4B show a flow chart for a method of synchronizing multiple media streams, according to some embodiments of the invention.
[017] It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.
DETAILED DESCRIPTION
[018] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components, modules, units and/or circuits have not been described in detail so as not to obscure the invention. Some features or elements described with respect to one embodiment may be combined with features or elements described with respect to other embodiments. For the sake of clarity, discussion of same or similar features or elements may not be repeated.
[019] Although embodiments of the invention are not limited in this regard, discussions utilizing terms such as, for example, “processing”, “computing”, “calculating”, “determining”, “establishing”, “analyzing”, “checking”, or the like, may refer to operation(s) and/or process(es) of a computer, a computing platform, a computing system, or other electronic computing device, that manipulates and/or transforms data represented as physical (e.g., electronic) quantities within the computer’s registers and/or memories into other data similarly represented as physical quantities within the computer’s registers and/or memories or other information non-transitory storage medium that may store instructions to perform operations and/or processes. Although embodiments of the invention are not limited in this regard, the terms “plurality” and “a plurality” as used herein may include, for example, “multiple” or “two or more”. The terms “plurality” or “a plurality” may be used throughout the specification to describe two or more components, devices, elements, units, parameters, or the like. The term set when used herein may include one or more items. Unless explicitly stated, the method embodiments described herein are not constrained to a particular order or sequence. Additionally, some of the described method embodiments or elements thereof can occur or be performed simultaneously, at the same point in time, or concurrently.
[020] Reference is made to Fig. 1, which is a schematic block diagram of an example computing device 100, according to some embodiments of the invention. Computing device 100 may include a controller or processor 105 (e.g., a central processing unit processor (CPU), a chip or any suitable computing or computational device), an operating system 115, memory 120, executable code 125, storage 130, input devices 135 (e.g. a keyboard or touchscreen), and output devices 140 (e.g., a display), a communication unit 145 (e.g., a cellular transmitter or modem, a Wi-Fi communication unit, or the like) for communicating with remote devices via a communication network, such as, for example, the Internet. Controller 105 may be configured to execute program code to perform operations described herein. Embodiments of the invention described herein may include one or more computing device 100, for example, to act as the various devices or the components in system 200 shown in Fig. 2. For example, system 200 may be, or may include computing device 100 or components thereof.
[021] Operating system 115 may be or may include any code segment (e.g., one similar to executable code 125 described herein) designed and/or configured to perform tasks involving coordinating, scheduling, arbitrating, supervising, controlling or otherwise managing operation of computing device 100, for example, scheduling execution of software programs or enabling software programs or other modules or units to communicate.
[022] Memory 120 may be or may include, for example, a Random Access Memory (RAM), a read only memory (ROM), a Dynamic RAM (DRAM), a Synchronous DRAM (SD-RAM), a double data rate (DDR) memory chip, a Flash memory, a volatile memory, a non-volatile memory, a cache memory, a buffer, a short term memory unit, a long term memory unit, or other suitable memory units or storage units. Memory 120 may be or may include a plurality of possibly different memory units. Memory 120 may be a computer or processor non-transitory readable medium, or a computer non-transitory storage medium, e.g., a RAM.
[023] Executable code 125 may be any executable code, e.g., an application, a program, a process, task or script. Executable code 125 may be executed by controller 105 possibly under control of operating system 115. For example, executable code 125 may be a software application that performs synchronization of multiple media stream, identification of a time stamp, determination of time differences, calculation of time offsets, etc. as further described herein. Although, for the sake of clarity, a single item of executable code 125 is shown in Fig. 1, a embodiments of the invention may include a plurality of executable code segments similar to executable code 125 that may be stored into memory 120 and cause controller 105 to carry out methods described herein.
[024] Storage 130 may be or may include, for example, a hard disk drive, a universal serial bus (USB) device or other suitable removable and/or fixed storage unit. Data, such as time stamps or labels, may be stored in storage 130 and may be loaded from storage 130 into memory 120 where it may be processed by controller 105. In some embodiments, some of the components shown in Fig. 1 may be omitted. For example, memory 120 may be a non-volatile memory having the storage capacity of storage 130. Accordingly, although shown as a separate component, storage 130 may be embedded or included in memory 120.
[025] Input devices 135 may be or may include a keyboard, a touch screen or pad, one or more sensors or any other or additional suitable input device. Any suitable number of input devices 135 may be operatively connected to computing device 100. Output devices 140 may include one or more displays or monitors and/or any other suitable output devices. Any suitable number of output devices 140 may be operatively connected to computing device 100. Any applicable input/output (I/O) devices may be connected to computing device 100 as shown by blocks 135 and 140. For example, a wired or wireless network interface card (NIC), a universal serial bus (USB) device or external hard drive may be included in input devices 135 and/or output devices 140.
[026] Embodiments of the invention may include an article, such as a computer or processor non-transitory readable medium, or a computer or processor non-transitory storage medium, such as, for example, a memory, a disk drive, or a USB flash memory, encoding, including or storing instructions, e.g., computer-executable instmctions, which, when executed by a processor or controller, carry out methods disclosed herein. For example, an article may include a storage medium, such as memory 120, computer-executable instmctions, such as executable code 125, and a controller, such as controller 105. Such a non-transitory computer readable medium may be, for example, a memory, a disk drive, or a USB flash memory, encoding, including or storing instmctions, e.g., computer-executable instmctions, which when executed by a processor or controller, carry out methods disclosed herein. The storage medium may include, but is not limited to, any type of disk including, semiconductor devices, such as read only memories (ROMs) and/or random access memories (RAMs), flash memories, electrically erasable programmable read-only memories (EEPROMs) or any type of media suitable for storing electronic instmctions, including programmable storage devices. For example, in some embodiments of the invention, memory 120 may be a non-transitory machine-readable medium.
[027] Embodiments of the invention may include components, such as, but not limited to, a plurality of central processing units (CPU) or any other suitable multi-purpose or specific processors or controllers (e.g., controller 105 of Fig. 1), a plurality of input units, a plurality of output units, a plurality of memory units, and a plurality of storage units. Embodiments of the invention may additionally include other suitable hardware components and/or software components. Some embodiments of the invention may include or may be, for example, a personal computer, a desktop computer, a laptop computer, a workstation, a server computer, a network device, or any other suitable computing device. For example, embodiments of the invention may include one or more facility computing device (e.g., computing device 100 of Fig. 1) and one or more remote server computers in active communication with the one or more facility computing device, and in active communication with one or more portable or mobile devices such as smartphones, tablets and the like.
[028] Reference is now made to Fig. 2, which shows a block diagram of a data synchronization system 200, according to some embodiments of the invention. In Fig. 2, the direction of arrows may indicate the direction of information flow.
[029] Data synchronization system 200 may include at least one processor 201 (such as controller 105, shown in Fig. 1) and at least one database 202 (e.g., located on memory 120 or storage system 130 of Fig. 1) coupled thereto. The at least one processor 201 may receive data, for instance media streams 20, from an external source 210 via a server 203, and the received data may be stored on the at least one database 202, by processor 201. For example, server 203 may be connected to an entertainment system 210 (e.g., for internet or TV broadcasting), such that server 203 may forward video streams 20 to the processor 201 for analysis (e.g., to determine time stamps in a video stream), modification, and/or synchronization of labeling of events in media streams 20 (e.g., identify a label for a scene having different timing). It should be noted that media streams as used hereinafter may refer to any data including one or more of: images, text, audio, video, and/or the like, to be synchronized by data synchronization system 200. For example, for audio, the cut detection may be applied by the at least one processor 201 when silence and/or high voice are identified, and, for text, the cut detection may be applied by the at least one processor 201 based on timing between passages.
[030] In some embodiments, the media streams 20 may include the same media content; however, the same media content in different media streams may be unsynchronized due to, for example, technological constraints of broadcasting equipment of the external source 210. For example, some technological constraints may include different broadcasting equipment in different regions causing different timing of the broadcast, such as older equipment in some regions that is uncapable of handling the same broadcasting speed. Thus, in order to label real time events in each of media streams 20, based on events that are labeled on a single master data stream, it is desirable for each of media streams 20 to be synchronized with the master data stream, as will be further described below. The master stream may be a single media stream upon which other media streams may be synchronized. Some known methods such as “shot transition detection” and/or “cut detection” may be used to identify multiple time stamps in each of the media streams 20 based on transitions or cuts in the media streams 20, such that each identified time stamp may indicate a different content item (e.g., a different scene). For example, the processor 201 may apply “cut detection” to identify scene changes (or cuts) in a video stream 20. Scene changes (or cuts) may be detected as a dark frame between different scenes where the processor 201 may identify such dark frames as scene changes. In some embodiments, at least one scene may be labeled in each media stream 20 corresponding to at least one cut, as further described in Fig. 3. [031] Multiple or “twin” streams (e.g., originating from a same video feed from the same camera showing the same frames of the event) may have the same content and/or content that differs in audio and/or advertisement in the video. For example, multiple or “twin” streams may have a gap in the timing of the broadcast. If the streams are synchronized, the gap may be overcome or corrected. In order to carry out media (e.g., video) stream synchronization, the time gap between the streams (e.g., the time difference between the same scene on different streams) may be calculated based on the scene changes (or cuts). Once a master stream is selected, the data synchronization system 200 may determine scene changes (or cuts) in each stream and calculate the time gap of each such change between each stream and the master stream in order to later synchronize all of the media streams 20.
[032] Reference is now made to Fig. 3, which schematically illustrates labeling of unsynchronized media streams 20, according to some embodiments. It should be noted that only three media streams 20 are shown in Fig. 3 for illustrative purpose, and any number of multiple media streams may be similarly handled by the data synchronization system 200. [033] In some embodiments, a single media stream 20 may be automatically selected as a master stream 300, and, thus, the remaining media streams 20 may be indicated as secondary (or slave) streams 301, 302. For example, one media stream 20 may be randomly selected and/or the earliest stream may be selected as the master stream 300, and the other media streams 20 may be accordingly indicated as the at least one secondary stream 301, 302.
[034] Processor 201 may apply “cut detection” techniques (e.g., in near real time) to identify multiple transitions and/or cuts (or scene changes) 30a-d, 30a’ -d’, and 30a” -d”, in each media stream 300, 301, and 302, respectively. Due to the media streams 20 being unsynchronized, the processor 201 may identify cuts 30a’ -d’ and 30a” -d” between different scenes, in secondary streams 302 and 303, respectively, at slightly different times compared to cuts 30a-d of the corresponding scenes in the master stream 300; and/or identify actions 303a’-b’ and 303a”-b” in the secondary streams 301 302, respectively, at slightly different times compared to actions 303a-b in the master stream 300, for instance with a variation of one second (e.g., variation Dl=l second). The media streams 20 may arrive in a format of several chunks (e.g., of about 3-5 or 10 seconds per chunk), with the data synchronization system 200 analyzing each of the chunks, for instance per media stream 20, to identify cuts (e.g., cuts when advertisement starts, for headshot, etc.)·
[035] For example, in a video stream of a music video clip, the cut detection technique may be applied to detect cuts or scene changes (e.g., detecting a change from an outdoor footage to focusing on a musical instmment indoors). In another example, in a live transmission of a basketball game, the cut detection technique may be applied to detect cuts 30a-b, 30a’-b’, and 30a”-b” before and after a lay up 303a, 303a’, and 303a”, respectively, and may be applied to detect cuts 30c-d, 30c’ -d’, and 30c” -d” before and after a free throw 303b, 303b’, and 303b”, respectively, (having a different type of displayed action, such as different events in a particular sport or music video, for instance the action selected from a predefined list of action types) that may be transmitted with different timing in the master stream 300 and the secondary streams 301, 302. In some embodiments, cuts 30a-d, 30a’ -d’, and 30a” -d” maybe identified in streams without knowing the specific type of action (e.g., lay-up 303a, 303a’, and 303a”), such that the synchronization of timing occurs based on the cuts 30a-d, 30a’ -d’, and 30a” -d” only.
[036] In some embodiments of the invention, processor 201 may identify a time stamp 304 and 305 for each of a plurality of cuts 30c, 30c’ , and 30c’ ’ in streams 300, 301 and 302, respectively, based on detected cuts in the media streams 20. The processor 201 may label at least one action and/or scene 303a and/or 303b in the master stream 300 corresponding to at least one cut 30a, 30b, 30c, and/or 30d. For instance, several image processing techniques may be applied to label scenes 303a and 303b in a video stream 300, for instance a scene 303b between two cuts 30c and 30d may be labeled in accordance with the displayed action or event (e.g., label a scene as “free throw” in a basketball game).
[037] In some embodiments, processor 201 may calculate and/or determine time differences Dl, D2, D3, D4 between the identified time stamps 304, 305 of consecutive cuts 30c-d, 30c’- d’, and 30c”-d” (with corresponding scenes 303b, 303b’, and 303b”), for streams 300, 301, and 302, respectively. For example, a scene 303b in the master stream 300 may be labeled as “free throw” (e.g., based on image processing by processor 201 from the same media source, or, for example, by an external source, such as analysis of audio commentary from a predefined commentary feed) in accordance with the event that is captured between time stamps 304, 305 of consecutive cuts 30c and 30d. In scenes 303b and 303b’, at time stamp 304, there is a time difference D1 between the identified time stamp 304 of the master stream 300 and cut 30c’ of the secondary stream 301. Similarly, there is a time difference D2 between the identified time stamp 304 of the master stream 300 and cut 30c” of the secondary stream 302. For scenes 303b and 303b’ at time stamp 305, there is a time difference D3 between the identified time stamp 305 of the master stream 300 and the cut 30d’ of the secondary stream 301. Similarly, there is a time difference D4 between the identified time stamp 305 of the master stream 300 and the cut 30d” of the secondary stream 302. Processor 201 may analyze these time differences Dl- D4 in order to apply correct labeling to scenes in the secondary streams 301 and 302. In some embodiments, labeling may not be required.
[038] In some embodiments, processor 201 may calculate at least one time offset between the master stream 300 and the at least one secondary stream 301 and 302 for each determined time difference Dl, D2, D3, D4 between cuts 30c, 30c’, 30c”, 30d, 30d’, and 30d”. It should be noted that the calculated time offset may be used to set the start and end time of each action and/or scene 303b’ and 303b” in each of the secondary streams 301 and 302. Thus, the processor 201 may label at least one action and/or scene 303b’ and 303b” in the at least one secondary streams 301 and 302 based on the calculated at least one time offset, such that the start and end time for each action and/or scene 303 b’ and 303b’ ’ may be set in the at least one secondary streams 301 and 302.
[039] According to some embodiments, using the data synchronization system 200 may reduce the amount of personnel needed to “tag” unsynchronized media streams with time differences therebetween, as well as lower the total cost and amount of human errors, while performing faster labeling utilizing less computer resources (such as memory, CPU and GPU). It should be noted that automatic tagging and/or labeling may be faster and more accurate (and less subject to human error) compared to manual tagging carried out by a human tagger. This may be achieved due to the data synchronization system 200 only tagging a single stream (e.g., the master stream), and the rest of the streams are only measured to determine the time differences and not being tagged (while manual tagging may require tagging of the other streams as well). In contrast to previous methods, the data synchronization system 200 may automatically synchronize the streams and accordingly prevent the need for separate correction and/or tagging for each stream. For example, compared to previously known methods, the data synchronization system 200 may require computer resources that are about ten times smaller than used with previously known methods of media stream tagging where unsynchronized streams may require a large number of personnel for tagging. It should be noted that since the analysis and/or processing of the unsynchronized streams is carried out only once, the required computing power is for the final step to determine the time differences between the streams, thereby requiring less processing resources compared to previous methods where each media stream is analyzed separately.
[040] While Fig. 3 shows three cuts per stream, there may be any number of cuts in each stream. According to some embodiments, for each identified cut, the data synchronization system 200 may store (e.g., in database 202) the time stamp of the cut in the media streams 20. For example, the master stream 300 and the secondary stream (e.g., 301 or 302) may have the following time stamps for cuts, where the numbers indicate time in seconds in the media stream:
Figure imgf000015_0001
[041] For each media stream, the data synchronization system 200 may transform the absolute time to frequency by calculating the difference between consecutive cuts. For example, the master stream 300 may have the following time differences (in seconds) between each consecutive cut:
MASTER STREAM: | 4 | 2 | 1 | 3 | 2 | 1 | 2 | 3 | 4 | 4 | 2 |
Similarly, the secondary stream (e.g., 301 or 302) may have the following time differences (in seconds) between each consecutive cut:
SECONDARY STREAM: | 4 | 2 | 1 | 4 | 5 | 4 | 3 | 2 | 3 | 4 | 4 |
[042] The processor 201 may divide each media stream into a predefined number ‘N’ of windows (e.g., define ‘N’=3 cuts), such that synchronization of the scene labels may be carried out by calculating time differences for these windows. In some embodiments, the at least one secondary stream may be labeled only when at least one time offset that is closest to corresponding time stamp of the master stream is smaller than a predefined threshold.
[043] In some embodiments, the processor 201 may cross correlate each such window over the frequency list of cuts for at the at least one of secondary streams 301 and 302 and determine the minimum absolute error (MAE) of these sets in case that the MAE result is less than a predetermined threshold (e.g., if MAE is smaller than two seconds). Thus, the absolute time offset may be calculated based on the determined MAE. The MAE may be calculated for at least one of the master stream 300 and the secondary streams 301 and 302, wherein at least one time offset that is closest to corresponding time stamp of the master stream may be determined based on the closest MAE.
[044] In some embodiments, a timing offset histogram may be calculated for each action and/or scene 303 for each time difference Dl, D2, D3, D4 between the master stream 300 and the at least one secondary streams 301 and 302. The histogram may be calculated for the time offsets to find at least one time offset Dl, D2, D3, D4 that is closest to corresponding time stamps 304 and 305 of the master stream 300.
[045] The most common offset with lowest average MAE may be selected in a recursive manner such that after a predetermined number of checks (e.g., after three recursive checks) the same offset is determined, and the memory (e.g., memory 120 of Fig. 1) may be cleared so that the algorithm starts from that point in the media stream, and thereby label the corresponding action and/or scene 303a or 303b in the at least one secondary stream 301 and 302 (e.g., scenes 303a’ or 303b’ in stream 301 and scenes 303a” or 303b” in stream 302) with the same label as the action and/or scene 303a or 303b in the master stream 300 despite the time difference. [046] According to some embodiments of the invention, processor 201 may receive a master media stream 300 with predefined cuts 30a-d, time stamps 304 and 305, and labeling of scenes 303a and 303b, such that analysis of time stamps and/or cuts 30a’-d’ and 30a”-d’ ’ in the at least one secondary streams 301 and 302, respectively, may allow the processor 201 to modify the labeling of the corresponding scenes in the at least one secondary streams 301 and 302 based on calculated time difference with the received master stream 300. According to some embodiments, processor 201 may determine multiple labels for the same scene (e.g., 303a or 303b), for instance labels for “free throw”, “game time”, “scores” for a single basketball game scene.
[047] Reference is now made to Figs. 4A-4B, which show a flow chart for a method of synchronizing multiple media streams, according to some embodiments of the invention. In some embodiments of the invention, the multiple media streams may be substantially identical streams of the same event with the only difference being a mis-synchronization problem. A time stamp may be identified 401 (e.g., by processor 201 in Fig. 2) for a plurality of cuts (e.g., cuts 30a-b in Fig. 3) in a master stream (e.g., master stream 300 in Fig. 3), based on cuts in the master media stream. In some embodiments of the invention, at least one scene (e.g., scenes 303a or 303b in Fig. 3) may be labeled 402 (e.g., by processor 201) in the master stream corresponding to at least one cut.
[048] A time stamp may be identified 403 (e.g., by processor 201) for each of a plurality of cuts (e.g., cuts 30a’ -d’) in at least one secondary stream (e.g., secondary stream 301 or 302), based on the cuts in the secondary media stream. A first set of time differences between the identified time stamps of each pair of consecutive cuts in the master stream may be determined
404, and at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary stream may be determined
405.
[049] At least one time offset may be calculated 406 between the master stream and at least one secondary stream for each determined time difference between cuts. In some embodiments, at least one scene may be labeled 407 in the at least one secondary stream based on the calculated at least one time offset and the labeling 402 of the master stream, for instance based on the calculated at least one time offset that is closest to corresponding time stamp of the master stream.
[050] While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents may occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the tme spirit of the invention.
[051] Various embodiments have been presented. Each of these embodiments may of course include features from other embodiments presented, and embodiments not specifically described may include various features described herein.

Claims

1. A method of synchronizing multiple video streams, the method comprising: identifying a time stamp for a plurality of cuts in a master video stream; identifying a corresponding time stamp for each of a plurality of corresponding cuts in at least one secondary video stream; determining a first set of time differences between the identified time stamps of each pair of consecutive cut in the master video stream; determining at least a second set of time differences between the identified corresponding timestamps of each pair of corresponding consecutive cut in the at least one secondary video stream; calculating at least one time offset between the master video stream and the at least one secondary video stream for each pair of consecutive cuts in the master video stream; and synchronizing the master video stream and the secondary video stream based on the at least one time offset.
2. The method of claim 1, further comprising corresponding at least one scene in the master video stream to at least one scene in the at least one secondary video stream based on the determined first set of time differences and the at least second set of time differences; wherein calculating the at least one time offset between the master video stream and the at least one secondary video stream comprises, for each of the at least one scene in the master video stream, calculating a time offset between a start and/or end time of the at least one scene in the master video stream and a start and/or end time of the at least one corresponding scene in the at least one secondary video stream.
3. The method of claim 2, further comprising: labeling the at least one scene in the master video stream corresponding to at least one cut, wherein the at least one cut is a cut immediately before the start of the at least one scene or immediately after the end of the at least one scene; and labeling the at least one scene in the at least one secondary video stream based on the calculated at least one time offset and the labeling of the master video stream.
4. The method of claim 1 , further comprising automatically selecting the master video stream from the multiple video streams.
5. The method of claim 1, further comprising calculating a histogram for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master video stream.
6. The method of claim 1, wherein each video stream comprises a plurality of media chunks, and wherein the cuts are determined for each such media chunk.
7. The method of claim 1 , further comprising calculating a minimum absolute error (MAE) for at least one of the master video stream and the secondary video stream, wherein at least one time offset that is closest to corresponding time stamp of the master video stream is determined based on the closest MAE.
8. A system for video stream synchronization, the system comprising: a processor; and a database, coupled to the processor and comprising a master video stream and at least one secondary video stream of a video stream; wherein the processor is configured to: identify a time stamp for each of a plurality of cuts in the master video stream; identify a corresponding time stamp for each of a plurality of corresponding cuts in the at least one secondary video stream; determine a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master video stream; determine at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary video stream; calculate at least one time offset between the master video stream and the at least one secondary video stream for each pair of consecutive cuts in the master video stream; and synchronize the master video stream and the secondary video stream based on the at least one time offset.
9. The system of claim 8, wherein the processor is configured to correspond at least one scene in the master video stream to at least one scene in the at least one secondary video stream based on the determined first set of time differences and the at least second set of time differences; wherein the processor calculates the at least one time offset between the master video stream and the at least one secondary video stream by, for each of the at least one scene in the master video stream, calculating a time offset between a start and/or end time of the at least one scene in the master video stream and a start and/or end time of the at least one corresponding scene in the at least one secondary video stream.
10. The system of claim 9, wherein the processor is configured to label the at least one scene in the master video stream corresponding to at least one cut, wherein the at least one cut is a cut immediately before the start of the at least one scene or immediately after the end of the at least one scene; and label the at least one scene in the at least one secondary video stream based on the calculated at least one time offset.
11. The system of claim 8, wherein each video stream comprises a plurality of media chunks, and wherein the cuts are determined for each such media chunk.
12. The system of claim 8, wherein the processor is further configured to automatically select the master video stream from the multiple video streams.
13. The system of claim 8, wherein the processor is further configured to calculate a histogram for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master video stream.
14. The system of claim 8, wherein the processor is further configured to calculate a minimum absolute error (MAE) for at least one of the master video stream and the secondary video stream, wherein at least one time offset that is closest to corresponding time stamp of the master video stream is determined based on the closest MAE.
15. A method of synchronizing multiple video streams with a received master video stream, wherein the received master video stream comprises a time stamp for each of a plurality of cuts in the master video stream, the method comprising: identifying a corresponding time stamp for each of a plurality of corresponding cuts in at least one secondary video stream; determining a first set of time differences between the identified time stamps of each pair of consecutive cuts in the master video stream; determining at least a second set of time differences between the identified corresponding time stamps of each pair of consecutive cuts in the at least one secondary video stream; calculating at least one time offset between the master video stream and the at least one secondary video stream for each pair of consecutive cuts in the master video stream; and synchronizing the master video stream and the secondary video stream based on the at least one time offset.
16. The method of claim 15, further comprising corresponding at least one scene in the master video stream to at least one scene in the at least one secondary video stream based on the determined first set of time differences and the at least second set of time differences; wherein calculating the at least one time offset between the master video stream and the at least one secondary video stream comprises, for each of the at least one scene in the master video stream, calculating a time offset between a start and/or end time of the at least one scene in the master video stream and a start and/or end time of the at least one corresponding scene in the at least one secondary video stream.
17. The method of claim 16, further comprising: labeling the at least one scene in the master video stream corresponding to at least one cut, wherein the at least one cut is a cut immediately before the start of the at least one scene or immediately after the end of the at least one scene; and labeling the at least one scene in the at least one secondary video stream based on the calculated at least one time offset and the labeling of the master video stream.
18. The method of claim 15, further comprising calculating a histogram for the time offsets to find at least one time offset that is closest to corresponding time stamp of the master video stream.
19. The method of claim 15, wherein each video stream comprises a plurality of media chunks, and wherein the cuts are determined for each such media chunk.
20. The method of claim 15, further comprising calculating a minimum absolute error (MAE) for at least one of the master video stream and the secondary video stream, wherein at least one time offset that is closest to corresponding time stamp of the master video stream is determined based on the closest MAE.
PCT/IL2020/051201 2019-11-20 2020-11-19 System and method for data stream synchronization WO2021100046A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IL293175A IL293175A (en) 2019-11-20 2020-11-19 System and method for data stream synchronization
CN202080094361.0A CN115244939B (en) 2019-11-20 2020-11-19 System and method for data stream synchronization
EP20890225.4A EP4062647A4 (en) 2019-11-20 2020-11-19 System and method for data stream synchronization
AU2020385717A AU2020385717A1 (en) 2019-11-20 2020-11-19 System and method for data stream synchronization

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/689,148 US11431775B2 (en) 2019-11-20 2019-11-20 System and method for data stream synchronization
US16/689,148 2019-11-20

Publications (1)

Publication Number Publication Date
WO2021100046A1 true WO2021100046A1 (en) 2021-05-27

Family

ID=75910133

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IL2020/051201 WO2021100046A1 (en) 2019-11-20 2020-11-19 System and method for data stream synchronization

Country Status (6)

Country Link
US (1) US11431775B2 (en)
EP (1) EP4062647A4 (en)
CN (1) CN115244939B (en)
AU (1) AU2020385717A1 (en)
IL (1) IL293175A (en)
WO (1) WO2021100046A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021225608A1 (en) 2020-05-08 2021-11-11 WeMovie Technologies Fully automated post-production editing for movies, tv shows and multimedia contents
US11070888B1 (en) 2020-08-27 2021-07-20 WeMovie Technologies Content structure aware multimedia streaming service for movies, TV shows and multimedia contents
US11812121B2 (en) * 2020-10-28 2023-11-07 WeMovie Technologies Automated post-production editing for user-generated multimedia contents
US11321639B1 (en) 2021-12-13 2022-05-03 WeMovie Technologies Automated evaluation of acting performance using cloud services

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110273455A1 (en) * 2010-05-04 2011-11-10 Shazam Entertainment Ltd. Systems and Methods of Rendering a Textual Animation
US20150281751A1 (en) * 2014-03-31 2015-10-01 Arris Enterprises, Inc. Adaptive streaming transcoder synchronization
US20170094341A1 (en) * 2015-09-30 2017-03-30 Tivo Inc. Synchronizing media content tag data
US20180367591A1 (en) * 2015-11-10 2018-12-20 Edgeware Ab Synchronizing segment boundaries across multiple streams
US20190104165A1 (en) * 2016-07-04 2019-04-04 Znipe Esports AB Methods and nodes for synchronized streaming of a first and a second data stream

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214741B2 (en) * 2002-03-19 2012-07-03 Sharp Laboratories Of America, Inc. Synchronization of video and data
US7471337B2 (en) * 2004-06-09 2008-12-30 Lsi Corporation Method of audio-video synchronization
EP2073548A1 (en) * 2007-12-17 2009-06-24 Alcatel Lucent Method for synchronizing at least two streams
US9432629B2 (en) * 2008-08-18 2016-08-30 Brigham Young University Interactive viewing of sports video
US9438937B1 (en) * 2011-05-31 2016-09-06 Brian K. Buchheit Video server that provides a user tailored video stream consistent with user input using content of a primary stream and an enhanced stream
US9041860B2 (en) * 2011-05-31 2015-05-26 Brian K. Buchheit Simultaneously presenting an enhanced and primary stream associated with a digital television broadcast
US8717499B2 (en) * 2011-09-02 2014-05-06 Dialogic Corporation Audio video offset detector
US9191553B2 (en) * 2011-09-30 2015-11-17 Intel Corporation System, methods, and computer program products for multi-stream audio/visual synchronization
CN104813303B (en) * 2012-09-14 2018-11-16 Dts(英属维尔京群岛)有限公司 Playback synchronizes
CN102905054B (en) * 2012-10-23 2017-11-21 上海佰贝科技发展有限公司 A kind of video synchronization method compared based on image multi-dimensional characteristic value
EP2949123A2 (en) * 2013-02-27 2015-12-02 Apple Inc. Adaptive streaming techniques
US9451048B2 (en) * 2013-03-12 2016-09-20 Shazam Investments Ltd. Methods and systems for identifying information of a broadcast station and information of broadcasted content
FR3006841B1 (en) * 2013-06-07 2015-07-03 Kolor FUSION OF SEVERAL VIDEO STREAMS
WO2015039888A1 (en) * 2013-09-20 2015-03-26 Koninklijke Kpn N.V. Correlating timeline information between media streams
US20160105689A1 (en) * 2014-10-13 2016-04-14 Vigor Systems Inc. Replacing a corrupted video frame
WO2016068768A1 (en) * 2014-10-31 2016-05-06 Telefonaktiebolaget L M Ericsson (Publ) Video stream synchronization
US20160132600A1 (en) * 2014-11-07 2016-05-12 Shazam Investments Limited Methods and Systems for Performing Content Recognition for a Surge of Incoming Recognition Queries
EP3316589B1 (en) * 2015-06-25 2024-02-28 Panasonic Intellectual Property Management Co., Ltd. Video synchronization device and video synchronization method
US10148722B2 (en) * 2016-07-04 2018-12-04 Znipe Esports AB Methods and nodes for synchronized streaming of a first and a second data stream
US10440086B2 (en) * 2016-11-28 2019-10-08 Microsoft Technology Licensing, Llc Reading multiplexed device streams
CN107277594B (en) * 2017-07-06 2020-04-28 广州华多网络科技有限公司 Method and device for synchronizing video and audio with bullet screen

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110273455A1 (en) * 2010-05-04 2011-11-10 Shazam Entertainment Ltd. Systems and Methods of Rendering a Textual Animation
US20150281751A1 (en) * 2014-03-31 2015-10-01 Arris Enterprises, Inc. Adaptive streaming transcoder synchronization
US20170094341A1 (en) * 2015-09-30 2017-03-30 Tivo Inc. Synchronizing media content tag data
US20180367591A1 (en) * 2015-11-10 2018-12-20 Edgeware Ab Synchronizing segment boundaries across multiple streams
US20190104165A1 (en) * 2016-07-04 2019-04-04 Znipe Esports AB Methods and nodes for synchronized streaming of a first and a second data stream

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4062647A4 *

Also Published As

Publication number Publication date
EP4062647A4 (en) 2023-01-11
US20210152619A1 (en) 2021-05-20
CN115244939A (en) 2022-10-25
AU2020385717A1 (en) 2022-07-07
US11431775B2 (en) 2022-08-30
EP4062647A1 (en) 2022-09-28
CN115244939B (en) 2024-09-24
IL293175A (en) 2022-07-01

Similar Documents

Publication Publication Date Title
US11431775B2 (en) System and method for data stream synchronization
US9961398B2 (en) Method and device for switching video streams
US10553252B2 (en) Annotating media content for automatic content understanding
US8583818B2 (en) System and method for custom segmentation for streaming video
US10491961B2 (en) System for annotating media content for automatic content understanding
US20200349612A1 (en) Client-Side Video Advertisement Replacement Using Automatic Content Recognition
CN112929744B (en) Method, apparatus, device, medium and program product for segmenting video clips
KR20210021099A (en) Establishment and use of temporal mapping based on interpolation using low-rate fingerprinting to facilitate frame-accurate content modification
US10820066B2 (en) Reconciling ABR segments across redundant sites
US20140201774A1 (en) Systems and methods for multi-broadcast differentiation
JP7442211B2 (en) Synchronizing auxiliary data for content that includes audio
US20240171791A1 (en) Method and system for content aware monitoring of media channel output by a media system
US20230319346A1 (en) Systems and methods for automatically generating content items from identified events
US20230362421A1 (en) Aligning a plurality of variously encoded content streams
WO2015126830A1 (en) System for annotating media content for automatic content understanding

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20890225

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020890225

Country of ref document: EP

Effective date: 20220620

ENP Entry into the national phase

Ref document number: 2020385717

Country of ref document: AU

Date of ref document: 20201119

Kind code of ref document: A