WO2022069932A1 - Dispositif, système et procédé d'attribution de ressources pour diffusion vidéo en continu - Google Patents

Dispositif, système et procédé d'attribution de ressources pour diffusion vidéo en continu Download PDF

Info

Publication number
WO2022069932A1
WO2022069932A1 PCT/IB2020/061454 IB2020061454W WO2022069932A1 WO 2022069932 A1 WO2022069932 A1 WO 2022069932A1 IB 2020061454 W IB2020061454 W IB 2020061454W WO 2022069932 A1 WO2022069932 A1 WO 2022069932A1
Authority
WO
WIPO (PCT)
Prior art keywords
allocated resources
reserved
videos
resources
aggregate
Prior art date
Application number
PCT/IB2020/061454
Other languages
English (en)
Inventor
Alireza Ghasempoor
Original Assignee
Atciti Corp.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CA3094824A external-priority patent/CA3094824C/fr
Priority claimed from US17/037,989 external-priority patent/US11917224B2/en
Application filed by Atciti Corp. filed Critical Atciti Corp.
Publication of WO2022069932A1 publication Critical patent/WO2022069932A1/fr

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2405Monitoring of the internal components or processes of the server, e.g. server load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2385Channel allocation; Bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2408Monitoring of the upstream path of the transmission network, e.g. client requests

