Watermarking two or more variables of a video fragment

JP7608429B2Active Publication Date: 2025-01-06NAGRAVISION SA
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2022504521
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-07-24
Filing Date
2020-07-24
Publication Date
2025-01-06
Estimated Expiration
2040-07-24

Smart Images

  • Figure 0007608429000001
    Figure 0007608429000001
  • Figure 0007608429000002
    Figure 0007608429000002
  • Figure 0007608429000003
    Figure 0007608429000003
Patent Text Reader

Abstract

1. A method for processing a video fragment into two or more variants of the video fragment, each variant having a different watermark, the method comprising: fragmenting video content into a sequence of fragments; watermarking the plurality of fragments to create two or more variants of each of the plurality of fragments, wherein the two or more variants of a fragment are watermarked using different watermarks; adjusting lengths of the two or more variants of at least one of the fragments to the same adjusted length, wherein the adjusted length indicates a temporal position of the two or more variants of at least one of the fragments compared to variables of other fragments in the sequence of fragments.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to a method for processing a video fragment into two or more variants of the video fragment, a requestor, a variant pre-processor module, a head-end system, a watermark embedder module, and a method for selecting a variant of the video fragment for delivery to a CDN server. [Background technology]

[0002]

[0002] Streamed video, both live and on-demand, is becoming increasingly popular with viewers. Thanks to a wide variety of networks and consumer devices, it is becoming accessible anywhere, anytime across a multitude of devices. Video also comes in many forms, from user-generated content videos on social media outlets to ultra-high quality and high definition specialized content, including first-run movies and world-class sporting events, delivered by licensed Internet streaming services.

[0003]

[0003] The Internet serves as an excellent distribution mechanism for streamed video, but is also a popular distribution channel for pirated content. To protect revenues, both content owners and operators have an interest in protecting licensed video content from piracy. In license terms, content protection is also a typical requirement from content owners to operators. The ability to prevent piracy, take down illegal content, and act against illegal sources are key objectives of content protection. Meeting these objectives requires the use of various technologies, including watermarking and Digital Rights Management (DRM), fingerprinting, and encryption, among others.

[0004]

[0004] Protection of commercial video content from piracy is clearly important to content owners and is typically a requirement for distributors in the terms of their licenses. Watermarking is a useful tool against theft, as it allows stolen copies to be traced back to the source. Improvements in watermarking technology have progressed to the point that it is now practical to embed watermarks containing a distributor identifier, a content identifier, and a subscriber identifier into almost any type of content, including live content that is distributed to individual subscribers.

[0005]

[0005] Watermarking is a technique for embedding data into either the audio or video portion of an asset that can be reliably extracted even if the asset is modified. In the event of a change, the watermark is designed to travel with the asset without being modified itself.

[0006]

[0006] Implementation details for embedding and later extracting watermarks vary among watermarking technology providers. They share a fundamental similarity in that the embedded data can later be extracted by a detector. Watermarks can be used for forensic identification of the source of pirated content.

[0007]

[0007] Legal watermarking is intended to provide a means to identify the source of leaked content at the distributor level, at a more granular device level, or even at the subscriber level. When leaked content is discovered on a piracy site, it can be analyzed for any embedded marks, which, when extracted, can provide a chain of custody up to the device / subscriber identification, depending on the marks present. This information can then be used by the investigation team to locate the source of the leak and act to stop future piracy.

[0008]

[0008] Although legal watermarking provides an anti-piracy function, there are many applications where watermarking can add value to the content distribution chain. Illustrative application areas for watermarking are digital cinema, where the watermark is not applied to individual users, but can be used to identify the theater, date, and time the content was screened; screener, where the watermark can be used to identify viewers who received a screening copy; physical media, where the watermark is added to physical media such as Blu-ray discs and can later be used to determine the playback device used for capture and illegal distribution; (premium) video on demand (VoD), where legal watermarks are typically used to identify subscribers who redistribute content; and live streaming, where legal identification needs to be fast to reduce the end-to-end delay from scanning online piracy services, extracting watermarks from illegal content, and issuing take down notices at the source or turning off illegal retransmissions.

[0009]

[0009] VoD and live applications typically use video distribution over IP networks. The use of watermarks can be used to determine the network and / or service provider responsible for distributing the piece of content, as well as the user who accessed the content. This use case becomes more relevant as the distribution of valuable content over IP networks gets closer to the release date, making the content more valuable. As the quality of IP source video increases, pirates can still provide very high quality copies, even after several generations.

[0010]

[0010] Many watermarking systems allow for layered watermarking, where marks can be inserted at different stages of the content packaging and distribution workflow without interfering with or replacing one another. Such layered watermarking can be used to recreate the entire chain of custody when pirated content is found on sharing sites, social media sites, and streaming devices.

[0011]

[0011] In two-step watermarking, the watermark embedding process is based on two successive steps: a first step of pre-calculating different variables for different parts of the video asset, and a second step of constructing a unique combination of the variables to encode the desired watermark identifier.

[0012]

[0012] The rationale for splitting watermarking into two steps is to offload the computational burden in the first step to make the second step as simple and scalable as possible. The second step generates a unique sequence of variables that encodes the desired watermark identifier. The sequence of variables typically encodes the watermark identifier with enough redundancy to establish reliable forensic evidence. It can therefore be integrated at any point in the video distribution network where an identifier is available. Two-step embedding allows server-side embedding, which creates requirements on the server, such as a VoD server or a Content Distribution Network (CDN) edge, but is transparent to the client. Alternatively, it allows embedding on the client before decoding.

[0013]

