SYSTEM FOR OPTIMIZING VIDEO ON DEMAND TRANSMISSION BY PARTITIONING VIDEO PROGRAM INTO MULTIPLE SEGMENTS, DECREASING TRANSMISSION RATE FOR SUCCESSIVE SEGMENTS AND REPEATEDLY, SIMULTANEOUSLY TRANSMISSION
First Claim
1. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
- (a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments; and
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
at least some of said segments being transmitted at least partly simultaneously, and at least one of said segments being transmitted repeatedly during the duration of the program.
5 Assignments
0 Petitions
Accused Products
Abstract
A system and method for Near Video On Demand (NVOD) transmission of a program from a server to a plurality of clients. The program is partitioned into segments. Each segment is transmitted repeatedly, with the transmission rate of segments subsequent to the first segment being lower than the transmission rate of the first segment. The transmission of the segments is scheduled in a manner that minimizes the aggregate transmission bandwidth, subject to constraints related to client parameters such as client storage capacity and client recording rates. Preferably, the sequences are partitioned further into subsequences, and redundant subsequences are used for error correction. Preferably, the segments, or the subsegments, include metadata such as segment or subsegment length, segment or subsegment sequence number, or the time until the next transmission of the sequence or subsequence.
-
Citations
67 Claims
-
1. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments; and
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
at least some of said segments being transmitted at least partly simultaneously, and at least one of said segments being transmitted repeatedly during the duration of the program.- View Dependent Claims (2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 67)
(d) recording said segments, by the at least one client;
and wherein, for each said segment subsequent to said first segment in the program, said transmission rate of said each segment is such that the at least one client begins to record said each segment at least as late as when the at least one client begins to record said segments that precede said segment in the program.
-
-
4. The method of claim 1, wherein said partitioning of the program is effected by the server.
-
5. The method of claim 1, wherein said selecting of said transmission rates is effected by the server.
-
6. The method of claim 1, wherein said segments are of equal length.
-
7. The method of claim 1, further comprising the steps of:
-
(d) recording said segments, by the at least one client; and
(e) playing said recorded segments in said sequence, by the at least one client.
-
-
8. The method of claim 7, wherein the at least one client records only one copy of each said segment.
-
9. The method of claim 8, wherein said only one copy of said each segment is a last said copy received in an entirety thereof by the at least one client prior to said playing of said each segment.
-
10. The method of claim 1, wherein said selecting of said transmission rates is effected in a manner that minimizes a total bandwidth of said transmitting.
-
11. The method of claim 10, wherein said minimization of said total bandwidth is effected subject to a constraint based on at least one parameter of the at least one client.
-
12. The method of claim 11, further comprising the steps of:
-
(d) recording said segments, by the at least one client, in a recording medium having a certain capacity;
(e) playing said recorded segments in said sequence, by the at least one client; and
(f) for at least one said recorded segment, deleting said recorded segment subsequent to said playing thereof, by the at least one client;
and wherein said at least one parameter includes said capacity of said recording medium, said constraint being that, at any one time, said recorded segments occupy at most said capacity of said recording medium.
-
-
13. The method of claim 12, wherein each said recorded segment is deleted immediately subsequent to said playing thereof.
-
14. The method of claim 11, further comprising the step of:
-
(d) recording each said segment, by the at least one client, at at most a certain recording rate;
and wherein said at least one parameter includes said recording rate, said constraint being that a sum of said transmission rates of each said segment that is recorded by the at least one client at any one time is at most said recording rate.
-
-
15. The method of claim 11, further comprising the steps of:
-
(d) recording each said segment, by the at least one client, at at most a certain recording rate, in a recording medium having a certain capacity;
(e) playing said recorded segments in said sequence, by the at least one client; and
(f) for at least one said recorded segment, deleting said recorded segment subsequent to said playing thereof, by the at least one client;
and wherein said at least one parameter includes said recording rate and said capacity of said recording medium, said constraint being that, at any one time; (i) said recorded segments occupy at most said capacity of said recording medium; and
(ii) a sum of said transmission rates of each said segment that is recorded by the at least one client at said one time is at most said recording rate.
-
-
16. The method of claim 15, wherein each said recorded segment is deleted immediately subsequent to said playing thereof.
-
17. The method of claim 1, further comprising the step of:
(d) partitioning at least one said segment into a plurality of subsegments;
said transmitting of said at least one segment being effected by transmitting each said subsegment at a subsegment transmission rate at least as great as said transmission rate of said at least one segment.
-
18. The method of claim 17, wherein said partitioning of said at least one segment is effected by the server.
-
19. The method of claim 17, further comprising the steps of:
-
(e) deriving at least one redundant subsegment from said plurality of subsegments, said transmitting of said at least one segment being effected by transmitting both said plurality of subsegments and said at least one redundant subsegment; and
(f) increasing said transmission rate of said at least one segment in accordance with a number of said at least one redundant subsegment that are derived.
-
-
20. The method of claim 1, further comprising the step of:
(d) transmitting the program as a single unit, by the server;
said transmitting of each said segment commencing subsequent to a time at which a portion of said single unit corresponding to said each segment is transmitted.
-
21. The method of claim 1, further comprising the step of:
(d) storing at least one coy of each said segment, by the server, prior to said transmitting.
-
22. The method of claim 1, further comprising the step of:
(d) transmitting at least one item of metadata, by the server.
-
23. The method of claim 22, wherein said at least one item of metadata is included in at least one of said segments.
-
24. The method of claim 23, wherein said at least one item includes a sequence number of said segment wherein said at least one item is included.
-
25. The method of claim 23, wherein a plurality of copies of said segment, wherein said at least one item is included, are transmitted, and wherein, in at least one said copy of said segment wherein said at least one item is included, said at least one item includes at least one temporal value related to a time interval between a transmission start time of said at least one copy of said segment wherein said at least one item is included and a transmission start time of an immediately succeeding copy of said segment wherein said at least one item is included.
-
26. The method of claim 23, further comprising the step of:
-
(d) partitioning said segment, wherein said at least one item is included, into a plurality of subsegments;
each said subsegment including at least one said item of said metadata.
-
-
27. The method of claim 26, wherein said partitioning is effected by the server.
-
28. The method of claim 26, wherein said at least one item includes a sequence number of said subsegment.
-
29. The method of claim 26, wherein a plurality of copies of said subsegments of said at least one segment are transmitted, and wherein, in at least one said copy of said at least one subsegment, said at least one item includes at least one temporal value related to a time interval between a transmission start time of said at least one copy of said each subsegment of said segment wherein said at least one item is included and a transmission start time of a succeeding copy of said each subsegment of said segment wherein said at least one item is included.
-
30. The method of claim 29, wherein said succeeding copy of said each subsegment of said at least one segment, wherein said at least one item is included, is an immediately succeeding copy of said each subsegment of said each segment.
-
31. The method of claim 26, wherein said at least one item includes a size of said each subsegment.
-
32. The method of claim 26, wherein said at least one item includes said transmission rate of said segment wherein said at least one item is included.
-
33. The method of claim 26, further comprising the step of:
-
(e) deriving at least one redundant subsegment from said plurality of subsegments;
and wherein said at least one item includes a total number of said subsegments that are transmitted during said transmitting of said segment wherein said at least one item is included.
-
-
34. The method of claim 1, further comprising the step of:
(d) encrypting said segments, by the server, prior to said transmitting thereof.
-
35. The method of claim 1, further comprising the step of:
(d) compressing each said segment, according to a progressive encoding scheme, by the server, prior to said transmitting thereof.
-
36. The method of claim 1, further comprising the step of:
-
(d) deriving, from at least one said segment, a plurality of subsegments such that any subset, of said plurality of subsegments, that includes a certain number of said subsegments less than a total number of said subsegments, suffices to reconstruct said at least one segment;
said plurality of subsegments then being transmitted in place of said at least one segment.
-
-
37. The method of claim 36, wherein said deriving is effected according to a code selected from the group consisting of Reed-Solomon codes and Tornado codes.
-
38. A system for transmitting a program to at least one viewer according to the method of claim 1, comprising:
-
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(c for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
39. The system of claim 38, wherein said instructions are for selecting said transmission rates in a manner that minimizes a total bandwidth of said transmitting.
-
40. The system of claim 38, wherein said instructions are for selecting said transmission rates in a manner that minimizes a total bandwidth of said transmitting subject to a constraint.
-
41. The system of claim 40, wherein said client includes:
-
(i) a recording medium, having a certain capacity, for recording said segments;
said constraint being that, at any one time, said recorded segments occupy at most said capacity of said recording medium.
-
-
42. The system of claim 40, wherein said client includes:
-
(i) a recording medium, for recording said segments at a certain recording rate;
said constraint being that, at any one time, a sum of said transmission rates of each said segment that is recorded by said client at said one time is at most said recording rate.
-
-
43. The system of claim 38, further comprising:
(e) a distribution network for broadcasting the program to said at least one client.
-
44. The system of claim 38, wherein said software module and said processor are included in said server.
-
45. The method of claim 1, further comprising the steps of:
-
(d) recording said segments, by one of the at least one client;
(e) initiating a display of said segments, by said one client;
(f) pausing said display, by said one client;
(g) resuming said display, by said one client, subsequent to said pausing; and
(h) during said pausing, continuing said recording of at least a portion of said segments, by said one client.
-
-
46. The method of claim 45, further comprising the step of:
-
(i) transmitting, by the server to said one client, metadata that include, for each said segment, a display commencement time;
wherein said pausing is effected immediately prior to said displaying of one of said segments; and
wherein said recording is continued in accordance with a time of said displaying remaining fixed at said display commencement time of said one segment.
-
-
47. The method of claim 46, wherein said metadata include, for each said segment, a next transmission time, the method further comprising the step of:
(j) discarding at least one said segment that will be transmitted and recorded again prior to respective said display commencement times relative to immediate said resuming.
-
67. A system for transmitting a program to at least one viewer according to the method of claim 1, comprising:
-
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
3. The method of claim further comprising the steps of:
-
(d) recording said segments, by the at least one client; and
(e) displaying said segments, by the at least one client;
and wherein, for each said segment subsequent to said first segment in the program, said transmission rate of said each segment is such that the at least one client must begin to record said each segment at least as late as when the at least one client must begin to record said segments that precede said segment in the program to ensure that said segments are displayed by the at least one client in said sequence.
-
-
48. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client; and
(d) recording each said segment, by the client, at at most a certain recording rate;
wherein said selecting of said transmission rates is effected in a manner that minimizes a total bandwidth of said transmitting subject to a constraint that a sum of said transmission rates of each said segment that is recorded by the client at any one time is at most said recording rate. - View Dependent Claims (49)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting;
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence, said client including a recording medium for recording said segments at said recording rate.
-
-
50. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
(d) recording each said segment, by the client, at at most a certain recording rate, in a recording medium having a certain capacity;
(e) playing said recorded segments in said sequence, by the client; and
(f) for at least one said recorded segment, deleting said recorded segment subsequent to said playing thereof, by the client;
wherein said selecting of said transmission rates is effected in a manner that minimizes a total bandwidth of said transmitting subject to a constraint that, at any one time; (i) said recorded segments occupy at most said capacity of said recording medium; and
(ii) a sum of said transmission rates of each said segment that is recorded by the client at said one time is at most said recording rate. - View Dependent Claims (51)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence, said client including said recording medium.
-
-
52. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
(d) partitioning at least one said segment into a plurality of subsegments, said transmitting of said at least one segment being effected by transmitting each said subsegment at a subsegment transmission rate at least as great as said transmission rate of said at least one segment;
(e) deriving at least one redundant subsegment from said plurality of subsegments, said transmitting of said at least one segment being effected by transmitting both said plurality of subsegments and said at least one redundant subsegment; and
(f) increasing said transmission rate of said at least one segment in accordance with a number of said at least one redundant subsegment that are derived. - View Dependent Claims (53)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
54. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments; and
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
wherein said at least one item of metadata is included in at least one of said segments;
wherein a plurality of copies of said segment, wherein said at least one item of metadata is included, are transmitted; and
wherein, in at least one said copy of said segment wherein said at least one item of metadata is included, said at least one item of metadata includes at least one temporal value related to a time interval between a transmission start time of said at least one copy of said segment wherein said at least one item of metadata is included and a transmission start time of an immediately succeeding copy of said segment wherein said at least one item of metadata is included.- View Dependent Claims (55)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
56. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding said segments being faster than said transmission rate that is selected for a subsequent said segments;
(c) including at least one item of metadata in at least one of said segments;
(d) partitioning said at least one segment, wherein said at least one item of metadata is included, into a plurality of subsegments, each said subsegment including at least one said item of metadata; and
(e) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
wherein a plurality of copies of said subsegments of said at least one segment are transmitted; and
wherein, in at least one said copy of said at least one subsegment, said at least one item of metadata includes at least one temporal value related to a time interval between a transmission start time of said at least one copy of said each subsegment of said segment wherein said at least one item of metadata is included and a transmission start time of a succeeding copy of said each subsegment of said segment wherein said at least one item of metadata is included.- View Dependent Claims (57)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
58. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) including at least one item of metadata in at least one of said segments;
(d) partitioning said at least one segment, wherein said at least one item of metadata is included, into a plurality of subsegments, each said subsegment including at least one said item of metadata; and
(e) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
and wherein said at least one item of metadata includes a size of said each subsegment. - View Dependent Claims (59)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
60. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) including at least one item of metadata in at least one of said segments;
(d) partitioning said at least one segment, wherein said at least one item of metadata is included, into a plurality of subsegments, each said subsegment including at least one said item of metadata; and
(e) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
and wherein said at least one item of metadata includes a transmission rate of said segment wherein said at least one item of metadata is included. - View Dependent Claims (61)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
62. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) including at least one item of metadata in at least one of said segments;
(d) partitioning said at least one segment, wherein said at least one item of metadata is included, into a plurality of subsegments, each said subsegment including at least one said item of metadata;
(e) deriving at least one redundant subsegment from said plurality of subsegments; and
(f) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
and wherein said at least one item of metadata includes a total number of said subsegments that are transmitted during said transmitting of said segment wherein said at least one item of metadata is included. - View Dependent Claims (63)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
64. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segments;
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client; and
(d) deriving, from at least one said segment, a plurality of subsegments such that any subset, of said plurality of subsegments, that includes a certain number of said subsegments less than a total number of said subsegments, suffices to reconstruct said at least one segment, said plurality of subsegments then being transmitted in place of said at least one segment. - View Dependent Claims (65)
(a) a software module including a plurality of instructions for effecting said partitioning and said selecting;
(b) a processor for executing said instructions;
(c) a server for effecting said transmitting; and
(d) for each of the at least one viewer, a client for receiving said transmitted segments, recording said received segments and playing said recorded segments in said sequence.
-
-
66. In a system wherein a server transmits a program having a certain duration, the program being received by a client, a method for scheduling the transmission of the program, comprising the steps of:
-
(a) partitioning the program into a plurality of sequential segments, wherein each of said segment is equally divided into the same size;
(b) selecting a transmission rate for each of said segments, said transmission rate that is selected for a preceding segment of said segments being faster than said transmission rate that is selected for a subsequent segment of said segment;
(c) transmitting said segments, by the server to said client, each said segment being transmitted at said corresponding transmission rate of said each segment during a session between said server and said client;
(d) transmitting, by the server to said client, metadata that include, for each said segment, a display commencement time;
(e) recording said segments, by the said client;
(f) initiating a display of said segments, by the said client;
(g) pausing said display, by the said client;
(h) resuming said display, by the said client, subsequent to said pausing; and
(i) during said pausing, continuing said recording of at least a portion of said segments, by the said client;
wherein said pausing is effected immediately prior to said displaying of one of said segments; and
wherein said recording is continued in accordance with a time of said displaying remaining fixed at said display commencement time of said one segment.
-
Specification