Definitions

  • Video streaming devices are often provided to streaming systems by client devices for streaming on- demand by video streaming devices.
  • allocation of resources for streaming the videos can be problematic. For example, planning for resources used to stream the videos must be made in a balanced manner, to balance expected demand for the videos with actual demand, such that bandwidths and/or resources allocated for streaming the videos are neither too high (e.g. which may lead to a waste of allocated bandwidth), nor too low (e.g. such that the streaming of the videos exceed an allocated bandwidth, which may lead to slow streaming of the videos and/or other videos).
  • FIG. 1 depicts a system for allocating resources for video streaming, according to non-limiting examples.
  • FIG. 2 depicts a block diagram of a computing device for allocating resources for video streaming, according to non-limiting examples.
  • FIG. 3 depicts a method for allocating resources for video streaming, and according to non-limiting examples.
  • FIG. 4 depicts an example of a method for allocating resources for video streaming being implemented in components of the system of FIG. 1, and according to non-limiting examples.
  • FIG. 5 further depicts the example of the method for allocating resources for video streaming being implemented in components of the system of FIG. 1, and according to non-limiting examples.
  • FIG. 6 further depicts the example of the method for allocating resources for video streaming being implemented in components of the system of FIG. 1, and according to non-limiting examples.
  • FIG. 7 further depicts the example of the method for allocating resources for video streaming being implemented in components of the system of FIG. 1, and according to non-limiting examples.
  • FIG. 8 further depicts the example of the method for allocating resources for video streaming being implemented in components of the system of FIG. 1, and according to non-limiting examples.
  • Video streaming devices are often provided to streaming systems by client devices for streaming on- demand by video streaming devices.
  • allocation of resources for streaming the videos can be problematic. For example, planning for resources used to stream the videos must be made in a balanced manner, to balance expected demand for the videos with actual demand, such that bandwidths and/or resources allocated for streaming the videos are neither too high (e.g. which may lead to a waste of allocated bandwidth), nor too low (e.g. such that the streaming of the videos exceed an allocated bandwidth, which may lead to slow streaming of the videos and/or other videos).
  • the situation may be exacerbated by a client device providing a video, which is shorter in length than a reserved allocated resource.
  • an operator of the client device may reserve allocated resources for streaming of a 10 second video, but provide only a 7 second video; as such, while allocated resources for streaming of a 10 second video may be reserved at the streaming system, actual allocated resources used at the streaming system may be for a 7 second video.
  • a computing device managing allocation of resources at the streaming system for example on behalf of the client devices, for a plurality of videos, which have respective actual allocated resources that are less than reserved allocated resources, may hence determine that reserving allocated resources at the streaming system, based on the allocated resources reserved by the client device, results in too many resources being allocated, which can lead to the aforementioned issues. As such the computing device may reserve allocated resources at the streaming system based on the actual allocated resources of the videos, however such allocation may be too low.
  • some streaming systems provide a plurality of discrete selectable allocated resources from which a computing device may select.
  • a selectable allocated resource, of the plurality of discrete selectable allocated resources may correspond to an amount of bandwidth reserved for streaming videos in a given time period, such as a month, and the like.
  • each of the plurality of discrete selectable allocated resources may comprise increasing discrete amounts of bandwidth that may be selected by the computing device for streaming the videos in a given time period.
  • the computing device may select a first reserved aggregate allocated resources from a plurality of discrete selectable allocated resources available at the streaming system.
  • the videos may be streamed, for example on-demand, or pushed, from the streaming system to video streaming devices, such personal computers, laptop computers, mobile devices, video display devices, electronic billboards, video kiosks, and the like.
  • video streaming devices such personal computers, laptop computers, mobile devices, video display devices, electronic billboards, video kiosks, and the like.
  • the selected first reserved aggregate allocated resources may be too high or too low. However, the selected first reserved aggregate allocated resources may be selected based on an estimated demand for the videos, for example an estimated number of streams of the videos, using the actual allocated resources for videos, over the given time period.
  • the selected first reserved aggregate allocated resources may be a value that corresponds to streaming of at least 2600 minutes of video per month (and may also be based on other factors, such as the resolution of the streaming of the videos, and the like), with for example, a factor to account for error, such as 10% (e.g. or 2860 minutes).
  • the selected first reserved aggregate allocated resources may be one of the plurality of discrete selectable allocated resources, which corresponds to 2860 minutes of streaming per month and/or one of the plurality of discrete selectable allocated resources, which corresponds to greater than 2860 minutes is greater than, and closest to, 2860 minutes of streaming per month.
  • the selected first reserved aggregate allocated resources is generally selected to be less than the reserved allocated resources for the videos. For example, if the total length of all the videos is 26 minutes, but the client devices have reserved 30 minutes, in total, for the videos (e.g. an aggregate difference of 4 minutes), the selected first reserved aggregate allocated resources is generally selected to be less than the 3000 minutes (e.g. 30 minutes times 100 times per month) and/or less than 3000 minutes plus 10% thereof (e.g. 3300 minutes). [0018] Furthermore, while allocated resources are described in this example with respect to minutes of videos, such allocated resources may be provided as any suitable parameter including, but not limited, bits and/or bytes of data to be streamed, for example for a given time period.
  • the computing device generally monitors used resources for streaming the videos to the video-playing devices from the streaming system; for example, the computing device may receive reports from the streaming system that indicate used resources.
  • the used resources exceeding the first reserved aggregate allocated resources e.g. demand for the videos was higher than estimated
  • the streaming system may stop streaming the videos once the used resources meet or exceed the first reserved aggregate allocated resources; however, even when the streaming system continues to stream the videos, the streaming system may apply additional restrictions and/or penalties for streaming the videos (e.g. streaming at slower speeds, increasing cost, and the like).
  • the computing device may determine that the used resources are within a threshold value of the first reserved aggregate allocated resources (and/or is higher than the first reserved aggregate allocated resources), and, in response, select second reserved aggregate allocated resources, from the plurality of discrete selectable allocated resources, for streaming the videos to the video-playing devices.
  • select second reserved aggregate allocated resources is generally based on the respective differences between the reserved allocated resources and the actual allocated resources for the videos, such that, for example, the second reserved aggregate allocated resources does not exceed the reserved allocated resources of the videos (e.g. which may also take into account an estimated number of streams of the videos in a given time period for the second reserved aggregate allocated resources, and the like).
  • the selected second reserved aggregate allocated resources may be selected similar to the selected first reserved aggregate allocated resources, but based on a larger number of streams per month than initially estimated, but still limited by the reserved allocated resources and the actual allocated resources, and/or an aggregate difference therebetween.
  • An aspect of the present specification provides a method comprising: determining, at a computing device, respective differences between reserved allocated resources and actual allocated resources for videos provided to a streaming system by client devices; selecting, via the computing device, at the streaming system, first reserved aggregate allocated resources, from a plurality of discrete selectable allocated resources available at the streaming system, the first reserved aggregate allocated resources selected based on the actual allocated resources for the videos, the first reserved aggregate allocated resources for streaming the videos to video-playing devices; monitoring, via the computing device, used resources for streaming the videos to the video-playing devices from the streaming system; and in response to determining, via the computing device, that the used resources are within a threshold value of the first reserved aggregate allocated resources: selecting, via the computing device, second reserved aggregate allocated resources, from the plurality of discrete selectable allocated resources, for streaming the videos to the video-playing devices, the second reserved aggregate allocated resources selected based on the respective differences between the reserved allocated resources and the actual allocated resources for the videos.
  • a device comprising: a communication interface configured to communicate with a streaming system; and, a controller configured to: determine respective differences between reserved allocated resources and actual allocated resources for videos provided to the streaming system by client devices; select, via the communication interface, at the streaming system, first reserved aggregate allocated resources, from a plurality of discrete selectable allocated resources available at the streaming system, the first reserved aggregate allocated resources selected based on the actual allocated resources for videos, the first reserved aggregate allocated resources for streaming the videos to video-playing devices; monitor, via the communication interface, used resources for streaming the videos to the video-playing devices from the streaming system; and in response to determining that the used resources are within a threshold value of the first reserved aggregate allocated resources: select, via the communication interface, second reserved aggregate allocated resources, from the plurality of discrete selectable allocated resources, for streaming the videos to the videoplaying devices, the second reserved aggregate allocated resources selected based on the respective differences between the reserved allocated resources and the actual allocated resources for the videos.
  • a further aspect of the present specification provides a non-transitory computer- readable medium comprising instructions that, when executed by a processor, causes the processor to implement a method comprising: determining respective differences between reserved allocated resources and actual allocated resources for videos provided to a streaming system by client devices; selecting at the streaming system, first reserved aggregate allocated resources, from a plurality of discrete selectable allocated resources available at the streaming system, the first reserved aggregate allocated resources selected based on the actual allocated resources for the videos, the first reserved aggregate allocated resources for streaming the videos to video-playing devices; monitoring, used resources for streaming the videos to the video-playing devices from the streaming system; and in response to determining that the used resources are within a threshold value of the first reserved aggregate allocated resources: selecting second reserved aggregate allocated resources, from the plurality of discrete selectable allocated resources, for streaming the videos to the video-playing devices, the second reserved aggregate allocated resources selected based on the respective differences between the reserved allocated resources and the actual allocated resources for the videos.
  • FIG. 1 depicts a system 100 for allocating resources for video streaming.
  • the various components of the system 100 are in communication via any suitable combination of wired and/or wireless communication links, and communication links between components of the system 100 are depicted in FIG. 1 , and throughout the present specification, as double-ended arrows between respective components; the communication links may include any suitable combination of wireless and/or wired links and/or wireless and/or wired communication networks, and the like.
  • the system 100 comprises a computing device 101 for allocating resources for video streaming.
  • the system 100 comprises a streaming system 103 in communication with the computing device 101 , an integer number “N” of client devices 105-1,... 105-N, and an integer number “P” of video-playing devices 107-1,... 107-P.
  • the client devices 105-1,... 105-N will be interchangeably referred to hereafter, collectively, as the client devices 105 and, generically, as a client device 105. This numbering scheme will be used throughout the present specification.
  • the video-playing devices 107-1,... 107-P will be interchangeably referred to hereafter as the video-playing devices 107 and/or as a video-playing device 107.
  • the computing device 101 generally comprises any suitable number of servers, cloud computing devices, personal computers, laptop computers, and the like, for allocating resources for video streaming, for example at the streaming system 103, and which may be performed on behalf of the client devices 105.
  • the computing device 101 may comprise a client device 105 and/or the computing device 101 may comprise a video-playing device 107.
  • the devices 101, 105, 107 are depicted as being different from one another, in some examples, functionality of two or more of the devices 101, 105, 107 may be combined.
  • a client device 105 may comprise a video-playing device 107, and vice versa.
  • the computing device 101 is different from the streaming system 103, and in this specific example, the system 100 includes at least one client device 105 that is different from the computing device 101, and at least one videoplaying device 107 from a client device 105.
  • the computing device, the streaming system 103, at least one client device 105 and at least one video playing device 107 are all different from each other.
  • the streaming system 103 is generally understood to host the videos 115, but is not otherwise tasked with advertising the videos 115; indeed entities and/or users associated with the client devices 105 and the video playing devices 107, the computing 101 is understood to be associated with managing the videos 115 (e.g. and not the streaming system 103).
  • the computing device 101 and the streaming system 103 are understood to be different from television streaming systems which advertise and provide television shows, movies, and the like; for example, such television streaming systems do not generally include client devices which reserve resources for videos, where reserved allocated resources and actual allocated resources for videos, provided to a streaming system by client devices, are different.
  • the streaming system 103 generally comprises any suitable number of servers, cloud computing devices, and the like, which may store and stream videos, as described in more detail below.
  • the streaming system 103 may perform other functions, such as hosting websites, and the like, which may act as an interface between the streaming system 103 and the computing device 101 and the client devices 105.
  • the streaming system 103 comprises a site engine 109, which may be used to receive and store videos, for example at a memory 111 (e.g. which may include one or more memories provided in the form of one or more databases, and which may be internal and/or external to the streaming system 103).
  • the streaming system 103 further comprises a video streaming engine 113 for providing videos 115-1... 115-Q (e.g. as depicted, as stored at the memory 111) to the video-playing devices 107.
  • the videos 115-1... 115-Q are referred to hereafter as the videos 115 and/or a video 115.
  • the streaming system 103 may comprise other engines to perform other functionality thereof, for example billing engines, and the like. In some examples, the functionality of the engines 109, 113 may be combined into one (or more engines).
  • the term “engine” refers to hardware (e.g., a processor, such as a central processing unit (CPU) an integrated circuit or other circuitry) or a combination of hardware and software (e.g., programming such as machine- or processor-executable instructions, commands, or code such as firmware, a device driver, programming, object code, etc. as stored on hardware).
  • Hardware includes a hardware element with no software elements such as an application specific integrated circuit (ASIC), a Field Programmable Gate Array (FPGA), etc.
  • a combination of hardware and software includes software hosted at hardware (e.g., a software module that is stored at a processor-readable memory such as random access memory (RAM), a hard-disk or solid-state drive, resistive memory, or optical media such as a digital versatile disc (DVD), and/or implemented or interpreted by a processor), or hardware and software hosted at hardware.
  • software hosted at hardware e.g., a software module that is stored at a processor-readable memory such as random access memory (RAM), a hard-disk or solid-state drive, resistive memory, or optical media such as a digital versatile disc (DVD), and/or implemented or interpreted by a processor
  • hardware e.g., a software module that is stored at a processor-readable memory such as random access memory (RAM), a hard-disk or solid-state drive, resistive memory, or optical media such as a digital versatile disc (DVD), and/or implemented or interpreted by a processor
  • the streaming system 103 may comprise the computing device 101 (e.g. as a component of the site engine 109, and the like).
  • the client devices 105 may comprise any suitable device configured to provide a video 115 to the streaming system 103 for streaming.
  • the client devices 105 may communicate with the computing device 101 via the streaming system 103 (e.g. via the site engine 109) and/or the streaming system 103 may act as an interface between the client devices 105 and the computing device 101.
  • the client devices 105 may comprise personal computers, laptop computers, mobile devices, and/or any other suitable type of devices including, but not limited to, servers, cloud computing devices, and the like.
  • the client devices 105 may access a website at the streaming system 103 (e.g.
  • the site engine 109 hosted by the site engine 109) via a respective local browser application and/or engine installed at the client devices 105, to provide and/or upload a video 115 to the streaming system 103 (e.g. for storage at the memory 111 and for streaming to the video-playing devices 107).
  • a client device 105 may upload a video 115 (or videos 115) to the streaming system 103 and/or a client entity may request that the entity associated with the computing device 101 generate and provide a respective video 115 (e.g. in which case, the computing device 101 may act as a proxy client device 105 on behalf of such a client entity).
  • a client device 105 may reserve allocated resources for the video 115, but actual allocated resources for the video 115 may be less than reserves allocated resources.
  • the computing device 101 e.g. via a website provided via the site engine 109 may prompt the client device 105 to select a length of a video 115 to be uploaded, for example from a plurality of fixed predetermined lengths, such as 5 seconds, 10 seconds, 15 seconds, 20 seconds, 25 seconds, and the like.
  • the client device 105 may select a predetermined length, which is greater than, or equal to, a length of the video 115, and upload the video 115.
  • the selected predetermined length may be associated with a respective cost, it is understood that the selected predetermined length is generally used for allocated streaming resource planning by the computing device 101. Furthermore, as the video 115 may be less than the selected predetermined length, the difference between the actual length and the selected predetermined length may be used by the computing device 101 for allocated streaming resource planning, as described in more detail below.
  • the video-playing devices 107 may comprise personal computers, laptop computers, mobile devices, video display devices, video kiosks, and/or any suitable device to which a video 115 may be streamed. Such streaming may occur on demand, for example via a video-playing device 107 accessing a website (e.g. via a respective local browser applications and/or engine installed at the video-playing devices 107 accessing the site engine 109) to select a video and/or videos for streaming and which, once selected, are streamed to a video-playing device 107 via the video streaming engine 113.
  • a video-playing device 107 may include a mobile device (e.g. a smart-phone, and the like) using a locally installed application (e.g. an “app”) to request and receive videos streamed thereto from the streaming system 103, for example on-demand.
  • a video-playing device 107 may comprise a video display device, and the like, such as a device, which includes a display screen installed in a public space, and which may include, but is not limited to, electronic billboards installed in outdoor spaces, video kiosks installed in indoor public spaces, and the like. However, such electronic billboards, video kiosks and the like may be installed in any suitable space, indoor or outdoor, public or not private, and the like.
  • the streaming system 103 may be configured to stream videos 115 provided by the client devices 105 to such a video-playing device 107 via pushing (e.g. rather than on demand) for example in a loop.
  • Such video display devices may be operated by the same entity operating the computing device 101, and/or another entity.
  • streaming of the videos 115 may occur on-demand and/or via pushing.
  • streaming of the videos 115 has been described with respect to specific types of the video-playing device 107 requesting the videos 115 on-demand (e.g. pulling), or receiving the videos 115 via pushing, pushing or pulling of the videos 115 may occur at any suitable type of video-playing device 107.
  • videos 115 may be pushed to a personal computer, laptop computer, mobile device, and the like, upon such a device accessing a website via a browser and/or opening an app.
  • videos 115 may be requested by a video display device, which includes an electronic billboard, a video kiosk, and the like.
  • the system 100 includes a number “N” of the client devices 105, a number “P” of video-playing devices 107, and a number “Q” of the videos 115.
  • the number “N” of the client devices 105 may comprise any suitable number of the client devices 105, and furthermore the number “N” of the client devices 105 may vary with time.
  • the computing device 101 generally manages streaming of the videos 115 and specifically manages allocation of resources for streaming of the videos 115 at the streaming system 103.
  • the computing device 101 may be operated by, and/or associated with, an entity that is providing a service to entities operating the client devices 105 and/or associated with the client devices 105.
  • the computing device 101 may be providing a service to the client devices 105 that targets streaming of the videos 115 to certain regions (e.g. geographic regions) based on location of the video-playing devices 107, such that viewers of the video-playing devices 107 may view content of the videos 115 based on region.
  • regions e.g. geographic regions
  • the videos 115 may include content that is particular to a given region, whether due to pre-determined licensing agreements, specific content in the videos 115, and the like; for example, a particular video 115 may include content pertaining to a store, a restaurant, a tourist attraction, and the like, located in a given region, and a client entity associated with a client device 105 may engage the entity associated with the computing device 101 to stream the particular video 115 to video-playing devices 107 in the given region.
  • Such regional targeting of video-playing devices 107 may occur by associating videos 115 with regions at the memory 111 (e.g. during an upload thereto) and the streaming system 103 determining a region in which a video-playing device 107 is located via an associated network address, and the like.
  • the number “N” of the client devices 105 may vary with time, based on numbers of client entities that engage, or disengage, the entity associated with the computing device 101 to provide respective videos 115.
  • the number “Q” of the videos 115 may vary with time, based on numbers videos 115 provided by the client devices 105.
  • the number “Q” of the videos 115 may be the same as the number “N” of the client devices 105 (e.g. each of the client devices 105 may provide a respective video 115).
  • the number “Q” of the videos 115 may be larger than the number “N” of the client devices 105 (e.g. one or more of the client devices 105 may provide more than one respective video 115).
  • the number “Q” of the videos 115 may be less than the number “N” of the client devices 105 (e.g.
  • the client devices 105 may engage the entity associated with the computing device 101 but may not have yet provided a respective video 115). Regardless, the number “Q” of the videos 115 may be any suitable number. [0041] Similarly, the number “P” of the video-playing devices 107 may vary with time, for example as the video-playing devices 107 access a website and/or execute an application for receiving the videos 115 and/or as the video-playing devices 107 come on-line and/or go off-line. Regardless, the number “P” of the video-playing devices 107 may be any suitable number.
  • the streaming system 103 may generally include a plurality of discrete selectable allocated resources 117-1....117-R(e.g. selectable allocated resources 117) from which the computing device 101 may select.
  • Each of the discrete selectable allocated resources 117 may correspond to a specific amount of streaming resources that may be reserved for streaming the videos 115, and each of the selectable allocated resources 117 may be different from others of the selectable allocated resources 117.
  • the discrete selectable allocated resources 117 may comprise lowest discrete selectable allocated resources 117, which is less than next discrete selectable allocated resources 117, which is less than yet next discrete selectable allocated resources 117, and so on.
  • the number “R” of selectable allocated resources 117 may be any suitable number of selectable allocated resources 117, depending on offerings that the streaming system 103 may make available to computing devices of entities using the streaming system 103 for streaming respective videos 115.
  • Values of the selectable allocated resources 117 are understood to be stored at a memory of the streaming system 103 (e.g. which may include, but is not limited to, the memory 111 and/or another memory) and accessed and/or provided to the computing device 101, for example upon request, and the like.
  • the discrete selectable allocated resources 117 may be provided per a given time period; for example, a value of a discrete selectable allocated resources 117 may comprise a number of bits and/or bytes and/or minutes per month reserved for streaming videos.
  • the streaming system 103 may provide the plurality of discrete selectable allocated resources 117, as a plurality of “packages” from which the computing device 101 may select to reserve associated streaming resources for streaming the videos 115 per month and/or any other suitable time period. Such packages may also include provisions for resolution of streaming of the videos 115, and the like. As will be described in more detail below, the computing device 101 generally initially selects one of the discrete selectable allocated resources 117, for example as a first reserved aggregate allocated resources, for a first given time period, which is generally based the actual allocated resources for the videos 115.
  • the streaming system 103 may negotiate use of network resources for performing streaming of all videos of all such entities (e.g. including the videos 115), for example by a network provider.
  • the streaming system 103 may respond in a manner that stops streaming of the videos 115 and/or reduces quality and/or resolution thereof and/or increases a cost to the computing device 101 for streaming the videos 115.
  • the computing device 101 is generally configured to select another of the discrete selectable allocated resources 117, as second reserved aggregate allocated resources for a second given time period, based on monitoring the used resources for streaming the videos 115, and differences between the reserved allocated resources and the actual allocated resources for the videos 115, as described in more detail below, for example via a resource allocation engine 119.
  • the computing device 101 can comprise any suitable computing device, including but not limited to one or more personal computers, laptops, servers, cloud computing devices, and the like. In some examples, where the computing device 101 may be used to generate videos 115 as a proxy client device 105, the computing device 101 include one or more of a graphics processing unit (GPU), a graphics processing device, a graphics processing engine, a video processing device, and the like.
  • the computing device 101 generally comprises: a controller 220; a memory 222 storing one or more applications 223, and a communication interface 224 (interchangeably referred to hereafter as the interface 224). While the memory 222 is depicted as internal to the computing device 101, the memory 222 may be external to the computing device 101 and the controller 220 may have access to the memory 222 via the interface 224.
  • the resource allocation engine 119 may generally comprise a combination of the controller 220 and the memory 222 storing the application 223, and the interface 224.
  • Each of the one or more applications 223 may be similar, but for a different mode of the computing device 101; for example, in one mode, the computing device 101 may allocate resources, as described herein, while in another mode a machine learning algorithm may be trained to implement functionality as describe herein.
  • the one or more applications 223 will be interchangeably referred to hereafter as the application 223.
  • the computing device 101 may include other suitable components, including, but not limited to, a display screen, an input device and the like, to enable an administrator to interact with the computing device 101; however, such an administrator may alternatively interact with the computing device 101 remotely via the interface 224.
  • suitable components including, but not limited to, a display screen, an input device and the like, to enable an administrator to interact with the computing device 101; however, such an administrator may alternatively interact with the computing device 101 remotely via the interface 224.
  • the interface 224 comprises any suitable wired or wireless communication interface configured to communicate with the streaming system 103 (and/or the client devices 105).
  • the interface 224 may communicate in a wired and/or wireless manner as desired including, but not limited using cables, Internet-based communication links, WiFiTM communication links, wide area networks, personal area networks, local area networks, and the like.
  • the controller 220 can comprise a processor and/or a plurality of processors, including but not limited to one or more central processors (CPUs) and/or one or more graphics processing units (GPUs) and/or one or more processing units; either way, the controller 220 comprises a hardware element and/or a hardware processor.
  • the controller 220 can comprise an ASIC (application-specific integrated circuit) and/or an FPGA (field-programmable gate array) specifically configured for allocating resources for video streaming.
  • the computing device 101 may preferably not be a generic computing device, but a device specifically configured to implement specific functionality for allocating resources for video streaming.
  • the computing device 101 and/or the controller 220 can specifically comprise a computer executable engine, such as the resource allocation engine 119, configured to implement functionality for allocating resources for video streaming.
  • the memory 222 can comprise a non-volatile storage unit (e.g. Erasable Electronic Programmable Read Only Memory (“EEPROM”), Flash Memory) and a volatile storage unit (e.g. random-access memory (“RAM”)).
  • EEPROM Erasable Electronic Programmable Read Only Memory
  • RAM random-access memory
  • Programming instructions that implement the functional teachings of the computing device 101 as described herein are typically maintained, persistently, in the memory 222 and used by the controller 220, which makes appropriate utilization of volatile storage during the execution of such programming instructions.
  • the memory 222 is an example of computer readable media that can store programming instructions executable on the controller 220.
  • the memory 222 is also an example of a memory unit and/or memory module and/or a non-volatile memory.
  • the memory 222 stores the application 223 that, when processed by the controller 220, enables the controller 220 and/or the computing device 101 to: determine respective differences between reserved allocated resources and actual allocated resources for videos provided to a streaming system by client devices; select, at the streaming system, first reserved aggregate allocated resources, from a plurality of discrete selectable allocated resources available at the streaming system, the first reserved aggregate allocated resources selected based on the actual allocated resources for videos, the first reserved aggregate allocated resources for streaming the videos to video-playing devices; monitor used resources for streaming the videos to the video-playing devices from the streaming system; and in response to determining that the used resources are within a threshold value of the first reserved aggregate allocated resources: select second reserved aggregate allocated resources, from the plurality of discrete selectable allocated resources, for streaming the videos to the video-playing devices, the second reserved aggregate allocated resources selected based on the respective differences between the reserved allocated resources and the actual allocated resources for the videos.
  • the application 223, and/or the resource allocation engine 119 may include numerical algorithms configured to implement the functionality as described above and/or to generate estimates of respective resources to be used to stream the videos 115, from the streaming system 103, in respective time periods, for example to assist in selecting the first reserved aggregate resources and the second reserved aggregate resources.
  • the application 223, and/or the resource allocation engine 119 may include machine learning models and/or algorithms, and the like, which have been trained to implement the functionality as described above and/or trained to generate estimates of respective resources to be used to stream the videos 115, from the streaming system 103, in respective time periods, for example to assist in selecting the first reserved aggregate resources and the second reserved aggregate resources, and/or any other suitable functionality of the computing device 101.
  • the one or more machine learning models and/or algorithms of the application 223 may include, but are not limited to: a deep-learning based algorithm; a neural network; a generalized linear regression algorithm; a random forest algorithm; a support vector machine algorithm; a gradient boosting regression algorithm; a decision tree algorithm; a generalized additive model; evolutionary programming algorithms; Bayesian inference algorithms, reinforcement learning algorithms, and the like. Any suitable machine learning algorithm and/or deep learning algorithm and/or neural network is within the scope of present examples.
  • the application 223 may include a machine learning training module, and the like, in which the computing device 101 receives input corresponding resources used at the streaming system 103 to stream the videos 115 (e.g. in a given time period), as well as any other suitable parameters (e.g. numbers of the videos 115, types of the video-playing devices 107, regions into which the videos 115 are streamed, and the like).
  • the streaming system 103, and the devices 105, 107 may have structure similar to the computing device 101, but adapted for their respective functionality and/or including various respective components for implementing such functionality.
  • the client devices 105 and the video-playing devices 107 may generally include display screens and input devices, and the like.
  • FIG. 3 depicts a flowchart of a method 300 for allocating resources for video streaming according to non-limiting examples.
  • the operations of the method 300 may correspond to machine readable instructions that are executed by the computing device 101, and specifically the controller 220 of the computing device 101.
  • the instructions represented by the blocks of FIG. 3 are stored at the memory 222 for example, as the application 223.
  • the method 300 of FIG. 3 depicts a flowchart of a method 300 for allocating resources for video streaming according to non-limiting examples.
  • the operations of the method 300 may correspond to machine readable instructions that are executed by the computing device 101, and specifically the controller 220 of the computing device 101.
  • the instructions represented by the blocks of FIG. 3 are stored at the memory 222 for example, as the application 223.
  • controller 220 and/or the computing device 101 and/or the system 100 are one way in which the controller 220 and/or the computing device 101 and/or the system 100 may be configured. Furthermore, the following discussion of the method 300 of FIG.
  • method 300 is referred to herein as “blocks” rather than “steps.”
  • the method 300 of FIG. 3 may be implemented on variations of the system 100, as well.
  • the controller 220 and/or the computing device 101 determines respective differences between reserved allocated resources and actual allocated resources for the videos 115 provided to the streaming system 103 by the client devices 105.
  • a client device 105 may provide a video 115 to the streaming system 103 and the computing device 101 may determine that the client device 105 selects reserved allocated resources for the video 115; for example, the client device 105 may select a given length and/or size of a video, from a plurality of available given lengths and/or given sizes, but the video 115 provided may be less than a selected given length and/or given size, thereby causing the computing device 101 to store, at a memory (e.g. the memory 222 or another suitable memory), the selected given length and/or given size and the actual length and/or given size, and determine the difference therebetween, which is also stored at the memory.
  • a memory e.g. the memory 222 or another suitable memory
  • the computing device 101 may store such items (e.g. values for the reserved allocated resources, actual allocated resources and a difference therebetween) at any suitable memory.
  • the computing device 101 when storing such items, causes the memory 222 (and the like) to undergo a tangible physical change. Indeed, storage of any items at the memory 222 (and the like), as described herein, causes the memory 222 to undergo a tangible physical change.
  • reserved allocated resources for a video 115 may comprise a reserved length of the video 115
  • actual allocated resources for the video 115 may comprise an actual length of the video 115.
  • a difference therebetween may correspond to a difference in the reserved length and the actual length.
  • the reserved and actual allocated resources may be in any suitable format including, but not limited to, a size of the video 115 (e.g. as indicated by numbers of bits and/or bytes of a video 115), with a difference therebetween in a similar and/or same format.
  • each of the reserved allocated resources may be selected from a plurality of discrete reserved allocated resources (e.g. the above described plurality of available given lengths, and the like).
  • the videos 115 may also be limited, by the computing device 101, and/or the site engine 109, to a given highest resolution (e.g. 720p and/or any other suitable resolution) and/or a converted to a given resolution, to prevent a client device 105 from selecting, for example, a given length of a video, but uploading a very high resolution video 115 (e.g. 8K), which would increase later usage of streaming resources.
  • a limitation of resolution may also occur due to a package selected by the computing device 101 at the streaming system 103 that limits videos to be streamed to a given resolution.
  • Such limits on resolution, and the like may also be incorporated into the reserved allocated resources and actual allocated resources (e.g.
  • selected lengths and actual lengths of videos 115 may be for a given resolution and/or smaller than such a given resolution).
  • the controller 220 and/or the computing device 101 may check the actual allocated resources of the video 115 against the reserved allocated resources to ensure that that the actual allocated resources of the video 115 does not exceed the reserved allocated resources. For example, when a client device 105 selects reserved allocated resources corresponding to 10 seconds for a video 115, the controller 220 and/or the computing device 101 (and/or the site engine 109) checks the length of the video 115 to ensure the video 115 does not exceed 10 seconds.
  • Similar checks on resolution of the video 115 may also occur.
  • the controller 220 and/or the computing device 101 may instruct a client device 105 to again select reserved allocated resources that is greater than, or equal to, the actual allocated resources of the video 115, and/or upload another video 115 that is less then, or equal to, initially selected reserved allocated resources.
  • the controller 220 and/or the computing device 101 determines a difference between reserved allocated resources and actual allocated resources for all the videos 115, and that the reserved allocated resources may be different for two or more of the videos 115, and furthermore the difference between reserved allocated resources and actual allocated resources may be may be different for two or more of the videos 115.
  • different videos 115 where 10 seconds may be reserved therefor may be of different lengths (e.g. videos 115 of 6 seconds, 7 seconds, 7.8 seconds, etc. may be provided, and/or any length up to 10 seconds).
  • the controller 220 and/or the computing device 101 may further determine a total of the differences between the reserved allocated resources and the actual allocated resources for the videos 115. At the block 302, the controller 220 and/or the computing device 101 may further determine a total of the reserved allocated resources and a total of the actual allocated resources.
  • the controller 220 and/or the computing device 101 selects, at the streaming system 103, first reserved aggregate allocated resources 117, from the plurality of discrete selectable allocated resources 117 available at the streaming system 103, the first reserved aggregate allocated resources 117 selected based on the actual allocated resources for the videos 115, the first reserved aggregate allocated resources 117 for streaming the videos 115 to video-playing devices 107, for example in a first time period.
  • the controller 220 and/or the computing device 101 may determine an aggregate length and/or size (e.g. in bits, bytes, and the like) of the actual allocated resources for the videos 115, and estimate a number of streams per given time period of the videos 115.
  • Such an estimate may initially be based on numbers of known videoplaying devices 107 to which the videos 115 may be pushed; for example, entities operating video display devices and/or electronic billboard and/or video kiosks may cooperate with the entity operating the computing device 101 to arrange for streaming of the videos 115 to the video display devices (e.g. and which may be based on regional locations of the video display devices), and/or the entity operating the computing device 101 may operate such video display devices.
  • entities operating video display devices and/or electronic billboard and/or video kiosks may cooperate with the entity operating the computing device 101 to arrange for streaming of the videos 115 to the video display devices (e.g. and which may be based on regional locations of the video display devices), and/or the entity operating the computing device 101 may operate such video display devices.
  • Such an estimate may be alternatively be based on a number of times an application for receiving the videos 115 (e.g. which may be provided by the entity operating the computing device 101) has been downloaded to mobile devices, and the like.
  • Such an estimate may be alternatively be based on a number of times a website for receiving the videos 115 has been accessed, and the like. However, such an estimate may be based on any suitable combination of such factors and/or other factors and/or provided via a machine learning algorithm, and the like.
  • the controller 220 and/or the computing device 101 selects, at the streaming system 103, first reserved aggregate allocated resources 117, from the plurality of discrete selectable allocated resources 117 based on the actual allocated resources for the videos 115.
  • an estimate of a number of times that the videos 115 may be streamed may be multiplied by the total of the actual allocated resources for the videos 115, and a closest one of the discrete selectable allocated resources 117, that is also greater than the total of the actual allocated resources for the videos 115, may be selected, by the controller 220 and/or the computing device 101, as the first reserved aggregate allocated resources 117.
  • the selection of the first reserved aggregate allocated resources 117 may further be based on a factor to account for error and/or variation in the estimates, such as 10%, and/or any other suitable factor (e.g. 5%, 15%, etc.), which may be predetermined and provisioned at the computing device 101 (e.g. in the application 223) by an administrator of the computing device 101, and/or dynamically determined using machine learning algorithms, and the like. For example, the estimate of a number of times that the videos 115 may be streamed, multiplied by the total of the actual allocated resources for the videos 115, may be further increased by the factor.
  • a factor to account for error and/or variation in the estimates such as 10%, and/or any other suitable factor (e.g. 5%, 15%, etc.), which may be predetermined and provisioned at the computing device 101 (e.g. in the application 223) by an administrator of the computing device 101, and/or dynamically determined using machine learning algorithms, and the like.
  • a plurality of estimates of a number of respective times that respective videos 115 may be streamed may be determined on a regional basis, based on locations of the video-playing devices 107 as described above, and the selection of the first reserved aggregate allocated resources 117 may be based on a total of such regional estimates. For example, actual allocated resources for the videos 115 for a first region may be multiplied by a first estimate of streams to video-playing devices 107 associated with the first region, and added to actual allocated resources for the videos 115 for a second region multiplied by a second estimate of streams to video-playing devices 107 associated with the second region; such estimates may occur for any suitable number of regions.
  • selection of the first reserved aggregate allocated resources 117 may be selected for a first given time period, for example a month, and the like.
  • controller 220 and/or the computing device 101 may store an indication of the first reserved aggregate allocated resources 117, for example at the memory 222.
  • the videos 115 may be available for streaming from the streaming system 103, via the video streaming engine 113, and the streaming system 103 provides the videos 115 to the video-playing devices 107, as described above.
  • the controller 220 and/or the computing device 101 monitors used resources for streaming the videos 115 to the video-playing devices 107 from the streaming system 103.
  • the streaming system 103 may provide data, reports, messages, and the like, to the controller 220 and/or the computing device 101, indicative of the resources used by the streaming system 103 to stream the videos 115.
  • Such data, and the like may indicate a number of minutes and/or bits and/or bytes of the videos 115 streamed in a given time period, which may be the same as, or less than the first given time period for which the first reserved aggregate allocated resources 117 were selected.
  • the streaming system 103 may provide such data periodically, for example, on an hourly basis, a weekly basis, a monthly basis and/or according to any other suitable time period and/or periodicity. Such data may further indicate regional streaming of the videos 115 and/or respective numbers of times individual videos 115 were streamed, and/or to which regions. Such data may alternatively be requested by the computing device 101.
  • the data, and the like may be provided as any suitable combination of parameters, which indicate resources used to stream the videos 115 including, but not limited to, an amount of bandwidth used to stream the videos 115, seconds and/or minutes streamed, an amount of bits and/or bytes streamed, and the like.
  • the data may be provided in any suitable format including, but not limited to, in a message (e.g. an email, and the like), a report, a databased and/or tabular format, and the like.
  • the streaming system 103 may provide such data to the controller 220 and/or the computing device 101 upon request by the controller 220 and/or the computing device 101.
  • the data enables the controller 220 and/or the computing device 101 to determine actual used resources for streaming the videos 115, which may be compared to the selected first reserved aggregate allocated resources 117.
  • the controller 220 and/or the computing device 101 determines whether the used resources are within a threshold value of the first reserved aggregate allocated resource 117. Such a determination may occur within a given time before an end of the first time period associated with the selected first reserved aggregate allocated resources 117 (e.g. to ensure that if the used resources are within a threshold value of the first reserved aggregate allocated resource 117, reserved aggregate allocated resources 117 are selected before a next time period commences, as described hereafter).
  • Such a threshold value may comprise any suitable threshold value, such as 10% of the first reserved aggregate allocated resource 117, and/or any other suitable threshold value (e.g. 5%, 15%, etc.), which may be predetermined and provisioned at the computing device 101 (e.g. in the application 223) by an administrator of the computing device 101, and/or dynamically determined using machine learning algorithms, and the like.
  • the threshold value may be based on an intermediate determination of the used resources (e.g. which may be determined from periodic receipt of the used resources at the computing device 101, prior to an end of the first given time period for which the first reserved aggregate allocated resources 117 were selected.
  • the controller 220 and/or the computing device 101 may determine a rate of change of the used resources and adjust the threshold value accordingly. For example, initially a threshold value of 10% may be selected, and, as a rate of change of the used resources increases or decreases, the threshold value may be increased or decreased from 10%.
  • the threshold value is used to determine whether or not to select another of the plurality of discrete selectable allocated resources 117, which is greater than the first reserved aggregate allocated resources 117, for a next given time period.
  • the first reserved aggregate allocated resources 117 may be maintained for a next time period (e.g. a next month).
  • a second reserved aggregate allocated resources 117 may be selected from the plurality of discrete selectable allocated resources 117.
  • the threshold value when a rate of change of the used resources is increasing, the threshold value may be increased to sooner change the selection of the plurality of discrete selectable allocated resources 117; however, when the rate of change of the used resources is decreasing, the threshold value may be decreased to later change the selection of the plurality of discrete selectable allocated resources 117.
  • the controller 220 and/or the computing device 101 may further determine whether, or not, the used resources are greater than the first reserved aggregate allocated resources 117, which may automatically trigger selection of second reserved aggregate allocated resources 117 (e.g. greater than the first reserved aggregate allocated resources 117) for a next time period (e.g. a next month).
  • a next time period e.g. a next month.
  • the controller 220 and/or the computing device 101 selects second reserved aggregate allocated resources 117, from the plurality of discrete selectable allocated resources 117, for streaming the videos 115 to the video-playing devices 107.
  • the second reserved aggregate allocated resources 117 may be selected based on the respective differences between the reserved allocated resources and the actual allocated resources for the videos 115 as described above. Such a selection of second reserved aggregate allocated resources 117 may also occur when the used resources are greater than the first reserved aggregate allocated resources 117 (e.g. which also leads to a “YES” decision at the block 308).
  • the second reserved aggregate allocated resources 117 is selected to be greater than the used resources.
  • the second reserved aggregate allocated resources 117 is further selected to be greater than total actual allocated resources for the videos 115 (e.g. multiplied by an updated estimate for streaming the videos 115), further taking into account the respective differences between the reserved allocated resources and the actual allocated resources for the videos 115 and, in particular, the total differences between the reserved allocated resources and the actual allocated resources for the videos 115.
  • the second reserved aggregate allocated resources 117 may be selected to be greater than total actual allocated resources for the videos 115 (e.g. multiplied by an updated estimate for streaming the videos 115), but less than total reserved allocated resources for the videos 115 (e.g. multiplied by the updated estimate for streaming the videos 115).
  • the updated estimates referred to above may be for a next time period, and/or a second time period for which the second reserved aggregate allocated resources 117 is selected (e.g. the second time period following the first time period for which the first reserved aggregate allocated resources 117 was selected), and may be based on demand for the videos 115 in the first time period and/or historical demand for the videos 115, which may be represented by the aforementioned used resources.
  • the first reserved aggregate resources 117 and the second reserved aggregate resources 117 may be further selected based on respective estimates of respective resources to be used to stream the videos 115, from the streaming system 103, in respective time periods.
  • the first reserved aggregate allocated resources 117 are selected for a first time period, and the second reserved aggregate allocated resources 117 are selected for a second time period following the first time period.
  • the time periods may, however, be any suitable length.
  • the controller 220 and/or the computing device 101 may determine that the used resources are not within the threshold value of the first reserved aggregate allocated resources (e.g. a “NO” decision at the block 308) for consecutives months such that the first reserved aggregate allocated resources 117 does not change for such consecutive months. However, in a last of such consecutive months, the controller 220 and/or the computing device 101 may determine that the used resources are within the threshold value of the first reserved aggregate allocated resources 117 (e.g.
  • first and second reserved aggregate allocated resources 117 may be any suitable time periods.
  • the total of the respective differences (e.g. multiplied by an updated estimate for streaming the videos 115) between the reserved allocated resources and the actual allocated resources for the videos 115 may added to the total actual allocated resources for the videos 115 (e.g. multiplied by the updated estimate for streaming the videos 115) and the second reserved aggregate allocated resources 117 may be selected to be greater than total actual allocated resources for the videos 115 (e.g. multiplied by an updated estimate for streaming the videos 115) but less than the total actual allocated resources for the videos 115 with the total respective differences added thereto (e.g. both multiplied by an updated estimate for streaming the videos 115).
  • the respective differences may be used to cap selection of the second reserved aggregate allocated resources 117.
  • the total actual allocated resources for the videos 115 with the total respective differences added thereto may be determined to represent a demand for the videos 115 (e.g. by the video-playing devices 107), which is “too high” such that the streaming service 103 may not effectively stream the videos 115 and/or at which (and/or above which), the computing device 101 (and/or an entity operating the computing device 101) may not be able to effectively manage streaming of the videos 115.
  • the video streaming engine 113 may be dynamically scaled to meet demand for the videos 115, the streaming service 103 may penalize streaming of the videos 115 based on the demand, as described above, leading to lower quality streaming, higher costs to the computing device 101, and the like.
  • the total actual allocated resources for the videos 115 with the total respective differences added thereto may represent a demand above which quality of the streaming decreasing, and/or some associated cost, is unacceptable for the computing device 101. While the term “unacceptable” is understood to be a relative term, the total actual allocated resources for the videos 115 with the total respective differences added thereto is further understood to represent an unambiguous representation of such unacceptability, and the like.
  • the total actual allocated resources for the videos 115 with the total respective differences added thereto may be adjusted to a capped amount and/or capped to capped allocated resources (e.g. which may be based on a predetermined capping factor, such as 10% less than the total actual allocated resources for the videos 115 with the total respective differences added thereto and/or any other suitable value).
  • a capped amount and/or capped allocated resources
  • Such a capped amount (and/or capped allocated resources) may also represent an amount above which demand for the videos 115 may be determined to be unacceptable, with the total respective differences added thereto, and adjusted by the predetermined capping factor, is understood to represent an unambiguous representation of such unacceptability.
  • the capped allocated resources may be set to the total actual allocated resources for the videos 115 with the total respective differences added thereto (e.g. the predetermined capping factor may be set to “0”).
  • the first reserved aggregate resources 117 is also less than the capped amount.
  • the method 300 may further comprise the controller 220 and/or the computing device 101 determining capped allocated resources, and the first reserved aggregate resources 117 and the second reserved aggregate resources 117 are selected to be less than the capped allocated resources, the capped allocated resources determined from the actual allocated resources and the respective differences between the reserved allocated resources and the actual allocated resources, adjusted by a predetermined capping factor.
  • the videos 115 remain available for streaming from the streaming system 103, via the video streaming engine 113, and the streaming system 103 provides the videos 115 to the videoplaying devices 107, as described above. Indeed, selection of the second reserved aggregate resources 117, in place of the second reserved aggregate resources 117, may occur without interruption of streaming of the videos 115.
  • the controller 220 and/or the computing device 101 in response to determining that the used resources are not within a threshold value of the first reserved aggregate allocated resources but are not greater than the first reserved aggregate allocated resources, (e.g. a “NO” decision at the block 308), at a block 310, the controller 220 and/or the computing device 101 continues to monitor the used resources at the block 306. Alternatively, and/or periodically, the controller 220 and/or the computing device 101 may again implement the blocks 302, 304, etc. in the event a number of the videos 115 change and/or changes occur to the respective differences between reserved allocated resources and actual allocated resources for the videos 115, for example to again select a reserved aggregate allocated resources 117, from the plurality of discrete selectable allocated resources 117 at the block 306.
  • the used resources may be less than the first reserved aggregate allocated resources 117 and also less than that a given one of the of the plurality of discrete selectable allocated resources 117, that is also less than the first reserved aggregate allocated resources 117.
  • the resources used to stream the videos 115 may have been overestimated during selection of the first reserved aggregate allocated resources 117, such that the used resources are not only less than the first reserved aggregate allocated resources 117, but are also lower than another one of the plurality of discrete selectable allocated resources 117 that is less than the first reserved aggregate allocated resources 117.
  • the method 300 may further comprise, the controller 220 and/or the computing device 101: in response to determining that the used resources are below a given one of the plurality of discrete selectable allocated resources 117, the given one of the plurality of discrete selectable allocated resources 117 below the first reserved aggregate allocated resources 117: selecting the given one of the plurality of discrete selectable allocated resources 117 for streaming the videos 115 to the video-playing devices 107.
  • a given one of the plurality of discrete selectable allocated resources 117 is selected that is greater than, but closest to, the used resources and/or an estimate of the resources to be used in a next time period as determined from then used resources.
  • one or more of the first reserved aggregate allocated resources 117 and the second reserved aggregate allocated resources 117 and the used resources may exceed the capped allocated resources described above.
  • the controller 220 and/or the computing device 101 may communicate with the client devices 105 to negotiate changes to one or more of the reserved allocated resources and the actual allocated resources, for example to negotiate streaming of lower quality versions of the videos 115 (e.g. to lower actual allocated resources), negotiate different lengths of the videos, negotiate an updated cost for streaming the videos 115 (e.g. based on increased demand), and the like.
  • the method 300 may further comprise, the controller 220 and/or the computing device 101: in response to determining that one or more of the first reserved aggregate allocated resources 117, the second reserved aggregate allocated resources 117 and the used resources exceeds capped allocated resources: communicating with the client devices 105 to negotiate changes to one or more of the reserved allocated resources and the actual allocated resources. Once the negotiation of the changes occurs, the controller 220 and/or the computing device 101 may select one of the plurality of discrete selectable allocated resources 117 in accordance with the negotiated changes.
  • FIG. 4, FIG. 5, FIG. 6 FIG. 7 and FIG. 8, depict the computing device 101 and/or the system 100 and/or portions of the system 100, with like components having like numbers.
  • FIG. 4, FIG. 5, FIG. 6 FIG. 7 and FIG. 8 it is understood that the remaining components of the system 100 are also present.
  • FIG. 4, FIG. 5, FIG. 6 FIG. 7 and FIG. 8 may be at least partially implemented by the resource allocation engine 119.
  • FIG. 4 depicts the computing device 101 determining (e.g. at the block 302 of the method 300) respective differences between reserved allocated resources and actual allocated resources for eight videos 115 provided to the streaming system 103 by the client devices 105.
  • a determination is represented graphically (e.g. with reserved allocated resources represented as arrows, and actual allocated resources and differences therebetween represented as boxes, with horizonal lengths thereof representing a size of allocated resources and/or a length and/or size of the videos 115, and the like), however the determination may generally be performed numerically.
  • the eight videos 115 are not depicted, it is understood that: four of the videos 115 have reserved allocated resources 415-1, corresponding to a first length (e.g. of the arrow indicating the reserved allocated resources 415-1), and selected from a plurality of discrete reserved allocated resources as described above; and another four of the videos 115 have reserved allocated resources 415-2, corresponding to a second length (e.g. of the arrow indicating the reserved allocated resources 415-2) greater than the first length, and selected from the plurality of discrete reserved allocated resources as described above.
  • the arrow representing the reserved allocated resources 415-2 is longer than the arrow representing the reserved allocated resources 415-1.
  • the reserved allocated resources 415-1, 415-2 are depicted as arrows with a horizontal length thereof representing a size and/or length of the respective videos 115.
  • the reserved allocated resources 415-1 may represent 10 seconds, and the like, reserved for four videos 115 (e.g. a reserved length), and the reserved allocated resources 415-2 may represent 20 seconds, and the like, reserved for the other four videos 115.
  • the videos 115 may be less than the respective reserved allocated resources 415 and/or less than the respective reserved lengths.
  • each of the reserved allocated resources 415 are four boxes that correspond to the eight example videos 115 (four for the respective reserved allocated resources 415- 1 and another four for the respective reserved allocated resources 415-2).
  • a “white” portion of each box under the reserved allocated resources 415 corresponds to respective actual allocated resources 416-1, 416-2, 416-3, 416-4, 416-5, 416-6, 416-7, 416-8 (e.g. actual allocated resources 416) of the eight videos 115, with a total horizontal length of each box being the same length as respective reserved allocated resources 415, and a respective horizontal length of actual allocated resources 416 corresponding to the actual size (e.g. length) of the respective videos 115.
  • a “shaded” portion of each box, extending past the actual allocated resources 416, corresponds to a respective difference 417-1, 417-2, 417-3, 417-4, 417-5, 417-6, 417-7, 417-8 (e.g. the differences 417 and/or a difference 417) between the reserved allocated resources 415 and the actual allocated resources 416.
  • the actual allocated resources 416-1, 416-2, 416-3, 416-4 and the respective differences 417-1, 417-2, 417-3, 417-4 are for four videos 115, which have a reserved allocated resource 415-1 (e.g. of 10 seconds, and the like); and the actual allocated resources 416-5, 416-6, 416-7, 416-8 and the respective difference 417-5, 417-6, 417-7, 417-8 are for four videos 115, which have a reserved allocated resource 415-2 (e.g. of 20 seconds, and the like).
  • a reserved allocated resource 415-1 e.g. of 10 seconds, and the like
  • the actual allocated resources 416-5, 416-6, 416-7, 416-8 and the respective difference 417-5, 417-6, 417-7, 417-8 are for four videos 115, which have a reserved allocated resource 415-2 (e.g. of 20 seconds, and the like).
  • the computing device 101 determines total reserved allocated resources 425 (e.g. a sum of the total lengths of the actual allocated resources 416 and the differences 417, and/or four times the length of the reserved allocated resources 415-1 plus four times the length of the reserved allocated resources 415-2).
  • total reserved allocated resources 425 e.g. a sum of the total lengths of the actual allocated resources 416 and the differences 417, and/or four times the length of the reserved allocated resources 415-1 plus four times the length of the reserved allocated resources 415-2).
  • the computing device 101 determines total actual allocated resources 426 (e.g. a sum of the actual allocated resources 416) and total differences 427 (e.g. a sum of the differences 417).
  • total actual allocated resources 426 e.g. a sum of the actual allocated resources 416
  • total differences 427 e.g. a sum of the differences 417.
  • the length of the total actual allocated resources 426 corresponds to a sum of the lengths of the actual allocated resources 416
  • the length of the total differences 427 corresponds to a sum of the lengths of the differences 417.
  • FIG. 5 depicts the computing device 101 selecting (e.g. at the block 304 of the method 300) first reserved aggregate allocated resources 117-1, from a plurality of discrete selectable allocated resources 117, available at the streaming system 103.
  • the plurality of discrete selectable allocated resources 117 comprises four discrete selectable allocated resources 117-0, 117-1, 117-2, 117-3, depicted graphically, with a respective length thereof indicating a respective size thereof.
  • Numbering of the plurality of discrete selectable allocated resources 117 begins at “0” to illustrate that while reserved aggregate allocated resources 117-1 may be selected, as described hereafter, one or more of the plurality of discrete selectable allocated resources 117 may be less than the first reserved aggregate allocated resources 117-1.
  • the four discrete selectable allocated resources 117 are depicted as aligned at a left end to show the relative sized thereof at respective right ends, and also relative to the total actual allocated resources 426 with, and without the total differences 427 added thereto (e.g. which are depicted laid out linearly with a left end thereof aligned with the left ends of the four discrete selectable allocated resources 117).
  • the total actual allocated resources 426 and the total differences 427 have been multiplied by an estimated number of streams of the respective eight videos 115 in a given time period.
  • the computing device 101 may initially estimate only two streams per month for the respective eight videos 115. While such an estimate is understood to be small compared to actual estimates of numbers of streams (e.g. when the system 100 is deployed in the field, the number of streams may be in the hundreds to thousands or higher), the estimate of two streams per month for the respective eight videos 115 is merely provided as an example to easily illustrate implementation of the method 300.
  • the total actual allocated resources 426 and the total differences 427 are graphically depicted twice (e.g. and shown end-to-end) such that the length of twice the total actual allocated resources 426 represents an estimate of the resources to be used by the streaming system 103 to stream the videos 115 in a given time period.
  • the lengths of the four discrete selectable allocated resources 117, relative to twice the total actual allocated resources 426, with twice the total differences 427 added thereto, is emphasized via dotted lines extending from the discrete selectable allocated resources 117.
  • the computing device 101 selects the first reserved aggregate allocated resources 117-1 (e.g. represented by “Selected” on the first reserved aggregate allocated resources 117-1).
  • the first reserved aggregate allocated resources 117-1 is selected based on the actual allocated resources 416 for the videos 115.
  • values for the four discrete selectable allocated resources 117 may be retrieved from the streaming system 103 by the computing device and numerically compared to the actual allocated resources 416 (e.g. multiplied by an estimate of numbers of streams per month, and the like, to compare to the total actual allocated resources 426).
  • the computing device 101 may transmit a communication 601 to the streaming system 103 indicating a selection of the first reserved aggregate allocated resources 117-1. Thereafter, as also depicted in FIG. 6, the streaming system 103 may stream the videos 115 to the video-playing devices 107.
  • the streaming system 103 may stream the videos 115 to the video-playing devices 107.
  • the streaming system 103 transmits and/or provides an indication 603 of used resources to the computing device 101, as described above.
  • the computing device 101 monitors (e.g. at the block 306 of the method 300) the used resources for streaming the videos 115 to the video-playing devices 107.
  • the indication 603 of the used resources may represent a number of seconds of the streamed videos 115 in a given time period, a number of streamed bits and/or bytes, and the like.
  • FIG. 7 depicts the computing device 101 comparing a value of the used resources 701 to the first reserved aggregate allocated resources 117-1 (e.g. a value of the used resources 701 determined via the indication 603).
  • the used resources 701 are depicted graphically, relative to the first reserved aggregate allocated resources 117-1, with their left ends aligned.
  • a threshold value 703 is depicted as a shaded box extending rightwards from the left end of the first reserved aggregate allocated resources 117-1.
  • the computing device 101 selects (e.g. at the block 310 of the method 300) second reserved aggregate allocated resources 117-2, from the plurality of discrete selectable allocated resources 117, for streaming the videos 115 to the video-playing devices 107.
  • computing device 101 selects the second reserved aggregate allocated resources 117-2 based on the respective differences 417 and, in particular the total differences 427. For example, as in FIG. 4, the computing device 101 compares the total actual allocated resources 426 (e.g. again using an estimate of two streams per month, but which may be adjusted based on the used resources 701) with the plurality of discrete selectable allocated resources 117, but now taking into account the total differences 427.
  • the total actual allocated resources 426 e.g. again using an estimate of two streams per month, but which may be adjusted based on the used resources 701
  • the total differences 427, added to the total actual allocated resources 426 are larger than the second discrete selectable allocated resources 117-2, but less than the third discrete selectable allocated resources 117-3.
  • the third discrete selectable allocated resources 117-3 may represented allocated resources that are too high as they exceed the total differences 427, added to the total actual allocated resources 426.
  • the computing device 101 selects the second discrete selectable allocated resources 117-2 as the second reserved aggregate allocated resources 117-2 to be used for the next time period.
  • the computing device 101 may alternatively select the second discrete selectable allocated resources 117-2 as the second reserved aggregate allocated resources 117-2 to be used for the next time period on the basis of the capped allocated resources 801.
  • the computing device 101 communicates with the streaming system 103, similar to as depicted in FIG. 6, to control streaming of the videos 115 according to the second reserved aggregate allocated resources 117-2.
  • Such selection has a tangible physical effect in the system 100, as such a selection may generally prevent the streaming system 103 from reducing resolution of the videos 115, increasing cost for streaming of the videos 115 (e.g. other than any increased cost for selection of the second reserved aggregate allocated resources 117-2 vs. the first reserved aggregate allocated resources 117-1), and the like.
  • a device, system and method for allocating resources for video streaming which may be used to select reserved aggregate allocated resources for streaming to prevent reduction in quality of streaming of videos by a streaming system, and the like.
  • computing devices described herein are sufficiently complex as to require their implementation on such computing devices and/or computing systems, and cannot, as a practical matter, be performed in the human mind.
  • computing devices described herein are understood to include electronic components, which provide speed, accuracy and complexity management that are not obtainable by human mental steps, in addition to the inherently digital nature of such operations.
  • a human mind cannot interface directly with computer memory, digital storage, and the like.
  • a human mind cannot transmit and/or receive electronic messages, electronically encoded video, electronically encoded audio, etc., among other features and functions set forth herein.
  • elements may be described as “configured to” perform one or more functions or “configured for” such functions.
  • an element that is configured to perform or configured for performing a function is enabled to perform the function, or is suitable for performing the function, or is adapted to perform the function, or is operable to perform the function, or is otherwise capable of performing the function.
  • the functionality of devices and/or methods and/or processes described herein can be implemented using pre-programmed hardware or firmware elements (e.g., application specific integrated circuits (ASICs), electrically erasable programmable read-only memories (EEPROMs), etc.), or other related components.
  • ASICs application specific integrated circuits
  • EEPROMs electrically erasable programmable read-only memories
  • the functionality of the devices and/or methods and/or processes described herein can be achieved using a computing apparatus that has access to a code memory (not shown), which stores computer-readable program code for operation of the computing apparatus.
  • the computer-readable program code could be stored on a computer readable storage medium, which is fixed, tangible and readable directly by these components, (e.g., removable diskette, CD-ROM, ROM, fixed disk, USB drive). Furthermore, it is appreciated that the computer-readable program can be stored as a computer program product comprising a computer usable medium. Further, a persistent storage device can comprise the computer readable program code. It is yet further appreciated that the computer-readable program code and/or computer usable medium can comprise a non-transitory computer-readable program code and/or non-transitory computer usable medium.
  • the computer-readable program code could be stored remotely but transmittable to these components via a modem or other interface device connected to a network (including, without limitation, the Internet) over a transmission medium.
  • the transmission medium can be either a non-mobile medium (e.g., optical and/or digital and/or analog communications lines) or a mobile medium (e.g., microwave, infrared, free-space optical or other transmission schemes) or a combination thereof.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

L'invention concerne un dispositif, un système et un procédé d'attribution de ressources pour diffusion vidéo en continu. Un dispositif détermine des différences respectives entre des ressources attribuées réservées et réelles pour des vidéos fournies à un système de diffusion en continu par des dispositifs clients, et sélectionne, au niveau du système de diffusion en continu, parmi une pluralité de ressources attribuées sélectionnables discrètes disponibles au niveau du système de diffusion en continu, des premières ressources attribuées agrégées réservées sur la base des ressources attribuées réelles pour les vidéos, les premières ressources attribuées agrégées réservées étant destinées à diffuser en continu les vidéos à des dispositifs de lecture vidéo. Le dispositif surveille des ressources utilisées pour diffuser en continu les vidéos aux dispositifs de lecture vidéo et, en réponse à la détermination du fait que les ressources utilisées sont en deçà d'une valeur seuil des premières ressources attribuées agrégées réservées : sélectionne, parmi la pluralité de ressources attribuées sélectionnables discrètes, des secondes ressources attribuées agrégées réservées sur la base des différences respectives entre les ressources attribuées réservées et les ressources attribuées réelles pour les vidéos.
PCT/IB2020/061454 2020-09-30 2020-12-03 Dispositif, système et procédé d'attribution de ressources pour diffusion vidéo en continu WO2022069932A1 (fr)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CA3094824A CA3094824C (fr) 2020-09-30 2020-09-30 Dispositif, systeme et methode pour affecter des ressources a la diffusion video en direct
CA3094824 2020-09-30
US17/037,989 2020-09-30
US17/037,989 US11917224B2 (en) 2020-09-30 2020-09-30 Device, system and method for allocating resources for video streaming

Publications (1)

Publication Number Publication Date
WO2022069932A1 true WO2022069932A1 (fr) 2022-04-07

Family

ID=80949772

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2020/061454 WO2022069932A1 (fr) 2020-09-30 2020-12-03 Dispositif, système et procédé d'attribution de ressources pour diffusion vidéo en continu

Country Status (1)

Country Link
WO (1) WO2022069932A1 (fr)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120201255A1 (en) * 2011-02-08 2012-08-09 Avaya Inc. Method and system for communication session bandwidth control based on actual bandwidth usage
US20130227625A1 (en) * 2012-02-23 2013-08-29 Bob Forsman Methods and apparatus for managing network resources used by multimedia streams in a virtual pipe
EP2817971A1 (fr) * 2012-02-23 2014-12-31 Telefonaktiebolaget L M Ericsson (Publ) Diffusion en continu commandé par réseau
US20190014356A1 (en) * 2008-01-30 2019-01-10 Time Warner Cable Enterprises Llc Methods and apparatus for predictive delivery of content over a network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190014356A1 (en) * 2008-01-30 2019-01-10 Time Warner Cable Enterprises Llc Methods and apparatus for predictive delivery of content over a network
US20120201255A1 (en) * 2011-02-08 2012-08-09 Avaya Inc. Method and system for communication session bandwidth control based on actual bandwidth usage
US20130227625A1 (en) * 2012-02-23 2013-08-29 Bob Forsman Methods and apparatus for managing network resources used by multimedia streams in a virtual pipe
EP2817971A1 (fr) * 2012-02-23 2014-12-31 Telefonaktiebolaget L M Ericsson (Publ) Diffusion en continu commandé par réseau

Similar Documents

Publication Publication Date Title
US10939153B2 (en) Bandwidth and ABR video QoE management based on OTT video providers and devices
US10609104B2 (en) Live stream manifests for on demand content
US11005780B2 (en) Device, system and method for allocating resources for video streaming
US10271112B2 (en) System and method for dynamic adaptive video streaming using model predictive control
EP3244589B1 (fr) Procédé et système permettant de garantir le taux d'utilisation des ressources d'un site web à l'aide d'un réseau de distribution de contenu
US10069885B2 (en) Bandwidth management for over-the-top adaptive streaming
US7966399B2 (en) Network data transmission method and system
CA2888218C (fr) Solution pour empecher un arret de la lecture pendant une transmission multimedia en continu adaptative
US11190566B1 (en) Generating requests for streaming media
US20120259977A1 (en) Dynamic resource allocation
US9819715B2 (en) Client side control of adaptive streaming
KR101613513B1 (ko) 네트워크 대역폭 및 cpu 이용률을 고려한 가상머신 배치 방법 및 시스템
US11917224B2 (en) Device, system and method for allocating resources for video streaming
CA3094824C (fr) Dispositif, systeme et methode pour affecter des ressources a la diffusion video en direct
WO2022069932A1 (fr) Dispositif, système et procédé d'attribution de ressources pour diffusion vidéo en continu
US20220103910A1 (en) Device, system and method for allocating resources for video streaming
US20140380347A1 (en) Methods and systems for user experience based content consumption
US20110072143A1 (en) Scheduling method for peer-to-peer data transmission and node and system using the same
US20120089730A1 (en) Modifying command sequences
WO2022070099A1 (fr) Dispositif, système et procédé d'attribution de ressources pour diffusion en continu de données vidéo
US20170272979A1 (en) Network based control of wireless communications
Wamser et al. Demonstrating the prospects of dynamic application-aware networking in a home environment
Gao et al. Dhp: A joint video download and dynamic bitrate adaptation algorithm for short video streaming
JP2016036103A (ja) 映像配信サーバ及び映像配信方法
US10609132B2 (en) Hash data structure biasing

Legal Events

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

Ref document number: 20956152

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20956152

Country of ref document: EP

Kind code of ref document: A1