[0013] Fragment watermarking can be used for over-the-top (OTT) streaming technologies. For adaptive bit-rate (ABR) support, each content is typically available at different quality levels, also known as renditions, and chunked into smaller parts called fragments. The playback device may determine the fragment boundaries to switch between available renditions to optimize the viewing experience. Fragment watermarking leverages the same mechanism to insert watermark messages by selecting a unique sequence of fragment versions over time based on a unique ID to be inserted.

[0014]

[0014] The inputs to a watermark determination for a single fragment are typically (i) time-related information corresponding to the requested fragment, typically a timestamp or index number carried in the filename, and (ii) a unique identifier to be inserted.

[0015]

[0015] Fragments can exist physically as separate files, or can be stored in a single file as virtual fragments, in which case they can be accessed via byte range requests.

[0016]

[0016] To obtain "time" information for a virtual fragment in case of a byte range request, it is known to use a mapping table that maps the requested byte range to a time. For each fragment byte range request, a lookup into the mapping table is performed to retrieve the correct time needed to compute the correct watermark decision. This mapping table is typically stored next to the content as a file on a Content Delivery Network (CDN) and will be requested whenever a CDN edge server needs to compute a watermark decision. Since bitrates vary for each content and rendition, this mapping table is unique for each content and rendition.

[0017]

[0017] Not all CDN providers support outgoing requests to be processed on their CDN edge servers. As a result, it is not always possible to access an external mapping table while processing a fragment request. To overcome this drawback, it has been proposed to use a fixed mapping of byte ranges to time, but this is considered inefficient and has a negative impact on image quality when considering different bit rates.

[0018]

[0018] Without access to a mapping table on a CDN edge server, a watermark decision cannot be computed since byte ranges cannot be linked to time. Summary of the Invention

[0019]

[0019] This disclosure proposes a solution to enable watermarking decisions to be made, for example, on a CDN edge server, without the use of a mapping table.

[0020]

[0020] According to an aspect of the present disclosure, a method is proposed for processing a video fragment into two or more variants of the video fragment, each variant having a different watermark. The method may comprise fragmenting the video content into a sequence of fragments. The method may further comprise watermarking the fragments to create two or more variants of each of the fragments, the two or more variants of a fragment being watermarked using different watermarks. The method may further comprise adjusting lengths of the two or more variants for at least one of the fragments to the same adjusted length. The adjusted length may indicate a temporal position of the two or more variants of at least one of the fragments compared to the variants of other fragments in the sequence of fragments.

[0021]

[0021] In this specification, the term "variant" is used to denote a watermarked version of a fragment. More than one variant can be generated from each fragment, which means that a fragment can be watermarked using different watermarks to obtain different variants of the fragment.

[0022]

[0022] A temporal position may take any form that indicates a position relative to another temporal position. An example of a temporal position is a time reference that indicates an absolute or relative instant in time. Another example of a temporal position is an index number that indicates a position in a sequence of positions.

[0023]

[0023] Different fragments are typically watermarked using the same watermark. For example, in A / B watermarking, a first fragment can be watermarked using watermark A to obtain a first variable of the first fragment, and using watermark B to obtain a second variable of the first fragment. A second fragment can be watermarked using the same watermark A to obtain a first variable of the second fragment, and using the same watermark B to obtain a second variable of the second fragment. Subsequent fragments can then also be watermarked using the same watermarks A and B.

[0024]

[0024] Advantageously, the watermarked variables of the fragment thus obtained have their temporal position embedded in the length of the variable, which hence indicates the temporal position, allowing for example a CDN edge server to obtain the temporal position without a mapping table.

[0025] In an embodiment, the length adjustment may comprise adding padding data to one or more of the variables of at least one of the fragments.

[0026]

[0026] In an embodiment, the method may further comprise equalizing the lengths of two or more variables for each of the fragments before adjusting the lengths. This allows the lengths of the variables of one fragment to be adjusted using the same amount of padding data, which facilitates the adjustment step.

[0027] In an embodiment, the length equalization may comprise adding padding data to one or more of the variables.

[0028]

[0028] In an embodiment, the length adjustment may result in the length of a variable of at least one of the fragments being longer than the length of the variable of a preceding fragment in the sequence of fragments, such that the increased length of the variable may indicate a later temporal position of the variable.

[0029] In an embodiment, the length of the variable of at least one of the fragments may be one data unit longer than the length of the variable of the preceding fragment in the sequence of fragments. The data unit is preferably a byte, but may alternatively be a bit, a word, or any other data unit, depending on the data format used to encode the fragment and the variables.

[0030]

[0030] In an embodiment, two or more variables of each of the multiple fragments may be watermarked using the same or related watermark as used for two or more variables of at least one of the fragments.

[0031]

[0031] In A / B watermarking, for example for ABR video content, typically the same watermark may be used. It may be beneficial to use different but related watermarks to generate different versions of a fragment, for example if one encodes the temporal position in each version to simplify the reconstruction of the watermark message later. For example, in the case of A / B watermarking with related watermarks, there are still two versions (A / B) for each fragment, but there may be, for example, 32 different A watermarks and 32 different B watermarks indicating 32 different positions. All fragments containing a version A watermark will be associated with the same class of watermark (A), but not exactly the same watermark.

[0032]

[0032] In an embodiment, the temporal position can be defined as a position within a limited number of possible positions repeated in time. The adjusted length can reflect the position of a variable having an adjusted length within the limited number of possible positions. The temporal position can represent, for example, a symbol index in a watermark message constructed from a sequence of selected variables, the selected variable being one of two or more variables of each of the fragments.

[0033]

[0033] In an embodiment, the time position of the variable may be derivable from the length of the variable modulo a limited number of possible positions. For example, if the watermark message comprises 32 symbols that may be repeated in time, the length of the variable modulo 32 may represent a symbol index in the watermark message.

