System and method for highly scalable video on demand
First Claim
1. A method for providing sequential data blocks each having a duration, comprising:
- providing repeating pre-scheduled multicasts of a data block;
dynamically initiating a transmission of the front portion of the data block in response to a user request to receive the data block from a user so as to serve the user outside the pre-scheduled multicasts of the data block as a dynamically admitted user;
merging the dynamically admitted user into one of the pre-scheduled multicasts of the data block;
wherein the dynamically initiated transmission is a multicast transmission that is sent to and is shared by a plurality of dynamically admitted users for the data block who are admitted in time to catch the beginning of the dynamically initiated multicast transmission.
2 Assignments
0 Petitions
Accused Products
Abstract
An embodiment of a system and method for providing video on demand provides pre-scheduled multicasts of videos as well as dynamically initiated transmissions of the front portion of videos. Users may first receive a dynamically initiated front portion of a video and then be merged into a pre-scheduled multicast. Preferably, the dynamically initiated transmission is also a multicast. Preferably, multiple admission controllers and a single server coordinate the dynamically initiated transmissions for any one video. Preferably, interactive controls are supported without requiring extra server-side resources. Preferably, latency is automatically equalized between users admitted via the pre-scheduled and the dynamically initiated transmissions. Preferably, a user receiving a video via a pre-scheduled multicast does not need to change channels to finish receiving the video transmitted. Preferably, a module can model and quickly estimate expected latency given system parameters such as number and allocation of channels and expected user arrival time(s).
-
Citations
48 Claims
-
1. A method for providing sequential data blocks each having a duration, comprising:
-
providing repeating pre-scheduled multicasts of a data block; dynamically initiating a transmission of the front portion of the data block in response to a user request to receive the data block from a user so as to serve the user outside the pre-scheduled multicasts of the data block as a dynamically admitted user; merging the dynamically admitted user into one of the pre-scheduled multicasts of the data block; wherein the dynamically initiated transmission is a multicast transmission that is sent to and is shared by a plurality of dynamically admitted users for the data block who are admitted in time to catch the beginning of the dynamically initiated multicast transmission. - View Dependent Claims (2, 3)
-
-
4. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video; in response to user requests from a plurality of users for the video outside the predetermined schedule for the first multicasting, dynamically initiating a multicast transmission of the video to at least a portion of the plurality of users whose requests are made in time to catch the beginning of the dynamically initiated multicast transmission; if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A method for providing videos to users, the method comprising:
-
multicasting a video according to an earlier determined schedule, the multicasting hereinafter referred to as the first multicasting; receiving at least one request that is indicative that a user desires to see the video; and in response at least in part to the request, dynamically multicasting a portion of the video to the user and at least one additional user requesting for the video outside the predetermined schedule for the first multicasting in time to catch the beginning of the dynamically initiated multicasting; wherein at least one user receives the portion of the video, hereinafter referred to as the first portion of the video, from the dynamically multicasting;
the at least one user receives, from the first multicasting, at least a portion of the video, hereinafter referred to as the second portion of the video; and
the at least one user plays the first portion of the video followed by the second portion or the video. - View Dependent Claims (20, 21, 22, 23, 24)
-
-
25. A method for providing videos to users, the method comprising:
-
(a) receiving a request from a user to receive a video at a controller; (b) producing a statically scheduled multicast of the video to serve each user who requests for the video within a threshold time parameter prior to the beginning of the statically scheduled multicast of the video; (c) sending a request toward a server to begin dynamically scheduling a new multicast for the video in response to requests for the video from a plurality of users that are not within the threshold time parameter prior to the beginning of the statically scheduled multicast of the video; and (d) receiving a confirmation at the controller that the new multicast for the video has been dynamically scheduled, and, in response, arranging for the users to share and to receive the upcoming dynamically scheduled new multicast for the video, wherein the new multicast for the video includes less than the entire video; (e) causing the user whose request is not within the threshold time parameter to receive and buffer an in-progress pre-scheduled multicast of the video and to receive playback of the dynamically scheduled new multicast for the video; and causing the buffered portion of the pre-scheduled multicast of the video to be played for the user after the dynamically scheduled new multicast has caught up to the buffered portion of the video. - View Dependent Claims (26)
-
-
27. A system for providing videos to users, the system comprising:
-
means for multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; means for receiving an indication that a user desires to see the video; means for, if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time according to a threshold parameter, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; means for multicasting the dynamically initiated transmission of the portion of the video to a plurality of users requesting for the video in time to catch the beginning of the dynamically initiated multicast; and means for, if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time according to the threshold parameter, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission. - View Dependent Claims (28, 29, 30, 31)
-
-
32. A system for providing videos to users, the system comprising:
-
means for multicasting a video according to an earlier determined schedule, the multicasting hereinafter referred to as the first multicasting; means for receiving at least one request that is indicative that a user desires to see the video; means for, in response at least in part to the request, dynamically multicasting a portion of the video; and means for sharing the dynamically multicast portion of the video among a plurality of users requesting for the video in time to catch the beginning of the dynamically multicast portion of the video, wherein at least one user receives the portion of the video, hereinafter referred to as the first portion of the video, from the dynamically multicasting;
the at least one user receives, from the first multicasting, at least a portion of the video, hereinafter referred to as the second portion of the video; and
the at least one user plays the first portion of the video followed by the second portion of the video. - View Dependent Claims (33, 34, 35)
-
-
36. A system for providing videos to users, the system comprising:
-
means for receiving a request from a user to receive a video at a controller; means for, if an upcoming statically scheduled multicast of the video will begin within a threshold time parameter, then arranging for the user to receive the upcoming statically scheduled multicast of the video, thereby satisfying the request from the user; means for, otherwise, if no new multicast for the video is currently being dynamically scheduled, then sending a request toward a server to begin dynamically scheduling a new multicast for the video; means for receiving a confirmation at the controller that the new multicast for the video has been dynamically scheduled, and, in response, arranging for the user to receive the upcoming dynamically scheduled new multicast for the video, wherein the new multicast for the video includes less than the entire video; and means for sharing the dynamically scheduled new multicast for the video among a plurality of users requesting for the video in time to catch the beginning of the dynamically scheduled new multicast for the video, wherein the user receives and buffers an in-progress pre-scheduled multicast of the video, the user receives and views the dynamically scheduled new multicast for the video, and the users begins to view content from the user'"'"'s buffer from the in-progress pre-scheduled multicast after the dynamically scheduled new multicast has caught up to the content from the user'"'"'s buffer. - View Dependent Claims (37)
-
-
38. A system for providing video content, the system comprising:
-
at least one server, the at least one server configured to multicast a video via a network according to a fixed predetermined schedule and to dynamically initiate transmission of a portion of the video, hereinafter referred to as the first portion of the video, for at least one user, hereinafter referred to as the at least one dynamic user; and a controller configured to receive requests from users to see a video and to indicate, to the at least one server, user interest to see the video, including interest by at least one of the at least one dynamic user, the controller operable to control the at least one server to serve a user via either the video multicast according to the fixed predetermined schedule or the dynamically initiated transmission; wherein the at least one dynamic user receives at least part of the first portion of the video, and the at least one dynamic user also receives a portion of the video, hereinafter referred to as the second portion of the video, via the multicast according to the fixed predetermined schedule, and the first portion of the video includes video content not within the second portion of the video, and the at least one dynamic user is able to begin viewing the at least part of the first portion of the video and then to switch to viewing the second portion of the video, and wherein the controller and the at least one server are further operable to, in response to user requests from a plurality of users for the video outside the video multicast according to the fixed predetermined schedule, direct the dynamically initiated transmission as a multicast to the plurality of users when the requests are made in time to catch the beginning of the dynamically initiated transmission multicast.
-
-
39. A video-on-demand system, comprising:
-
at least one server operable multicast a video to a network connected to users according to a fixed multicast schedule to deliver the video; at least one prefix cache server in the network to store an initial prefix portion of each of available videos in the network including the video; and a controller operable to control the at least one server and the one prefix cache server in delivering the video to the users, wherein the controller is operable to serve the initial prefix portion of the video from the at least one prefix cache server to a user who requests for the video outside the fixed multicast schedule and to dynamically initiate transmission of at least a portion of the video to serve, at the end of the serving of the initial prefix portion of the video, the user who requests for the video outside the fixed multicast schedule, and wherein the controller is further operable to use a buffered multicast of the video to serve the user who requests for the video outside the fixed multicast schedule and to stop serving the user from the dynamically initiated transmission. - View Dependent Claims (40)
-
-
41. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video; if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, wherein acceptably low waiting time is according to an adjustable threshold parameter, the method further comprising adjusting the threshold parameter dynamically for subsequent users who desire to see the video, to thereby reduce usage of transmission resources at a cost of increasing expected waiting time, by reducing likelihood of dynamically initiating transmission for the subsequent users, or to thereby reduce expected waiting time at a cost of increasing usage of transmission resources, by increasing likelihood of dynamically initiating transmission for the subsequent users.
-
-
42. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video; if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, wherein acceptably low waiting time is according to an adjustable threshold parameter, further comprising automatically adjusting the threshold parameter dynamically to attempt to equalize an expected average waiting time for users who receive the dynamically initiated transmission for the video with an expected average waiting time for users who do not receive the dynamically initiated transmission for the video.
-
-
43. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video; if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, wherein acceptably low waiting time is according to an adjustable threshold parameter, and the threshold parameter may be adjusted along a continuum for graceful degradation of waiting-time performance as number of users increases.
-
-
44. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video; if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, wherein the dynamically initiated transmission includes a patching multicast for continuing a front-most portion of the video that was stored at one of multiple prefix storage sites.
-
-
45. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video; if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, wherein the receiving step comprises receiving at a server, from one of multiple controllers, the indication that a user desires to see the video, wherein the one controller itself received multiple requests for multiple users to receive the video, but the one controller sent fewer indications to the server than the multiple received requests.
-
-
46. A method for providing videos to users, the method comprising:
-
multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; receiving an indication that a user desires to see the video, if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, accepting proposed system parameters including number of channels, number of videos, allocation of channels, and a threshold parameter that is indicative of an acceptably low waiting time; accepting expected user arrival rates; and computing and outputting an approximate expected average wait time based on the proposed system parameters and the expected user arrival rates by using numeric solutions to a performance model; wherein sufficiency of proposed system parameters can be approximately determined.
-
-
47. A method for providing videos to users, the method comprising:
-
multicasting a video according to an earlier determined schedule, the multicasting hereinafter referred to as the first multicasting; receiving at least one request that is indicative that a user desires to see the video; and in response at least in part to the request, dynamically multicasting a portion of the video; wherein at least one user receives the portion of the video, hereinafter referred to as the first portion of the video, from the dynamically multicasting;
the at least one user receives, from the first multicasting, at least a portion of the video, hereinafter referred to as the second portion of the video; and
the at least one user plays the first portion of the video followed by the second portion of the video, andwherein the dynamically multicasting is a patching multicasting used in connection with multiple prefix servers.
-
-
48. A system for providing videos to users, the system comprising:
-
means for multicasting a video according to a predetermined schedule, the multicasting hereinafter referred to as the first multicasting; means for receiving an indication that a user desires to see the video; means for, if the first multicasting will not multicast the video timely for the user to receive and view the video with acceptably low waiting time according to a threshold parameter, then dynamically initiating transmission of a portion of the video, the portion hereinafter referred to as the first portion of the video, wherein the user will receive at least some of the first portion of the video, and the user will receive another portion of the video, hereinafter referred to as the second portion of the video, via the first multicasting; and means for, if the first multicasting will multicast the video timely for the user to receive and view the video with acceptably low waiting time according to the threshold parameter, then causing the user to receive the first multicasting without needing to receive the dynamically initiated transmission, wherein; the means for multicasting comprises a set of channels pre-assigned for multicasting the video according to the predetermined schedule; the means for dynamically initiating transmission comprises a second set of channels preassigned for dynamically initiated transmission for the video; and
the number of channels in the second set of channels is allocated to be about the number of channels in the first set of channels.
-
Specification