Method and system for distributing an audiovisual content
11523156 · 2022-12-06
Assignee
Inventors
- Thierry Trolez (Cesson-Sevigne, FR)
- Marc Baillavoine (Cesson-Sevigne, FR)
- Julien Villeret (Cesson-Sevigne, FR)
- Jérôme Vieron (Cesson-Sevigne, FR)
Cpc classification
H04L67/568
ELECTRICITY
H04L67/02
ELECTRICITY
H04N21/2343
ELECTRICITY
H04N21/234
ELECTRICITY
International classification
H04N21/258
ELECTRICITY
H04N21/239
ELECTRICITY
H04L67/02
ELECTRICITY
Abstract
A method for distributing an audiovisual content to a terminal is disclosed. The content is received by the terminal in the form of a succession of consecutive segments, each segment being distributed to the terminal following a transmission of a request by the terminal and being obtained by an application of a workflow to a portion of the content. The method executed by the terminal comprises, for each segment: obtaining a list of processing operations representing the workflow; running through the list and, for each processing operation, choosing a module in a set of modules able to execute the processing operation and adding an identifier composed of an address and a port number of a module chosen in a request; the identifier appearing first in the request corresponding to a first module for which the request is intended; for each processing operation, adding to the request information representing the portion of the content and information representing configuration parameters of the corresponding module; and transmitting the request to the first destination module in order to launch the execution of the workflow.
Claims
1. A method for distributing an audiovisual content stored or produced live by a source to a display terminal in an audiovisual distribution system, said content being received by the terminal in the form of a succession of consecutive files, referred to as segments, each segment being distributed to the terminal following a transmission of a request by said terminal and being obtained by an application of a workflow of at least one processing operation on a portion of audiovisual content, wherein the method comprises a procedure for launching the workflow executed by the terminal or by an intermediate device situated between the terminal and the workflow comprising, for each segment: obtaining a list of the at least one processing operation representing the workflow to be applied to the portion of the audiovisual content in order to obtain said segment, the workflow being defined responsive to a profile selected in a manifest comprising a set of profiles according in particular to transmission and processing constraints obtained by said terminal or the intermediate device, whereby the transmission and processing constraints comprise limitations in hardware or software which limit an ability of at least one operation of a series of predefined processing operations to be properly applied to the audiovisual content; running through the list and, for each processing operation, choosing a processing module in a set of a plurality of processing modules, each module being able to execute said processing operation and adding an identifier composed of an address and a port number of the processing module chosen in a request; the identifier appearing first in the request corresponding to a first processing module for which said request is intended; for each processing operation, adding, to the request, (1) a content identifier identifying the portion of the content in the request that the workflow is to be applied to and (2) a configuration identifier and values of configuration parameters of the corresponding processing module, the configuration parameters having been obtained responsive to in particular the profile; and transmitting said request to a first destination processing module in order to launch the execution of the workflow.
2. The method according to claim 1, wherein the workflow is defined for each segment also from commands supplied by a user or automatically by equipment measuring performances of the audiovisual distribution system.
3. The method according to claim 1, wherein each processing module for which said request is intended deletes its identifier of said request and retransmits the request to a new destination processing module in said workflow corresponding to the identifier appearing first in the request thus modified if, following said deletion, at least one identifier remains in said request, each processing module processing data corresponding to the portion of the content to be processed by the workflow as soon as these data are made available by the source or by a preceding processing module in the workflow.
4. The method according to claim 1, wherein the first processing module for which the request is intended is the first processing module in the workflow in the order of application of the processing operations of the workflow, each processing module retransmitting the request to the processing module following it in the workflow, said request containing the data to be processed by the processing module following it in the workflow.
5. The method according to claim 1, wherein the first processing module for which the request is intended is the last processing module in the workflow in the order of application of the processing operations of the workflow, each processing module retransmitting the request to the processing module preceding it in the workflow, each response to a request received by a processing module containing the data to be processed by said processing module supplied by the processing module preceding it in the workflow.
6. The method according to claim 5, wherein, prior to the transmission of the request to the processing module preceding it in the workflow, the current processing module checks whether it possesses the data that it must process or the data that it must transmit to the processing module following it in the workflow or to the terminal, the possession of said data by the current processing module cancelling the transmission of the request.
7. The method according to claim 1, wherein, when a request is received, each processing module checks that an identifier concerning it appears first in said request before any other processing operation and initiates an error procedure in the case of absence of the identifier.
8. The method according to claim 3, wherein, when a request is received, each processing module recovers the information representing the configuration parameters concerning it in the request.
9. The method according to claim 1, wherein, when the procedure for launching the workflow is executed by an intermediate device, the intermediate device receives a first request in accordance with an audiovisual-content broadcasting protocol and executes the procedure of launching the workflow from information representing the portion of the content and information representing the profile contained in the first request.
10. The method according to claim 1, wherein, when the first processing module for which the request is intended is the last processing module in the workflow in the order of application of the processing operations of the workflow, each request is a request in accordance with the GET method of the GTTP or HTTPS protocol and, when the first processing module for which the request is intended is the first processing module in the workflow in the order of application of the processing operations of the workflow, each request is a request in accordance with the POST method of the HTTP or HTTPS protocol.
11. A device in an audiovisual content distribution system stored or produced live by a source to a display terminal, said content being received by said terminal in the form of a succession of consecutive files, referred to as segments, each segment being distributed to the terminal following a transmission of a request by said terminal and being obtained by an application of a workflow of at least one processing operation on a portion of audiovisual content, wherein the device comprises at least one processor configured to execute a procedure of launching the workflow comprising, for each segment: obtaining a list of the at least one processing operation representing the workflow to be applied to the portion of the audiovisual content in order to obtain said segment, the workflow being defined responsive to a profile selected in a manifest comprising a set of profiles according in particular to transmission and processing constraints obtained by said terminal or the intermediate device, whereby the transmission and processing constraints comprise limitations in hardware or software which limit an ability of at least one operation of a series of predefined processing operations to be properly applied to the audiovisual content; running through the list and choosing, for each processing operation, a processing module in a set of a plurality of processing modules, each module being able to execute said processing operation, and adding an identifier composed of an address and a port number of the processing module chosen in a request; the identifier appearing first in the request corresponding to a first processing module for which said request is intended; adding to the request, for each processing operation, (1) a content identifier identifying the portion of the content in the request that the workflow is to be applied to and (2) a configuration identifier and values of configuration parameters of the corresponding processing module, the configuration parameters having been obtained responsive to in particular the profile; and transmitting said request to a first destination processing module in order to launch the execution of the workflow.
12. A system for distributing an audiovisual content stored or produced live by a source to a display terminal, said content being received by said terminal in the form of a succession of consecutive files, referred to as segments, each segment being distributed to the terminal following a transmission of a request by said terminal and being obtained by an application of a workflow comprising at least one processing operation to a portion of said content, wherein the system comprises a device according to claim 11 and in that the system comprises, for each processing operation in the workflow, a set of processing modules able to execute said processing operation that may be chosen by said terminal, each processing module comprising at least one processor configured to: receive a request transmitted by said terminal or another processing module in the workflow, delete its identifier from said request; retransmit said request to another processing module in said workflow corresponding to the identifier appearing first in the request if, following said deletion, at least one identifier remains in said request; and process data corresponding to the portion of the content to be processed by the workflow as soon as these data are made available by the source or by a preceding processing module in the workflow.
13. Non-transitory storage medium, wherein they store a computer program comprising instructions for the implementation, by a device, of the method according to claim 1 when said program is executed by a processor of said device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The features of the invention mentioned above, as well as others, will emerge more clearly from a reading of the following description of an example embodiment, said description being given in relation to the accompanying drawings, among which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
DETAILED DISCLOSURE OF EMBODIMENTS
(9)
(10) At a first instant, corresponding to
(11) In the example in
(12) As is described hereinafter, the workflow 23 is defined dynamically for each segment by the terminal 20 or by an intermediate device that may be the CDN 21 or the server 22. For each segment, each processing module has been chosen from a set of candidate processing modules able to apply exactly the same processing. Thus, although from one segment to another the workflow 23 can apply strictly identical processing operations, each processing operation may be executed by different processing modules. For a given processing operation, a change in processing module may be motivated by a temporary non-availability of a processing module, for example when this processing module is already being used for generating another segment, by a malfunctioning of said processing module, by an overload of the computing unit that is to implement said processing module, by a choice of an operator who wishes to favour certain computing units rather than others, etc.
(13) At a second instant depicted in
(14) At a third instant, depicted in
(15) The examples described in
(16) Each entity making up the broadcasting system depicted in
(17)
(18) The system module 30 then comprises, connected by a communication bus 300: a processor or CPU 301; a random access memory RAM 302; a read only memory ROM 303; a storage unit or a storage medium reader, such as an SD card reader 304; a set of communication interfaces 305 enabling the system module 30 to communicate with other entities in the broadcasting system. In one embodiment, the communication interface 305 implements in particular a web server able to receive and generate HTTP or HTTPS (HTTP Secure) requests.
(19) The processor 301 is capable of executing instructions loaded in the RAM 302 from the ROM 303, from an external memory (not shown), from a storage medium such as an SD card, or from a communication network. When the entity (i.e. the terminal 20, the CDN 21, the server 22, the processing modules 231, 232, 233, 234, 233B, 233C or the source 24) is powered up, the processor 301 is capable of reading instructions from the RAM 302 and executing them. These instructions form a computer program causing the implementation, by the processor 301, of a method described in relation to
(20) All or part of the method described in relation to
(21) Hereinafter, we describe a method for distributing a content stored or produced live by the source 24 to the terminal 20. This distribution requires exchanges of requests and data between the various entities constituting the distribution system. In one embodiment, these exchanges use requests in accordance with the HTTP protocol or the HTTPS protocol. Other protocols suitable for this type of exchange could however be envisaged.
(22)
(23) According to one embodiment, the method in
(24) Prior to the implementation of the method in
(25) In a step 601, the system module 30 determines whether it must continue to play the current content or not, i.e. whether it must request a new segment, referred to as the current segment. This information has for example been supplied by a user of the terminal 20. If the system module 30 must not continue to play the content, the method ends in a step 602.
(26) Otherwise step 601 is followed by a step 603. During step 603, the system module 30 determines whether the workflow 23 used for the segment preceding the current segment must be modified. In other words, is it necessary to add, eliminate or replace a processing operation executed by the workflow 23 in order to obtain the current segment. In one embodiment, whenever there is a change of profile, the system module 30 considers that the workflow 23 must be modified. In step 603, the system module 30 selects a profile, referred to as the current profile, among the profiles of the manifest according to transmission and processing constraints obtained by the system module 30. The transmission constraints are for example a bitrate constraint measured by the system module 30. The processing constraints are for example a display capacity (i.e. a screen resolution) of the terminal 20, a number of images that can be decoded per second, etc. Once determined, the current profile is compared with the profile requested for the segment preceding the current segment. If the two profiles are identical, the system module 30 executes a step 605. If the two profiles are different or if the current segment is the first segment requested for the content, the system module 30 executes a step 604.
(27) In step 604, the system module 30 obtains a list of at least one processing operation representing the workflow 30 to be applied to a portion of the content in order to obtain the current segment. In this embodiment, this list is deduced from the profile selected in step 603. The system module 30 has for example a lookup table associating each profile that can be requested for a content, with a list of processing operations.
(28) Step 604 is followed by step 605. In step 605, the system module 30 uses either the list of processing operations defined in step 604 or the list of processing operations corresponding to the workflow applied to the segment preceding the current segment. In one embodiment, the list of processing operations used in step 605 is an ordered list in which the processing operations to be applied to the portion of the content in order to obtain the current segment appear in the reverse order in which these processing operations must be applied. For example, if the example of
(29) 1. packetising;
(30) 2. encoding;
(31) 3. processing A;
(32) 4. decoding.
(33) In step 605, the system module 30 determines whether each processing operation in the list of processing operations has been considered. If not, the system module 30 runs through the list from the first processing operation seeking the next processing operation not yet considered.
(34) In a step 606, the system module 30 chooses a processing module (software or hardware) in a set of processing modules able to execute said processing operation.
(35) In a step 607, the system module 30 adds an identifier composed of an address and a port number of the processing module chosen in the request. The request is an HTTP or HTTPS request. Each identifier is written following any identifier or identifiers already present in the request.
(36) Step 607 is followed by step 605, during which the system module 30 passes to the following processing operation in the list.
(37) When all the processing operations in the list have been considered, the system module 30 passes to a step 608. In step 608, the system module 30 adds to the request information representing the portion of the content in the request.
(38) In a step 609, the system module 30 obtains, for each processing operation, information representing configuration parameters of the processing module corresponding to said processing operation, the configuration parameters having been obtained from in particular the profile selected in step 603.
(39) In a step 610, the system module adds the information representing configuration parameters of each processing module in the request.
(40) Assuming that the workflow to be applied to the current segment is the workflow 23 in
(41) http://Address1:port1/Address2:port2/Address3:port3/Address4:port4/IDportion?Conf
(42) where Address1:port1 (and respectively Address2:port2, Address3:port3, Address4:port4) corresponds to the identifier (the address and the port number) of the processing module 231 (and respectively the identifier of the processing module 232, of the processing module 233 and of the processing module 234). IDportion corresponds to the information representing the portion of the content in the request. Conf corresponds to the information representing configuration parameters of each processing module.
(43) In one embodiment, the information Conf takes the following form:
(44) Conf1=NameConf1&Conf2=NameConf2&Conf3=NameConf3&Conf4=NameConf4
(45) where ConfN corresponds to an identifier of the configuration of a module N and NameConfN corresponds to a name of the text file, for example to the JSON (JavaScript Object Notation) or XML (Extensible Markup Language) format containing the configuration in detail that it is necessary to apply. These text files are for example known to each processing module.
(46) In another embodiment, the information Conf takes the following form:
(47) Conf1Param1=c1v1&Conf1Param2=c1v2&Conf1Param3=c1v3& . . . &
(48) Conf2Param1=c2v1&Conf2Param2=c2v2&Conf2Param3=c2v3& . . . &
(49) Conf3Param1=c3v1&Conf3Param2=c3v2&Conf3Param3=c3v3& . . . &
(50) Conf4Param1=c4v1&Conf4Param2=c4v2&Conf4Param3=c4v3
(51) where ConfNParamM corresponds to an identifier of the Mth parameter of the configuration of the processing module N and cNvM corresponds to a value of the Mth parameter of the configuration of the processing module N. Here the configuration is supplied in detail directly in the request.
(52) It should be stated however that, in the case of HTTP/HTTPS, there is a size constraint of 1024 characters per request. In order to get round this, it is possible to imagine for example a single parameter Conf=ConfName where ConfName represents a pointer to a configuration the detailed parameters of which are stored for example in a database shared by the processing modules.
(53) In a step 611, the system module 30 transmits the request to the first destination processing module in order to initiate the execution of the workflow and thus to cause the transmission of the current segment to the terminal 20.
(54) It should be noted that the broadcasting systems described in relation to
(55) It should be noted that the method described in relation to
(56) Up until now, we have considered that the procedure for launching the workflow was executed by the system module 30 of the terminal 20.
(57) In some cases, the system module 30 of the terminal 20 is not capable of generating requests according to the invention but only requests, referred to as conventional requests, in accordance with more conventional protocols such as requests in accordance with the HLS or MPEG-DASH protocols. In this case, the request according to the invention must be generated by an intermediate device between the terminal 20 and the workflow. This intermediate device must then receive each conventional request sent by the terminal 20 and form, from the conventional request, the request according to the invention. To do this, at each reception of a conventional request by the intermediate device, the intermediate device recovers information representing the profile requested in the conventional request and information representing the content portion requested in the conventional request. From this information, the intermediate device applies the procedure for launching the workflow. In step 601, the intermediate device considers routinely that a new segment must be requested. In step 603, the current profile is the profile found in the conventional request. The intermediate device then fulfils a role of request translator.
(58) In one embodiment, the intermediate device is a CDN, for example the CDN 21.
(59) In one embodiment, the intermediate device is the server 22.
(60) In one embodiment, the intermediate device is a web-server module situated between the server 22 and the workflow 23.
(61) In one embodiment, the workflow is defined according to the profile selected in step 603 but also according to commands received by the terminal 20 or the intermediate device. These commands are for example commands provided by an operator of the distribution system. These commands indicate that the workflow must comprise one or more given modules (for example a digital watermarking module). These commands may also be provided automatically by equipment measuring performances of the broadcasting system. For example, the equipment may measure a quality of a broadcast or of a plurality of broadcasts, a latency of a broadcast or of a plurality of broadcasts, a load on the devices or on the computing units using each processing module of a workflow or of a plurality of workflows. For example, if computing units using processing modules of a plurality of workflows are overloaded, the equipment may decide to modify the workflows in order to pass to processing modules executing processing operations that are less expensive in terms of computing costs.
(62) In one embodiment, the system module 30 of the terminal 20 or of the intermediate device does not have a lookup table but receives, from the CDN 20, a manifest comprising, for each possible profile, an ordered processing list to be applied in order to obtain a segment in accordance with this profile.
(63)
(64) As seen above, the request obtained by the procedure for launching the workflow was transmitted to the processing module of the workflow the identifier of which appears first in the request. In the embodiment described in relation to
(65) In a step 700, the system module 30 of the processing module 231 receives the request.
(66) In a step 701, the system module 30 of the processing module 231 checks that the identifier of the processing module 231 is indeed present in said request. If the identifier is not present, in a step 702 the system module 30 of the processing module 231 launches an error procedure. The error procedure consists for example in sending an error message to the device that executed the procedure for launching the workflow (i.e. the terminal 20, the CDN 21 or the server 22).
(67) If the identifier of the processing module 231 is present in the request, the system module 30 of the processing module 231 deletes its identifier from the request in a step 703.
(68) In a step 704, the system module 30 of the processing module 231 extracts the information representing its configuration parameters of the request.
(69) In a step 706, the system module 30 of the processing module 231 checks whether it is the first module in the workflow. To do this, for example, the system module 30 of the processing module 231 checks whether, following the deletion of its identifier, at least one identifier remains in the request.
(70) In this case, following the deletion of the identifier of the processing module 231, the identifiers of the processing modules 232, 233 and 234 remain in the request. In this case, in a step 707, the system module 30 of the processing module 231 transmits the request thus modified to the processing module the identifier of which now appears first in the request, that is to say the processing module 232.
(71) In a step 708, following the transmission of the request during step 707, the system module 30 of the processing module 231 receives data coming from the processing operation or operations executed by the processing module or modules preceding the processing module 231.
(72) In a step 710, the system module 30 launches the processing by the processing module 231 of the data received in step 708.
(73) In a step 712, the module 30 of the processing module 231 sends the processed data to the terminal 20. The data processed by the processing module 231 correspond to the current segment.
(74) The request generated during the procedure of launching the workflow is thus transmitted gradually to each module in the workflow 23. All the modules in the workflow execute the same steps of the method in
(75) When the system module 30 of the processing module 234 executes the method in
(76) Taking once again the example of the workflow 23 in
(77) http://Address1:port1/Address2:port2/Address3:port3/Address4:port4/IDportion?Conf
(78) The processing module 232 receives the request modified by the module 231, this request comprising the following sequence:
(79) http://Address2:port2/Address3:port3/Address4:port4/IDportion?Conf
(80) The processing module 233 receives the request modified by the modules 231 and 232, this request comprising the following sequence:
(81) http://Address3:port3/Address4:port4/IDportion?Conf
(82) Finally, the processing module 234 receives the request modified by the modules 231, 232 and 233, this request comprising the following sequence:
(83) http://Address4:port4/IDportion?Conf
(84) In one embodiment, the method described in relation to
(85) If the processing module 231 has these data, the system module 30 of the processing module 231 determines, in a step 711, whether these data have already been processed. If these data are processed, the system module 30 of the processing module 231 executes step 712. Otherwise the system module 30 executes step 710.
(86) In one embodiment, in step 704, once a processing module has recovered its configuration parameters, it deletes these configuration parameters from the request.
(87) Note that all the requests exchanged in the example execution of the method described in relation to
(88) Up until now, we have considered that the module the identifier of which appears first in the request issuing from the execution of the procedure for launching the workflow was the last processing module in the workflow in the order of execution of the processing operations on the content portion used for generating the current segment. In this embodiment, the request generated by the procedure for launching the workflow runs through the processing modules of the workflow in the reverse order of the processing operations and then the data to be processed in order to obtain the segment run through the workflow in the order of the processing operations.
(89) In one embodiment, the processing list used in step 605 is an ordered list in which the processing operations to be applied to the portion of the content for obtaining the current segment appear in the order in which these processing operations must be applied. In this embodiment, the processing module the identifier of which appears first in the request issuing from the execution of the procedure for launching the workflow is the first processing module in the workflow in the order of execution of the processing operations. If the workflow 23 in
(90) http://Address4:port4/Address3:port3/Address2:port2/Address1:port1/IDportion?Conf
(91) The first processing module to receive the request is therefore the processing module 234. Following the reception of the request, the system module 30 of the processing module 234 executes the method in
(92) In step 712, the system module 30 of the processing module 234 transmits the request modified in step 703 (and in step 704) to the following module in the workflow in the order of processing operations carried out by the workflow (i.e. the module 233). However, in this embodiment, the request comprises the data to be processed by the following processing module.
(93) Thus, when this request is received by the system module 30 of the processing module 233 (and respectively of the processing module 232 and 231), during the test of step 705, said system module 30 routinely determines that the processing module 233 (and respectively 232 and 231) already has the data. If these data have not previously been processed, the system module 30 of the processing module 233 (and respectively of the module 232 and 231) launches the processing of the data by the processing module 233 (and respectively by the processing module 232 and 231) in step 710. Since the data may already have been processed by the processing module 233 (and respectively by the processing module 232 and 231) following a reception of a previous request, step 711 can also be followed by step 712.
(94) The last processing module in the workflow in the order of application of the processing operations, that is to say the processing module 231, then transmits the segment in the direction of the terminal 20.
(95) Taking the example of the processing operation 23 in
(96) http://Address4:port4/Address3:port3/Address2:port2/Address1:port1/IDportion?Conf
(97) The processing module 233 receives the request modified by the module 234, this request comprising the following sequence:
(98) http://Address3:port3/Address2:port2/Address1:port1/IDportion?Conf
(99) The processing module 232 receives the request modified by the modules 234 and 233, this request comprising the following sequence:
(100) http://Address2:port2/Address1:port1/IDportion?Conf
(101) Finally, the processing module 231 receives the request modified by the modules 234, 233 and 232, this request comprising the following sequence:
(102) http://Address1:port1/IDportion?Conf
(103) In this embodiment, the requests exchanged are in accordance with the POST method of the HTTP/HTTPS protocol.
(104) In one embodiment, the procedure for launching the workflow is executed by the CDN 21 independently of any request from a terminal. In this embodiment, the CDN 21 anticipates any future requests coming from clients. The segments thus obtained are at least temporarily stored by the CDN 21.
(105) Up until now we have considered that the terminal 20 or the intermediate device requested the content segment by segment. The invention could however function identically if the terminal 20 or the intermediate device requested the content by group of segments.