[0034] In an embodiment, the time position of one or more of two or more variables may be derivable from the offset of the variable. This advantageously prevents a hacker from indicating a false time position by requesting a subsequent variable by simply requesting the same number of bytes for the subsequent variable.

[0035]

[0035] According to an aspect of the present disclosure, a method is proposed for selecting a variant of a video fragment for delivery to a requester. The requester is, for example, a client device or a playback device. The method may comprise receiving a request for all or a part of a video content fragmented into a sequence of fragments. The multiple fragments may be watermarked to create two or more variants of each of the multiple fragments according to the above-described method of processing the video fragment into two or more variants of the video fragment. The method may further comprise determining a temporal position of the two or more variants of the fragment compared to the variants of other fragments in the sequence of fragments. The method may further comprise selecting one variant from the two or more variants for each of the multiple fragments based on the determined temporal position and an identifier of the requester. The identifier of the requester is, for example, an identifier that uniquely identifies the client device or the playback device. The identifier may identify a user or a customer. The identifier may define which of the two or more variants should be selected for each fragment based on the temporal position.

[0036]

[0036] Advantageously, the watermarked variables of a fragment with their temporal position embedded in the length of the variable can be used, for example, by a CDN edge server, to obtain from this the temporal position of the variable without a mapping table. The temporal position can then be used to select a variable for each fragment to generate a watermark message without the need for a mapping table.

[0037]

[0037] In an embodiment, a temporal position can be defined as a position within a limited number of possible positions repeated in time, and the temporal position is determined from the length of a variable modulo the limited number of possible positions.

[0038] In an embodiment, the request may be received in the form of a byte range request.

[0039] In an embodiment, the method may further comprise detecting an out-of-bounds request, indicating that the request was made against an incorrect or non-existent variable.

[0040] In an embodiment, the determination of the time position may be based on a cryptographic function, such as an encryption or hashing function.

[0041]

[0041] In an embodiment, the determination of the time position can be further based on an offset of one or more of the two or more variables. This advantageously prevents a hacker from requesting a subsequent variable by simply requesting the same number of bytes for the subsequent variable. Moreover, incorrect requests can be detected and logged.

[0042] In an embodiment, the offset may be received along with the request, such that the requester may be required to know the offset in order to obtain the variable.

[0043]

[0043] In an embodiment, the time position may depend on a secret. This advantageously makes it difficult for a hacker to make invalid requests that appear valid. The secret is typically known to the network entity where the request is being processed. This is particularly advantageous when combined with a cryptographic function.

[0044] According to an aspect of the present disclosure, a variable pre-processor module is proposed that is configured to perform the above-described method of processing a video fragment into two or more variables of the video fragment.

[0045] According to an aspect of the present disclosure, a head-end system is proposed that includes a variable pre-processor module as described above.

[0046]

[0046] According to an aspect of the present disclosure, a watermark embedder module is proposed that is configured to perform the above-described method for selecting a variant of a video fragment for delivery to a requestor.

[0047] According to an aspect of the present disclosure, a CDN server is proposed that comprises a watermark embedder module as described above.

[0048]

[0048] Hereinafter, embodiments of the present disclosure will be described in more detail. However, it should be understood that these embodiments may not be interpreted as limiting the scope of protection for the present disclosure.

[0049]

[0049] Embodiments will now be described, by way of example only, with reference to the accompanying schematic drawings in which corresponding reference symbols indicate corresponding parts, and in which: [Brief description of the drawings]

[0050] [Figure 1]

[0050] A system architecture including inputs and outputs of system components is shown in accordance with an exemplary embodiment of the present disclosure. [Diagram 2]

[0051] 1 shows a flow diagram of a method according to an exemplary embodiment of the present disclosure. [Diagram 3]

[0052] 4 shows a flow diagram of a method according to another illustrative embodiment of the present disclosure. [Figure 4]

[0053] 1 shows an illustrative byte range padding example for generating and selecting variables for a fragment of video content, according to an illustrative embodiment of the present disclosure.

[0054] The drawings are intended for illustrative purposes only and do not serve as a limitation on the scope or protection defined by the claims. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0051]

[0055] The following example is based on two-step watermarking in the form of A / B watermarking for ABR video content. It will be understood that the present disclosure is not limited to this example and can be applied to any video content that is variable watermarked and fragmented. Also, the present disclosure is not limited to two variables per fragment as in A / B watermarking, any number of variables can be generated and used.

[0052]

[0056] In A / B watermarking, the variants have the same size as the video segments used by the distribution network, and there are two variants per video segment, version A and version B. Using playlist manipulation or segment selection at the (CDN) edge, a client device can receive only the set of video segments encoded with its watermark identifier.

[0053]

[0057] As shown in Fig. 1, the first step of the two-step watermarking may be a pre-processing step to calculate a set of variables for the input video content 10. The first step is typically performed once per input video content 10. In this example, the variables pre-processor 1 receives the input frames 10 and converts them into two intermediate versions. For one or more of the frames in the intermediate version, the length of the variables may be adjusted by the processor 2, as explained in more detail below, to obtain two sets of variables 20, 21 with adjusted lengths, which allows fast embedding at a later stage by selecting which version is used for the actual playback. The variables pre-processor 1 and the processor 2 may be implemented as two separate devices, may be integrated into a single device, or may be one and the same processor configured to perform both tasks.

[0054]

[0058] Both versions 20, 21 are typically visually identical, but subtly different due to the watermark insertion. In a first step, the watermark pre-processor 1 may provide a variant of the baseband content to the video encoder. The resulting set of variants 20, 21 is typically encoded and packetized in an associated container for transmission.

