Method and system for providing content to a recipient device
10241720 ยท 2019-03-26
Assignee
Inventors
Cpc classification
H04N21/23892
ELECTRICITY
G06F3/0655
PHYSICS
H04N21/8456
ELECTRICITY
International classification
H04N21/2389
ELECTRICITY
Abstract
The invention relates to a computer-implemented method for providing content to a particular recipient device of a plurality of recipient devices. Copies of one or more content elements of the content are generated and one or more of the copies are modified to obtain modified copies of the content elements. The content elements, including the one or more modified copies of the content elements, are stored in a storage. Selection information is transmitted to the particular recipient device in response to a request for providing the content. The selection information prescribes to the recipient device the modified copy to be retrieved by the recipient device for substantially each content element for which a modified copy is available.
Claims
1. A computer-implemented method for providing content to a particular recipient device of a plurality of recipient devices, the method comprising the steps of: generating copies of multiple content elements of the content to be provided to the recipient device; modifying one or more of the copies of the content elements to obtain modified copies of the content elements; storing the content elements, including the one or more modified copies of the content elements, in a storage; and customizing a sequence of content elements for the recipient device by transmitting selection information to the recipient device in response to a request for providing the content, the selection information prescribing to the recipient device for each of one or more content elements for which a modified copy is available, which copy of said content element or which modified copy available for said content element the recipient device should retrieve; wherein the step of modifying the copies of the one or more content elements comprises the step of providing different watermarks in different copies of a content element and wherein the selection information prescribes to the recipient device, for each of one or more content elements for which a watermarked copy is available, which copy of said content element or which watermarked copy available for said content element the recipient device should retrieve.
2. The method according to claim 1, wherein the step of modifying the copies of one or more content elements comprises the step of encrypting different copies of a content element under a different key and wherein the selection information prescribes to the recipient device, for each of one or more content elements for which an encrypted copy is available, which encrypted copy available for said content element the recipient device should retrieve.
3. The method according to claim 1, wherein the copies of the content elements comprise copies for different encoding characteristics of a content element in order to provide the content using an adaptive streaming protocol.
4. The method according to claim 1, wherein the step of storing the content elements comprises the step of storing the content elements in separate files or storing the content elements in a single file comprising means for accessing the content elements in the file.
5. The method according to claim 1, wherein the storage storing the content elements is contained in a server and the method further comprises the step of receiving requests for content elements from the recipient device at the server in response to transmitting the selection information, wherein the number of requests for content elements received at the server from the recipient device retrieving the contents is less than the number of content elements stored in the storage.
6. The method according to claim 1, further comprising the steps of destructuring references to the content elements in the selection information.
7. A system for providing content to a particular recipient device of a plurality of recipient devices over a network, wherein the system comprises a processor operatively coupled to a memory and a non-transient computer readable medium having computer readable instructions stored therein, which when executed by the processor, cause the processor to: generate copies of multiple content elements of the content to be provided to the recipient device; modify one or more of the copies of the content elements to obtain modified copies of the content elements; store the content elements, including the one or more modified copies of the content elements, in a storage; and customizing a sequence of content elements for the recipient device by transmitting selection information to the recipient device in response to a request from the recipient device, the selection information prescribing to the recipient device, for each of one or more content elements for which a modified copy is available, which copy of said content element or which modified copy available for said content element the recipient device should retrieve; wherein the instructions further cause the processor to provide different watermarks in different copies of a content element and wherein the selection information prescribes to the recipient device, for each of one or more content elements for which a watermarked copy is available, which copy of said content element or which watermarked copy available for said content element the recipient device should retrieve.
8. The system according to claim 7, wherein the processor is arranged to encrypt different copies of a content element under a different key and wherein the selection information prescribes to the recipient device, for each of one or more content elements for which an encrypted copy is available, which encrypted copy available for said content element the recipient device should retrieve.
9. The system according to claim 7, wherein the system comprises a plurality of encoders configured for providing different encoding characteristics for different copies of at least one content element and wherein the system is configured to provide the content using an adaptive streaming protocol.
10. The system according to claim 7, wherein the storage is configured to store the content elements in separate files or as a single file comprising means for accessing the content elements in the file.
11. The system according to claim 7, wherein the system is further configured for destructuring references to the content elements in the selection information.
12. A non-transitory computer readable medium storing a data structure that comprises selection information configured for enforcing a recipient device to retrieve a customized set of modified content elements of streaming content to be rendered by the recipient device.
13. A recipient device comprising a processor operatively coupled to a memory and a non-transient computer readable medium having computer readable instructions stored therein, which when executed by the processor, cause the processor to process a data structure that comprises selection information configured for enforcing the recipient device to retrieve a customized set of modified content elements of streaming content to be rendered by the recipient device, wherein the data structure comprises a lookup table or a reference to a lookup table, the lookup table indicating different references to the modified content elements for different time indications and wherein the processor is configured to request the modified content elements over a network using the one or more different references at the indicated time indications using the lookup table.
14. The method of claim 1, further comprising generating the selection information.
15. The system of claim 7, wherein the processor is further arranged to generate the selection information.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) In the drawings:
(2)
(3)
(4)
(5)
(6)
(7)
DETAILED DESCRIPTION OF THE DRAWINGS
(8)
(9) The infrastructure 1 employs a head-end 5 comprising a streaming server 6 receiving input from a pre-processing module 7. Streaming server 5 comprises a storage (see
(10) The pre-processing module 7 comprises an input for receiving clear content and comprises a content modifier CM 8. The output of the pre-processing module 6 is connected to the input of the streaming server 6.
(11)
(12) The architecture diagram of
(13) It should be noted that in the alternative embodiment the chunk creation may precede the generation of different quality levels.
(14) Subsequently, one or more of the chunks is modified to generate two or more modified copies of a chunk using content modifier CM 8 in
(15) The above-described operations may be performed in one or more pre-processing modules 7 of the head-end 5. The one or more pre-processing modules 7 may or may not be part of the streaming server 6.
(16) The chunks, including the one or more modified copies the chunks, are then stored in a storage accessible to the streaming server 6.
(17) The operation of the system is now described in further detail with reference to
(18) First the original content is processed and the processing result is stored in the storage. To that end, the content is made available at two quality levels and these are split into chunks in a way that seamless transition between chunks of different quality levels are enabled. In the embodiment of
(19) The subsequent chunk modification step converts each quality level chunk (e.g. q.sub.1.c.sub.3) into two modified chunks (m.sub.1.q.sub.1.c.sub.3 and m.sub.2.q.sub.1.c.sub.3). The modification may be the addition of a watermark symbol where two related modified chunks (e.g. m.sub.1.q.sub.i.c.sub.j and m.sub.2.q.sub.i.c.sub.j) contain two different watermark symbols but represent the same content at different quality levels. In the example of
(20) At the start of the streaming session, the recipient device downloads selection information in the form of a description file (in the format of an M3U playlist) that contains one or more ordered lists of media URL references to media files (each media file contains a single chunk of content) that the recipient device can fetch. With the content chunks prepared as described above, the streaming server generates the selection information to obtain a unique content file to a specific receiver. The duration value of a content chunk is defined prior to segmentation and is stored in the playlist in EXT-X-TARGETDURATION tag. All the streaming content recipient devices use the content URL references to obtain various parts of the content. A variant playlist is generated to enable the recipient device to retrieve the appropriate quality level. The variant playlist refers to further playlists with direct references to modified content chunks. By selecting a unique sequence of modified content chunks, the adaptive streaming system can construct a unique content file for a particular streaming content recipient device.
(21) For example, the adaptive streaming server 6 in
(22) In case the modification is the encryption with a key K.sub.1 or K.sub.2, the DRM/CA system client in the streaming content recipient device issues the appropriate key sequence to decrypt the specific sequence of modified (encrypted) content chunks. In the example, the key sequence is K.sub.1, K.sub.2, K.sub.1, K.sub.1. Combinations of watermarking and encryption can be addressed in the same way.
(23) In a variant implementation, the combination of water-marking and encryption is handled by the use of an additional chunk processing layer in the adaptive streaming content delivery system. This would introduce yet another stage in the content preparation process and in the selection information generation.
(24) It should be appreciated that switching between chunks should preferably be substantially seamless, so the chunks may need to be synchronised to enable seamless switching. Due to the synchronisation, implementations may vary the order in which the content preparation processes are performed, as long as the chunk synchronisation is maintained during the processing.
(25) It should further be noted that the requested sequence of quality levels can also be used for tracking purposes. The downside of this approach is that the chunk references might be served from a web cache of an intermediate node, which will not be visible to the head-end 5.
(26) The selection information playlists in the example of
(27) In the first content preparation step, chunk creation and chunk modification are performed as described with reference to
(28) The second step assigns a unique number to each chunk. For instance, a chunk with label c.sub.iq.sub.jm.sub.k can be assigned number 4i+2j+k. It should be noted that it may then still be straight-forward for an attacker to guess which chunk numbers contain the same content. For example, in
(29) In the third step, each chunk is assigned a (pseudo)random number. Renumbering is done by selecting a pseudorandom permutation , and applying this to the unique number of each chunk. For example, in the above figure we have that (0)=55 and (1)=12. In this way, an attacker cannot predict which content chunks contain the same piece of content. It is possible to make the permutation unique for each piece of (original) content, by seeding a pseudorandom permutation generator with e.g. the original filename.
(30) Whereas in the embodiment of
(31) Storing content chunks in this manner provides for a slightly different approach for presenting individual recipient devices with customized sequences of content chunks while still enabling caching of one or more content chunks.
(32) Suppose that a recipient device requests content chunks in the form of a RESTful URL: http://video.foo.com/NBA.ism/QualityLevels(400000)/Fragments (video=610275114) to request content delivery from a server. The values in the URL represent encoded bit rate (400000) and the fragment start offset (610275114) expressed in an agreed-upon time unit (e.g. 100 nanoseconds. These values are known from a client manifest obtained from the server. As the URL is generated in the recipient device and the parameter fields are linked to the decoding steps of the content, a slightly different mechanism is used to implement the proposed watermarking scheme. The server issues selection information that contains a chunk name lookup table or a reference to a chink name lookup table. This enables the recipient device to replace the filename (NBA.ism in the above example) for a particular content chunk characterised by its start time and duration or end time with the chunk name (e.g. NBA023343.ism) and provide a table that maps timestamps to chunk names. The chunk name lookup table can be individualised by the server to map the sequence of timestamps to a unique sequence of chunk names for watermarked chunks.
(33) The following examples illustrate the operation of this content delivery method.
(34) A recipient device 2A issues a URL: http://video.foo.com/NBA.ism/QualityLevels(400000)/Fragments (video=610275114). The server returns selection information in the form of a chunk name lookup table for a sequence 0110 of watermarking symbols:
(35) TABLE-US-00001 609275114 NBA182912.ism 610275114 NBA023343.ism 611275114 NBA963713.ism 612275114 NBA119992.ism
The chunk name lookup table is then used by the recipient device 2A to request four content chunks using the following URLs: 1. http://video.foo.com/NBA182912.ism/QualityLevels(400000)/Frag ments(video=609275114) 2. http://video.foo.com/NBA023343.ism/QualityLevels(400000)/Frag ments(video=610275114) 3. http://video.foo.com/NBA963713.ism/QualityLevels(400000)/Frag ments(video=611275114) 4. http://video.foo.com/NBA119992.ism/QualityLevels(400000)/Frag ments(video=612275114)
(36) Another recipient device 2B may issue an identical URL: http://video.foo.com/NBA.ism/QualityLevels(400000)/Fragments (video=610275114). The server returns selection information in the form of a chunk name lookup table for a different sequence 0010 of watermarking symbols:
(37) TABLE-US-00002 609275114 NBA182912.ism 610275114 NBA939921.ism 611275114 NBA963713.ism 612275114 NBA119992.ism
The chunk name lookup table is then used by the recipient device 2A to request four content chunks using the following URLs: 1. http://video.foo.com/NBA182912.ism/QualityLevels(400000)/Frag ments(video=609275114) 2. http://video.foo.com/NBA939921.ism/QualityLevels(400000)/Frag ments(video=610275114) 3. http://video.foo.com/NBA963713.ism/QualityLevels(400000)/Frag ments(video=611275114) 4. http://video.foo.com/NBA119992.ism/QualityLevels(400000)/Frag ments(video=612275114)
(38) In the second case the second timeslot references a different chunk name. At the server the chunk name is mapped to a particular content element. However, the third and fourth time slot references are common to the requests for both recipient devices 2A, 2B, such that the server and one of the recipient devices may benefit from previous caching of the third and fourth content elements in an intermediate node in the network 3 of
(39) Whereas in the above example relating to Microsoft Smooth Streaming quality levels are not applied, it should be appreciated that this would simply add another layer to the example without deviating from the primary mechanism for defining customizable sequences of content chunks in the server.
(40)
(41) One embodiment of the invention may be implemented as a program product for use with a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory) on which alterable information is stored. The computer program may be run on a processor in the head-end 5, preferably in the streaming server 6.