[0055]

[0059] In FIG. 1, the first set of variables 20 includes four variables f1V A ...f4V A The second set of variables 21 includes four variables f1V B ...f4V B In this specification, f1..f4 denotes the four frames that are watermarked to obtain the frame variables. A and V B denote the variables A and B of the respective frames. The lengths of the variables are adjusted to allow the temporal position of the variables in the stream of fragments to be determined at a later stage.

[0056]

[0060] The variables can be generated by analyzing the video content, typically frame by frame, either in the baseband domain (pre-encoding) or in the encoded domain (post-encoding). The variables can be pre-watermarked variables of segments (i.e. chunks or fragments) of the video bitstream that can be used interchangeably without affecting the viewing experience, while still providing a means to perform legal watermarking. The length of the variables can vary between watermarking suppliers, ranging from a few bytes to the entire video segment in adaptive bitrate (ABR) video networks.

[0057]

[0061] In the first step of two-step watermarking, the watermark algorithm may define the basic characteristics of the watermarking system. Depending on the application, the algorithm may be tailored, for example, to support short fragment lengths or to carry large payloads. As a result, different algorithms are typically not directly compatible with each other, requiring all components of the watermarking system to use the same algorithm.

[0058]

[0062] The second step of the two-step watermarking may be responsible for creating a serialized video bitstream 30, 31 that uniquely identifies the recipient to which it is delivered. The second step is typically performed by a watermark embedder 3 that has access to a watermark identifier that is used to generate a unique variable sequence 30, 31 by selecting a single variable for each set of variables 20, 21. This variable sequence 30, 31 is part of the final legally watermarked video content that may comprise an unaltered segment of the video. This operation can be performed on the move (e.g. at the network edge) or in the client device (e.g. during playback or PVR recording).

[0059]

[0063] In A / B watermarking, the embedder is rewriting the fragment request from the requester to provide back A or B version of the requested fragment. One version of the fragment (A or B) can be selected based on the fragment start time and a unique ID value to be inserted in the watermark. This start time is typically part of the fragment file name, for example in the case of DASH timelines, but when using byte range requests this byte range needs to be converted to the fragment start time. The same can be true for HLS when respecting file naming or byte range conversion techniques.

[0060]

[0064] The watermark embedding (second step) process selects, for each fragment f1...f4, a single variable V from each set of variables 20, 21.A Or V B and from this generate a variant sequence encoding the desired watermark identifier, and a watermark embedder (EMB) that applies the selected variants to the compressed video bitstream to obtain variant sequences 30, 31 that are videos watermarked with the unique identifier. In the example of Figure 1, a video sequence 30 may be generated for a first end user and includes a unique watermark ABAB for fragments f1 to f4. A video sequence 31 may be generated for a second end user and includes a unique watermark ABBA for fragments f1 to f4.

[0061]

[0065] If the variable data are applied in an independent encryption block, they can be applied in the encryption domain without knowledge of the decryption key.

[0062]

[0066] The VSG receives a set of variables in an associated container. Based on the watermark identifier, it generates a sequence of variables, which the EMB applies to the bitstream to generate the watermarked video. This sequence can be decoded for rendering, stored for later use (PVR), or forwarded further along the transmission pipeline.

[0063]

[0067] The second step may be performed at the headend, like the origin server in an OTT scenario. All segment requests are escalated to the origin server, which is then responsible for generating a serialized segment that contains a unique sequence of variables that encode part of the watermark identifier associated with the entity that queries the segment. A / B watermarking will return either version A or version B of the requested segment. In such an integration, all segment requests reach the origin server, so there is no cache. Although not possible for large scale deployment, such an integration may be appropriate for some low volume cases such as screener, hospitality window, or mezzanine content distribution.

[0064]

[0068] The second step may be performed in the client device. In this case, the variables metadata may travel with the video from the headend to the device. To maintain control over bandwidth overhead, such integration usually requires having the variables as fine-grained as possible. When the serialization process operates on a plaintext encoded bitstream, its integration within a Trusted Execution Environment (TEE) may be recommended for security reasons. Alternatively, different variables may be encrypted with different keys and each device may be provisioned with a unique set of keys that provide access to a unique sequence of variables. Such crypto-binding of access to variables is standardized for ISO BMFF and Blu-ray discs.

[0065]

[0069] The second step is preferably implemented as ABR segment selection on the edge. A / B segment selection is when a selection is performed between prepared segments of A / B variants just in time for each client segment request. Here, the serialization step of the two-step watermarking system is performed in the edge server. The video delivery system needs to deliver a unique sequence of A and B segments to every individual. This can be achieved by having the edge server select either the A or B version of the segment to be returned when it receives a segment request. Once the segment version, i.e. variant, is selected, the edge server can then possibly query the cache from the origin server, which delivers it to the recipient.

[0066]

[0070] ABR segment selection on the edge may be required when byte-range indexed playlists are used or when the playlist is templated (such as with Smooth Streaming and DASH VoD profiles) and segments cannot be individually addressed. The serialization effort during playlist delivery is eliminated and the same playlist can be used for all streams. However, the edge needs to apply logic to decide for each requested segment. This logic includes identifying the information to be embedded, deciding on segment selection, and delivering the corresponding segment. The fact that all recipients receive the same playlist provides an additional layer of security against playlist comparison and manipulation before the content is downloaded. It is recommended to utilize https-based segment URIs or other strategies to avoid local ISPs from further caching seemingly "common" content segments after they leave the CDN edge, thus breaking the A / B serialization pattern.

[0067]

[0071] Some edge servers can perform late repacketization operations on the segment content itself. This allows segments to be selected not only on the edge, which allows the choice between A / B, but also to preempt the assembly of these segments even after they have been requested. The idea is to use a single video transport protocol between origin and edge servers, optimizing the caching capacity, and performing repacketization operations (container and scrambling) at the edge to deliver the segments in the desired format. Such repacketization implies that the encoded video buffer is available in the clear at some point. In the case of a two-step watermarking system that uses variables with a finer granularity than the entire segment, it offers the opportunity to perform a serialization step at the edge. In this case, the transmission of variable metadata together with the video can be significantly lower than the ratio inherent in A / B watermarking, where storage is doubled and caching is doubled for A / B segments. This approach is not limited to ABR, but can be applied to any progressive download, with a common playlist for all subscribers.

[0068]

[0072] Since not all CDN providers support outgoing requests to be processed on their CDN edge servers, it is not always possible to access an external mapping table while processing a fragment request. Such a mapping table is typically used to map byte range requests to time to enable selection of the correct fragment to be delivered to the requestor. Without access to a mapping table on the CDN edge server, watermark decisions cannot be computed since byte ranges cannot be linked to time.

[0069]

[0073] To allow byte range requests to be processed without a mapping table, temporal information indicating the temporal position of the variable is encoded in the length of the variable. In this regard, the known two-step watermarking is modified and improved as follows.

[0070]

[0074] In the content preparation step, i.e. the first step, padding is applied to the variables of the fragments to encode the "temporal" information corresponding to each fragment. After padding, the variables of the fragment have the same adjusted length, and the length can be used to derive the temporal position of the variable compared to the variables of other fragments. Optionally, padding can be applied to the video content so that all watermark variables of a fragment have the same size before adjusting the length to encode the temporal information.

[0071]

[0075] In the watermarking step, i.e. the second step, for each virtual fragment request, the byte range information can be used to calculate the fragment size of the variables in the byte range. Based on this fragment size of the variables, the "temporal information" can be extracted.

[0072]

[0076] This avoids the need to have a lookup table to relate byte position to time.

[0073]

[0077] It will be appreciated that instead of using the size of the variable in a byte range request, the fragment start position or offset can be used to obtain temporal information, since the start position or offset depends on the length of the variable.

[0074]

[0078] The time information encoded in the variable length by adding padding typically only needs to take into account a limited number of "watermark symbols". In the particular case of watermarking, a message can be constructed from a sequence of watermark symbols of length N that are repeated over time. Thus, the added padding can be kept to a minimum, since only a small number of "watermark symbols" need to be encoded.

[0075]

[0079] Figure 2 shows the V A and V B 1 shows an illustrative embodiment of a method for processing two or more variables such as f1...f4, each variable having a different watermark. In step 101, a video content 10 is fragmented into a sequence of fragments. In step 102, a number of fragments f1...f4 are watermarked to create two or more variables of each of the multiple fragments, where the two or more variables of a fragment are watermarked using a different watermark. Step 103 shows that the watermarking 102 may be repeated for each fragment f1...f4 to be watermarked to create a set of variables of the fragment. In step 104, the lengths of the two or more variables for at least one of the fragments are adjusted to the same adjusted length. For example, for a first fragment f1, the two variables V are watermarked using a different watermark. A and V B The lengths of f1V can be adjusted to have the same length. A and f1V B will have the same length. Typically, this is done for the variables of the other fragments f2...f4 as well. Step 105 is A , V B, the length adjustment 104 may be repeated for each of the fragments. The adjusted length may indicate a temporal position of two or more variables of at least one of the fragments compared to the variables of other fragments in the sequence of fragments. Step 110 indicates the end of the process, where a set of fragment variables 20, 21 after adjusting the lengths of the variables is obtained.

[0076]

[0080] The result of the length adjustment 104 is, for example, as follows: (equal length) f2V A and f2V B The length of f1V is equal to the length of A and f1V B can be one longer than f3V (equal length) A and f3V B The length of f2V is equal to the length of A and f2V B f4V can be one longer than f4V (of equal length). A and f4V B The length of is (equal length) f3V A and f3V B From this, the adjusted length of the variable can be used to derive the time position of the variable based on the length of the variable compared to the length of the previous variable. The present disclosure has only four fragments f1...f4, with two variables V for each fragment. A , V B It will be appreciated that the present invention is not limited to this particular example of increasing the length of the subsequent variable by one, having

[0077]

[0081] Figure 3 shows an example of a method for selecting variables of a video fragment for delivery to a requester. In step 201, a request is received for all or part of a video content that has been fragmented into a sequence of fragments, the multiple fragments being watermarked to create two or more variables for each of the multiple fragments according to the method shown in Figure 2. In step 202, a temporal location of the two or more variables of the fragment compared to the variables of other fragments in the sequence of fragments is determined. In step 203, for each of the multiple fragments, a variable is selected from the two or more variables based on the determined temporal location and an identifier of the requester, the identifier defining which of the two or more variables should be selected for each fragment based on the temporal location. From this, a unique variable sequence 210, 30, 31, etc., can be created for a particular end user.

[0078]

[0082] 4 shows an example of A / B watermarking according to an illustrative embodiment of the present disclosure, where the watermark message to be generated for a byte range request has a length of 32 symbols. In this example, the watermark message to be generated - which may be, and typically is, repeated - is equal to "ABBBAABAABBBABABAABBBAAAAABABBBA". Herein, the location of each of the symbols A and B can be derived as symbol index 0 to 31, e.g., the first "A" has a symbol index of 0 and the last "A" has a symbol index of 31.

[0079]

[0083] The encoder output after fragmenting the video content into a sequence of fragments and A / B watermarking the fragments is shown in the leftmost table 41 of Figure 4, showing the sizes of the A and B watermarked variables for eleven groups of picture fragments GOP#0...GOP#10. These variables are for example formatted as H.264 or HEVC fragments in an elementary stream (ES).

[0080]

[0084] An initial alignment 301 of the A and B variables may be applied, the results of which are shown in the second table 42 of FIG. 4. The initial alignment 301 may be needed to support switching at fragment boundaries between versions A / B of the content using byte range requests. Also, the encoder output shown in the left-most table 41 of FIG. 4 is mostly different in size for the A and B variables due to differences in the applied watermarks, e.g. 16393 bytes and 16235 bytes for GOP#0 for watermark A and watermark B, respectively. Padding may be applied to make the sizes of A / B equal, e.g. 16393 bytes for GOP#0, so that byte requests to access fragment (N) use the same "start-end" byte range for both the A and B versions. The variables after initial alignment may still be formatted as H.264 or HEVC fragments, e.g. in an elementary stream (ES). The initial padding typically needs to remain present in the final container format used during OTT streaming, most commonly (fragmented) MP4 or TS.

[0081]

[0085] The variables of the GOP fragments may be converted 302, for example, from H264 or HEVC format to another container and packet format, for example MP4, fragmented MP4 or CMAF container format with TS fragments. The result of this conversion is shown in the third table 43 of Fig. 4, where the groups of pictures GOP#0...GOP#10 have been converted to fragments Frag#0...Frag#10, respectively, and for example the variables of Frag#0 have a length of 17051 bytes. The fragments Frag#0...Frag#10 may be similar to the fragments f1...f4 of the example of Fig. 1, and the variables are similar to the variables V of the example of Fig. 1. A and V B may be similar to:

[0082]

[0086] The fourth table 44 of Figure 4 shows the result of encoding 303 the symbol index to a variable length, as shown in table 45. Additional padding may be applied to the fragment to encode position information. Additional padding may be added equally to both the A / B versions of the fragment to encode temporal information. This allows position information to be encoded that can usually be obtained from the filename (index number or timestamp) and is not available in a byte range request.

[0083]

[0087] For example, to encode a symbol index for 32 positions, a maximum of 31 bytes of padding would be required when using the following modulo arithmetic: mod0(N) = size0(N) MODULO 32, where size0 is the size of fragment N after initial alignment, for example as shown in the third table of FIG. 4; - padding(N) = ( 32 + SymbolIndex(N) - mod0(N) ) MODULO 32; - size1(N) = size0(N) + padding(N), where size1 is the size of fragment N after additional padding, for example as shown in the fourth table of FIG.

[0084]

[0088] Recovery of location information, for example at the CDN edge, may be performed upon receiving a byte range request. The size of the request, carefully adjusted by earlier padding, may be used to determine the encoded location, i.e., symbol index, for the requested fragment N, using the following modulo arithmetic: - SymbolIndex(N) = size1(N) MODULO 32

[0085]

[0089] For example, a byte range request may be received for Frag#3, which has a length of 19139 in the fourth table of Figure 4. The symbol index for this Frag#3 can be obtained by computing 19139 MODULO 32, resulting in SymbolIndex=3. For the requester requesting this byte range, the watermark message previously determined was "ABBBAABAABBBABABAABBBAAAAABABBBA". At symbol index 3 of this watermark message, symbol B is indicated, and hence the variable to be returned in response to the byte range request is the B variable of the MP4 fragment.

[0086]

[0090] In the above example, the fragment length (size in bytes) may indicate the temporal position of fragment n. This may be formulated as the position of fragment n being defined by a function of the length of fragment n: position[n] = function(length[n]), where the function may be, for example, modulo M, resulting in the following equation in this example: position[n] = length[n] modulo M.

[0087]

[0091] Some length values ​​may be assigned to be invalid, e.g., those that map to a location greater than the maximum value. Use of an invalid length value may signal an error and may be logged, especially when requesting a variable. For example, an error may be signaled if function(length[n]) > MAX, where MAX is a predefined value known to be invalid. Such a security measure may be used to detect invalid and potentially illegitimate attempts to obtain variables, e.g., by a hacker.

[0088]

[0092] When subsequent variables have equal length, the complete file may be requested for a single valid length value. For example, if the first fragment mapping to the first location is 12000 bytes in length, an attacker may request byte ranges from 0 to 12000, 12000 to 24000, 24000 to 36000, 36000 to 48000, etc. Since all lengths are the same and valid, these requests may be serviced as if it were the first fragment.

[0089]

[0093] As a countermeasure against requesting subsequent fragments using the same length value, the length of one or more variables may be changed to the length by the offset of the variables, effectively changing the time position as well. The position may then be expressed as a function of the start-offset, the length, and optionally a secret (key): position[n] = function(length[n], offset[n], optional secret).

[0090]

[0094] Some offset-length pairs (or corresponding position values) may be assigned to be invalid. For example, similar to the above example where no offset is used, if function(length[n], offset[n], optional secret) > MAX, an error may be signaled and / or logged. With such a countermeasure, the attack described above is likely to fail.

[0091]

[0095] When applying the offset, the first call typically has an offset of 0, but subsequent calls may have different offsets. The function(length[n], offset[n], secret) may involve a cryptographic hash function or encryption, in addition to a function such as the modulo M function described above. The position of fragment n may thus be obtained using position[n] = hash(length[n], offset[n], secret) modulo M in this example.

[0092]

[0096] The secret can be system-wide, per distributor, or per content. The CDN typically must know the corresponding secret in order to process a content request.

[0093]

[0097] The processing steps for determining the adjusted length need to be performed in order. Note that the start offset of the current fragment depends on the length of the previous fragment. In pseudocode, the processing may include the following steps for obtaining the time position including the offset: offset[0] = 0; find padding[0] which makes function(length[0]+padding[0], offset[0], secret) == 0; offset[1] = offset[0] + length[0] + padding[0]; find padding[1] which makes function(length[1]+padding[1], offset[1], secret) == 1; ...; offset[i] = offset[i-1] + length[i-1] + padding[i-1]; find padding[i] which makes function(length[i]+padding[i], offset[i], key) == i.

[0094]

[0098] When using a byte-range request, the request may include a start-offset (offset[0] in the above example) and a length (or start-offset and end-offset). From this, the start-offset or end-offset may be used as an indicator for, or to obtain about, the temporal position or the requested fragment.

[0095]

[0099] When the start-offset is 0, the time position may be mapped to position[0] = 0 by default. When the start-offset is non-zero, i.e., there is data before the first fragment (e.g., a header), the preceding section (e.g., a header) may be padded if necessary. In the case of an end-offset, the current fragment may be padded to make the end-offset point to the correct position.

[0096]

[0100] In an embodiment, it may be assumed that the start-offset is used to indicate the position as follows: position[n] = function(offset[n], secret). The offset for the next fragment may typically be expressed as offset[n+1] = offset[n] + length[n] (both may be given in the byte range request), and therefore may be calculated as position[n+1] = function(offset[n] + length[n], secret). Herein, it may be required that position[n+1] = position[n] + 1 or position[n+1] = 0 if position[n] is the last position in the bounded sequence.

[0097]

[0101] The codecs used in the above examples should not be construed as limiting the scope of this disclosure. Other codecs may be used, such as one of the following: There have been two main audio / video codecs in the past decade: AVC (H.264) and VP9. These two are being supplanted by HEVC (H.265) and AVI, respectively. VP9 can now be used with MP4 as part of the Common Media Application Format (CMAF).

[0098]

[0102] HTTP Live Streaming (HLS) will support fragmented MP4 (fMP4) files in the form of Common Media Application Format (CMAF). This MPEG-ratified media format, which is based on the ISO Base Media File Format (ISOBMFF), commonly known as MP4 (MPEG-4 Part 12 or ISO / IEC 14496-12), builds on this basic baseline format of the MPEG-4 standard to enable fragmented or segmented streaming of MP4 files using a byte range addressing scheme. CMAF is currently MPEG-A Part 19 or ISO / IEC 23000-19.

[0099]

[0103] CMAF is intended to be codec-agnostic, which means that it can be used with either AVC or HEVC, and potentially AVI.

[0100]

[0104] One or more embodiments of the present disclosure may be implemented as a computer program product for use with a computer system. The program(s) of the program product may define the functions of the embodiments (including the methods described herein) and may be embodied on various computer-readable storage media. The computer-readable storage media may be non-transitory storage media. Exemplary computer-readable storage media include, but are not limited to, (i) non-writable storage media in which information may be permanently stored (e.g., a read-only memory device in a computer, such as a CD-ROM disk readable by a CD-ROM drive, a ROM chip, or any type of solid-state non-volatile semiconductor memory), and (ii) writable storage media in which changeable information may be stored (e.g., a hard disk drive or any type of solid-state random access semiconductor memory, flash memory). The following is a summary of the claims as originally filed: [C1] Video Fragment (f 1 ...f 4 ) to two or more variables (V A ,V B ), the method comprising: Fragmenting (101) a video content (10) into a sequence of fragments; watermarking (102) the plurality of fragments to create two or more variants of each of the plurality of fragments, wherein the two or more variants of a fragment are watermarked using different watermarks; adjusting (104) the lengths of the two or more variables for at least one of the fragments to the same adjusted length, wherein the adjusted length indicates a temporal position of the two or more variables of the at least one of the fragments relative to variables of other fragments in the sequence of fragments. A method comprising: [C2] The method of C1, wherein the adjustment of length comprises adding padding data to one or more of the variables of the at least one of the fragments. [C3] The method of any one of claims 1 to 2, further comprising equalizing the lengths of the two or more variables for each of the fragments prior to adjusting the lengths. [C4] The method of C3, wherein the equalizing of lengths comprises adding padding data to one or more of the variables. [C5] A method according to any one of C1 to C4, wherein the adjustment in length results in the length of the variable of at least one of the fragments being longer than the length of the variable of a preceding fragment in the sequence of fragments. [C6] The method of claim 5, wherein the variable length of at least one of the fragments is a predefined number of data units, e.g. one data unit, longer than the variable length of the preceding fragment in the sequence of fragments, the data unit being preferably a byte. [C7] A method according to any one of claims 1 to 6, wherein the same or related watermark used to watermark the variable of one fragment is used to watermark the variable of another fragment. [C8] The method of any one of C1 to C7, wherein the temporal position is defined as a position within a limited number of possible positions repeated in time, and the adjusted length reflects the position of a variable having the adjusted length within the limited number of possible positions. [C9] The method of C8, wherein the temporal position of the variable is derivable from a length of the variable modulo the limited number of possible positions. [C10] The method according to any one of claims 1 to 9, wherein the watermarking is A / B watermarking for ABR video content. [C11] The method according to any one of C1 to C10, wherein the temporal position of one or more of the two or more variables is derivable from an offset of the variable. [C12] Video fragments for delivery to requesters (f 1 ...f 4 ) variable (V A ,V B ), the method comprising: Receiving (201) a request for all or a portion of a video content that has been fragmented into a sequence of fragments, wherein a plurality of the fragments have been watermarked to create two or more variants of each of the plurality of the fragments according to any one of claims C1 to C11. determining (202) a temporal position of the two or more variables of a fragment relative to variables of other fragments in the sequence of fragments; selecting (203) for each of the plurality of fragments one variable from the two or more variables based on the determined temporal location and an identifier of the requestor, where the identifier defines which of the two or more variables to select for each fragment based on the temporal location. A method comprising: [C13] The method of claim 12, wherein the temporal position is defined as a position within a limited number of possible positions repeated in time, and the temporal position is determined from a length of the variable modulo the limited number of possible positions. [C14] The method of any one of claims 12 to 13, wherein the request is received in the form of a byte range request. [C15] The method of any one of C12 to C14, further comprising detecting an out-of-bounds request, indicating that the request is made on an incorrect or non-existent variable. [C16] The method according to any one of C12 to C15, wherein the determination of the temporal position is further based on an offset of one or more of the two or more variables. [C17] The method of C16, wherein the offset is received in the request. [C18] The method according to any one of C12 to C17, wherein the determination of the time position is further based on a secret. [C19] A variable preprocessor module configured to execute the method according to any one of C1 to C11. [C20] A head-end system comprising a variable pre-processor module as described in C19. [C21] A watermark embedder module configured to execute the method according to any one of C12 to C18. [C22] A CDN server comprising a watermark embedder module according to C21.

Claims

1. A video fragment (f) obtained from fragmenting the video content (10). 1 . . . f 4 ), the method comprising: A plurality of said video fragments (f 1 . . . f 4 ) each of two or more variables (V A , V B and watermarking (102) the plurality of said video fragments to create a plurality of variants (A, B), wherein the two or more variants of a video fragment are watermarked using different watermarks (A, B). The two or more variables (V A , V B ) to the same adjusted length (104); The method, characterized in that the adjusted length indicates a temporal position of the two or more variables of the at least one of the video fragments compared to variables of other video fragments in the sequence of the video fragments.

2. The method of claim 1 , wherein the adjustment of a length comprises adding padding data to one or more of the variables of the at least one of the video fragments.

3. The method of claim 1 or 2, further comprising equalizing the lengths of the two or more variables for each of the video fragments before adjusting the length to the adjusted length indicative of the temporal position of the two or more variables of the at least one of the video fragments.

4. The method of claim 3 , wherein the equalizing of lengths comprises adding padding data to one or more of the variables.

5. A method according to any one of claims 1 to 4, wherein the adjustment of length results in the length of the variable of at least one of the video fragments being longer than the length of the variable of a preceding video fragment in the sequence of the video fragments.

6. The method of claim 5 , wherein the length of the variable of the at least one of the video fragments is a predefined number of data units longer than the length of the variable of the preceding video fragment in the sequence of video fragments.

7. A method according to any one of claims 1 to 6, wherein the same or related watermark used to watermark the variables of one video fragment is used to watermark the variables of another video fragment.

8. 8. The method of claim 1, wherein the temporal position is defined as a position within a limited number of possible positions repeated in time, and the adjusted length reflects the position of a variable having the adjusted length within the limited number of possible positions.

9. The method of claim 8 , wherein the time position of the variable is derivable from a length of the variable modulo the limited number of possible positions.

10. The watermarking is an A / B watermarking for adaptive bitrate (ABR) video content, the A / B watermarking comprising: A ) by using the first watermark (A) to obtain each video fragment (f 1 . . . f 4 ) and watermarking a second variable (V B The method according to any one of claims 1 to 9, further comprising watermarking said video fragment with a second watermark (B) to obtain a first watermark (B) of said video fragment.

11. The method of any one of claims 1 to 10, wherein the temporal position of one or more of the two or more variables is derivable from an offset of the variable.

12. Video fragments for delivery to requesters (f 1 . . . f 4 ) variable (V A , V B ), the method comprising: Receiving (201) a request for all or a part of a video content fragmented into a sequence of video fragments, wherein a plurality of said video fragments are watermarked to create two or more variables of each of said plurality of said video fragments according to any one of claims 1 to 11. determining (202) a temporal position of the two or more variables of a video fragment relative to variables of other video fragments in the sequence of the video fragments; selecting (203) for each of the plurality of said video fragments a variable from the two or more variables based on the determined temporal position and the requestor identifier; A method comprising:

13. 13. The method of claim 12, wherein the temporal position is defined as a position within a limited number of possible positions repeated in time, and the temporal position is determined from a length of the variable modulo the limited number of possible positions.

14. The method of claim 12 or 13, wherein the request is received in the form of a byte range request.

15. The method of any one of claims 12 to 14, further comprising detecting an out-of-bounds request, indicating that the request is made on an incorrect or non-existent variable.

16. The method according to any one of claims 12 to 15, wherein the determination of the temporal position is further based on an offset of one or more of the two or more variables.

17. The method of claim 16 , wherein the offset is received in the request.

18. The method according to any one of claims 12 to 17, wherein the determination of the time position is further based on a secret.

19. A variable pre-processor module configured to carry out the method according to any one of claims 1 to 11.

20. A head-end system comprising the variant pre-processor module of claim 19.

21. A watermark embedder module adapted to carry out the method according to any one of claims 12 to 18.

22. A CDN server comprising the watermark embedder module of claim 21.

Citation Information

Patent Citations

  • Information processing device, information processing method and program

    JP2012065258A

  • Content supply device, content supply method, program, terminal device, and content supply system

    JP2015080164A

  • Content segmentation of watermarking

    US20140019767A1

  • Content Segment Variant Obfuscation

    US20180352307A1

  • Method and system for watermarking content prior to fragmenting

    WO2015009159A1