US20130276040A1 - Streaming video using erasure encoding - Google Patents
Streaming video using erasure encoding Download PDFInfo
- Publication number
- US20130276040A1 US20130276040A1 US13/624,676 US201213624676A US2013276040A1 US 20130276040 A1 US20130276040 A1 US 20130276040A1 US 201213624676 A US201213624676 A US 201213624676A US 2013276040 A1 US2013276040 A1 US 2013276040A1
- Authority
- US
- United States
- Prior art keywords
- video
- segments
- node
- section
- nodes
- Prior art date
- Legal status (The legal status 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 status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2181—Source of audio or video content, e.g. local disk arrays comprising remotely distributed storage units, e.g. when movies are replicated over a plurality of video servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/222—Secondary servers, e.g. proxy server, cable television Head-end
- H04N21/2225—Local VOD servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23116—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving data replication, e.g. over plural servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47202—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6581—Reference data, e.g. a movie identifier for ordering a movie or a product identifier in a home shopping application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
Definitions
- This invention relates generally to the field of video systems. More particularly, the invention relates to a system, apparatus and method for streaming videos.
- Video on Demand (VOD) systems allow users to request and view videos over a network.
- a user requests a video using a box (e.g., a set-top receiver) connected through a network to a server farm.
- a box e.g., a set-top receiver
- the server farm In response to a video request, the server farm “streams” the selected video to the box. The video is presented to the user while the rest of the video is being downloaded.
- the bandwidth capacity required at the server farm increases.
- a video library is distributed among the boxes of multiple users.
- the request is serviced over the network by one of the boxes that store the requested video.
- This peer-to-peer network distributes the bandwidth requirements across the boxes on the network. As the number of boxes in the network increases, the quantity of videos requested increases but the bandwidth capacity also increases since there are more boxes to service the video requests.
- the capacity to serve a particular video is limited, since a predetermined number of copies of that video are distributed among a fixed number of boxes. Each box has limited bandwidth capacity to serve the video(s) stored in that box.
- the peer-to-peer configuration restricts the flexibility to concurrently deliver quantities of particular videos.
- the entire video is downloaded to the box before it is presented on the user's video system.
- the bandwidth requirements can be reduced whether using a centralized server or a peer-to-peer network.
- the longer download period increases the delay from the time the user requests a video to when that user can watch the requested video.
- VOD system that allows a video to be watched soon after the request.
- VOD system that allows more flexibility in terms of capacity to concurrently serve particular videos to multiple users.
- VOD system that can scale in terms of the number of boxes being served while limiting the increase in bandwidth requirements.
- a system for presenting a video is described.
- portions of a video are encoded into encoded portions each having sections, the sections for each encoded portion being distributed among segments, the segments being distributed among the nodes of a network.
- the system includes an apparatus including a network interface coupled to the network; a control system coupled to the network interface and configured to initiate a video request and communicate with a subset of the nodes to receive a subset of the segments; and a decoder coupled to the network interface and configured to decode a subset of the sections for each of the encoded portions to generate the portions of the video.
- a presentation device coupled to the apparatus is configured to present the portions of the video.
- An apparatus for processing a video including a network interface; a control system coupled to the network interface and configured to send a video request and communicate with a set of nodes; a decoder coupled to the network interface and configured to decode a subset of a set of sections for each of a set of encoded portions to generate a plurality of portions of the video, the subset of the set of sections for each of the set of encoded portions being assembled from a subset of a plurality of segments; and a video interface coupled to the decoder and configured to transmit the set of portions of the video.
- a method of processing a video over a network including encoding each of a plurality of portions of the video to generate a plurality of encoded portions each having a plurality of sections; distributing each plurality of sections among a plurality of segments; distributing the plurality of segments among the plurality of nodes; requesting the video; identifying a plurality of nodes storing a subset of the plurality of segments; receiving a subset of the plurality of sections for each of the plurality of encoded portions from the plurality of nodes; and decoding each subset of the plurality of sections to generate the plurality of portions of the video.
- FIG. 1 illustrates a system for streaming a video according to one embodiment of the invention.
- FIG. 2 shows a block diagram of one embodiment of an encoding system of the invention.
- FIG. 3 shows a block diagram of one embodiment of decoding system of the invention.
- FIG. 4 shows a block diagram of a decoding system using primary segments and a backup segment according to one embodiment of the invention.
- FIG. 5 shows a block diagram of one embodiment of a decoding system using different subsets of the segments for some encoded portions.
- FIG. 6 shows a block diagram of the distribution of primary and secondary segments according to one embodiment of the invention.
- FIG. 7 illustrates a system using primary and secondary segments for streaming a video according to one embodiment of the invention.
- FIG. 8 is a flow chart that illustrates a method of streaming a video according to one embodiment of the invention.
- Embodiments of the invention may be implemented in a video on demand (VOD) system as illustrated generally in FIG. 1 .
- the system includes nodes coupled through a network 160 to a server 100 that has a video lookup database 110 .
- the server 100 is operated by a VOD service provider.
- a node 130 has a control system 131 , a memory 133 and a decoder 134 coupled through a network interface 132 to the network 160 .
- the node 130 has a video interface 135 coupled to the decoder 134 and coupled through a video connector 138 to a presentation device 139 .
- the node 130 is a box supplied by the VOD service provider. In other embodiments, the node 130 is a personal computer.
- a user can request a video A, for example, through the control system 131 .
- the user can submit that request using a remote control or a keyboard, for example.
- the control system 131 initiates a video request through the network interface 132 onto the network 160 .
- the server 100 is configured to respond to video requests from the nodes on the network 160 .
- the server 100 accesses the video lookup database 110 to determine which of the nodes on the network 160 store segments associated with video A and are available to serve the segments to the node 130 .
- the server 100 allocates the nodes that are least likely to be needed for a subsequent video request based on, for example, the popularity of videos associated with the other segments stored on each node.
- the video A is associated with six segments, a segment 151 , a segment 152 , a segment 153 , a segment 154 , a segment 155 , and a segment 156 .
- any four of the six segments can be used to generate the video A.
- the relationship between the videos and the segments are described in more detail with reference to subsequent figures.
- the server 100 can allocate a node 121 , a node 122 , a node 123 and a node 124 in response to the request for the video A from the node 130 .
- the node 121 has a memory 191 that is coupled to the network 160 through a network interface 181 .
- the memory 191 stores the segment 151 corresponding to the video A and a segment 159 corresponding to a video C.
- a node 122 has a memory 192 that is coupled to the network 160 through a network interface 182 .
- the memory 192 stores the segment 152 corresponding to the video A and a segment 160 corresponding to the video C.
- a node 123 as a memory 193 that is coupled to the network 160 through a network interface 183 .
- the memory 193 stores the segment 153 corresponding to the video A and a segment 161 corresponding to the video B.
- a node 124 has a memory 194 that is coupled to the network 160 through a network interface 184 .
- the memory 194 stores the segment 154 corresponding to the video A and a segment 162 corresponding to the video B.
- the network interface 132 After receiving the allocation of the nodes from the server 100 , the network interface 132 communicates with the network interface 181 to receive the segment 151 , the network interface 132 communicates with the network interface 182 to receive the segment 152 , the network interface 132 communicates with the network interface 183 to receive the segment 153 and the network interface 132 communicates with the network interface 184 to receive the segment 154 .
- the download bandwidth of the node 140 is at least four times the upload bandwidth of a typical node in the network 160 .
- the network interface 132 can download all four segments from the network 160 at the combined rate that the network interface 181 , the network interface 182 , the network interface 183 and a network interface 184 can upload those four segments to the network 160 .
- the number of segments is chosen to be such that the concurrent download of all necessary segments is fast enough to enable playback of video in real time.
- multiple segments can be downloaded from the same node if that node has enough upstream bandwidth to concurrently upload the multiple segments at the required rate.
- the decoder 134 receives the four segments and generates the video according to methods described with reference to subsequent figures.
- a video interface 135 is coupled to receive the video from the decoder 134 and transmit the video through a video connector 138 to a presentation device 139 .
- the presentation device 139 is a television.
- the presentation device 139 is another device capable of audiovisual representation of the video.
- the presentation device 139 is only capable of presenting video without sound. In other embodiments, the presentation device 139 is only capable of presenting sound without video.
- Another user has a node 140 including a control system 141 , a memory 143 and a decoder 144 coupled to a network interface 142 on the network 160 .
- the node 140 has a video interface 145 coupled to the decoder 144 and coupled to a video connector 148 to a presentation device 149 .
- a user can request, for example, a video B through the control system 141 .
- the control system 141 initiates a video request through the network interface 142 onto the network 160 .
- the server 100 accesses the video lookup database 110 to determine which of the nodes on the network 160 store segments associated with the video B and are available to serve the segments to the node 130 .
- the video B is associated with six segments: a segment 161 , a segment 162 , a segment 163 , a segment 164 , a segment 157 and a segment 158 . In one embodiment, any four of the six segments can be used to generate the video B. If the request for video B happens while the node 123 and the node 124 are still serving the segments for video A as described above, the node 123 and the node 124 are temporarily unavailable to serve the segment 161 and the segment 162 , respectively, for video B.
- the server 100 can allocate a node 125 , a node 126 , a node 127 and a node 128 .
- the node 125 has a memory 195 that is coupled to the network 160 through a network interface 185 .
- the memory 195 stores the segment 155 corresponding to the video A and the segment 163 corresponding to the video B.
- the node 126 has a memory 196 that is coupled to the network 160 through a network interface 186 .
- the memory 196 stores a segment 156 corresponding to the video A and the segment 164 corresponding to the video B.
- a node 127 has a memory 197 that is coupled to the network 160 through a network interface 187 .
- the memory 197 stores a segment 157 corresponding to the video B and the segment 165 corresponding to the video C.
- a node 128 has a memory 198 that is coupled to the network 160 through a network interface 188 .
- the memory 198 stores a segment 158 corresponding to the video B and the segment 166 corresponding to the video C.
- the network interface 142 After receiving the allocation of the nodes from the server 100 , the network interface 142 requests the segments from the nodes.
- the network interface 142 communicates with the network interface 185 to receive the segment 151 .
- the network interface 142 communicates with the network interface 186 to receive the segment 152 .
- the network interface 142 communicates with the network interface 187 to receive the segment 153 .
- the network interface 142 communicates with the network interface 188 to receive the segment 154 .
- the decoder 144 receives the four segments and decodes the four segments to generate the video according to methods described with reference to subsequent figures.
- a video interface 145 is coupled to receive the video from the decoder 144 and transmit the video through a video connector 148 to a presentation device 149 .
- the presentation device 149 can be a device capable of audiovisual representation of the video.
- Nodes 121 - 128 are illustrated to emphasize components used to serve segments in response to a video request according to the example video requests described above.
- each of these nodes has a control system, decoder and video interface to provide the functionality described with reference to the node 130 , for example.
- the node 130 is configured to provide similar functionality as described with reference to the node 121 , for example.
- the example illustrated uses six independent segments. In other embodiments, a different number of segments may be used. In some embodiments, the same segment may be duplicated on multiple nodes to allow for more concurrent requests for the same video. In this example, any four of the six independent segments can be used to generate the video. In other embodiments, a different number of independent segments may be required. It will be apparent to one skilled in the art that duplicate segments cannot be used to establish the minimum number of segments to generate the video.
- FIG. 2 is a block diagram illustrating one embodiment of an encoding system of the present invention.
- a video 70 is the source of the video for the encoding process.
- the process is not limited to any particular video format.
- the video 70 format can be Digital Video (DV) Encoder Type 1, DV Encoder Type 2, MPEG-1 (Moving Picture Experts Group format 1), MPEG-2, MPEG-4, or Real Video.
- DV Digital Video
- MPEG-1 Moving Picture Experts Group format 1
- MPEG-2 Motion Picture Experts Group format 2
- MPEG-4 Real Video
- the video 70 is processed as a sequence of time slices.
- the time slices are blocks of audiovisual data each including several portions. Two time slices are shown for illustrative purposes.
- a time slice 61 includes a portion 201 , a portion 202 , a portion 203 and a portion 204 .
- a time slice 62 includes a portion 205 , a portion 206 , a portion 207 and a portion 208 .
- each portion is encoded using an erasure code, such as a Hamming code, Reed-Solomon code, or Tornado code.
- An erasure code transforms data of n sections into encoded data with more than n sections such that the original data can be generated from any subset of the sections of the encoded data that include the minimum number of sections for that code. Strict subsets of the encoded data are any combination of less than all the sections of the encoded data.
- Rateless erasure codes can transform data of n sections into encoded data of an arbitrary number of sections. Erasure codes can also provide an error correcting function allowing the original data to be recovered despite a limited number of bit errors within the sections of the encoded message.
- the erasure code used can be the identity function, i.e., the encoded segments are exactly identical to the original segments.
- each portion is encoded into encoded portions having six blocks of which any four blocks can be used to generate the portion.
- the portion 201 is encoded into an encoded portion 31 having a section 211 , a section 212 , a section 213 , a section 214 , a section 215 and a section 216 .
- the portion 202 is encoded into an encoded portion 32 having a section 221 , a section 222 , a section 223 , a section 224 , a section 225 and a section 226 .
- the portion 203 is encoded into an encoded portion 33 having a section 231 , a section 232 , a section 233 , a section 234 , a section 235 and a section 236 .
- the portion 204 is encoded into an encoded portion 34 having a section 241 , a section 242 , a section 243 , a section 244 , a section 245 and a section 246 .
- the portion 205 is encoded into an encoded portion 35 having a section 251 a section 252 , a section 253 , the section 254 , section 255 and a section 256 .
- the portion 206 is encoded into encoded portion 36 having a section 261 , a section 262 , a section 263 , a section 264 , a section 265 and a section 266 .
- the portion 207 is encoded into an encoded portion 37 having a section 271 , a section 272 , a section 273 , a section 274 , a section 275 and a section 276 .
- the portion 208 is encoded into an encoded portion 38 having a section 281 , a a section 282 , a section 283 , a section 284 , a section 285 and a section 286 .
- a segment 21 is generated by assembling the section 211 , the section 221 , the section 231 , the section 241 , the section 251 , the section 261 , the section 271 and the section 281 .
- a segment 22 is generated by assembling the section 212 , the section 222 , the section 232 , the section 242 , the section 252 , the section 262 , the section 272 and the section 282 .
- a segment 23 is generated by assembling the section 213 , the section 223 , the section 233 , the section 243 , the section 253 , the section 263 , the section 273 and the section 283 .
- a segment 24 is generated by assembling the section 214 , the section 224 , the section 234 , the section 244 , the section 254 , the section 264 , the section 274 and the section 284 .
- a segment 25 is generated by assembling the section 215 , the section 225 , the section 235 , the section 245 , the section 255 , the section 265 , the section 275 and the section 285 .
- a segment 26 is generated by assembling the section 216 , the section 226 , the section 236 , the section 246 , the section 256 , the section 266 , the section 276 and the section 286 .
- time slices are shown, each with four portions.
- the same technique can be applied to an arbitrary number of time slices using more or less portions.
- the encoding process may generate more or less sections according to well-known methods.
- the segments are distributed over a network 50 to be stored among a set of nodes. In one embodiment, these nodes are configured as described with reference to the block diagram of the node 130 shown in FIG. 1 .
- the segment 21 is distributed to a node 41 .
- the segment 22 is distributed to a node 42 .
- the segment 23 is distributed to a node 43 .
- the segment 24 is distributed to a node 44 .
- the segment 25 is distributed to a node 45 and the segment 26 is distributed to a node 46 .
- FIG. 3 is a block diagram illustrating one embodiment of a decoding system of the present invention.
- each portion is decoded using an erasure code. Any four of the six segments can be used to generate the video 70 .
- a node 40 requests the video and four nodes are assigned to deliver the segments.
- the node 42 , the node 44 , the node 45 and the node 46 transmit the segment 22 , the segment 24 , the segment 25 and the segment 26 , respectively, over the network 50 to the node 40 .
- each portion is decoded using an erasure code.
- the section 212 , the section 214 , the section 215 and the section 216 of the encoded portion 31 are decoded to generate the portion 201 .
- the section 222 , the section 224 , the section 225 and the section 226 of the encoded portion 32 is decoded to generate the portion 202 .
- the section 232 , the section 234 , the section 235 and a section 236 of the encoded portion 33 are decoded to generate the portion 203 .
- the section 242 , the section 244 , the section 245 and the section 246 of the include portion 204 are decoded to generate the portion 204 .
- the portion 201 , the portion 202 , the portion 203 and the portion 204 are assembled to generate the time slice 61 .
- the section 252 , the section 254 , the section 255 and the section 256 of the encoded portion 35 are decoded to generate the portion 205 .
- the section 262 , the section 264 , the section 265 and the section 266 of the encoded portion 36 are decoded to generate the portion 206 .
- the section 272 , the section 274 , the section 275 and the section 276 of the include portion of the seven are decoded to generate the portion 207 .
- the section 282 , the section 284 , the section 285 and a section 286 of the encoded portion 38 are decoded to generate the portion 208 .
- the portion 205 , the portion 206 , the portion 207 and the portion 208 are assembled to generate the time slice 62 .
- FIG. 4 is a block diagram illustrating another embodiment of a decoding system of the present invention.
- a set of primary segments 90 and a backup segment 91 are allocated in response to a video request.
- the backup segment 91 can be used to substitute for one of the primary segments 90 in response to a failure, for example, of a node transmitting one of the primary segments 90 .
- additional backup segments can be allocated to a video request.
- any four of the six segments can be used to generate the video 70 .
- the node 40 requests a video.
- the set of primary segments 90 allocated to the video request include the segment 22 , the segment 24 , the segment 25 and a segment 26 .
- the backup segment 91 allocated to the video request is the segment 21 .
- the node 42 , the node 44 , the node 45 and the node 46 transmit the segment 22 , the segment 24 , the segment 25 and the segment 26 , respectively, over the network 50 to the node 40 .
- the section 212 , the section 214 , the section 215 , the section 216 of the encoded portion 31 are decoded to generate the portion 201 .
- the section 222 , the section 224 , the section 225 and the section 226 of the encoded portion 32 is decoded to generate the portion 202 .
- the section 232 , the section 234 , the section 235 and the section 236 of the encoded portion 33 are decoded to generate the portion 203 .
- the section 242 , the section 244 , the section 245 and the section 246 of the include portion 204 are decoded to generate the portion 204 .
- the portion 201 , the portion 202 , the portion 203 and the portion 204 are assembled to generate the time slice 61 .
- the backup segment 91 replaces the segment 22 after time slice 61 is processed.
- the backup segment can be used instead of one of the primary segments when, for example, the node transmitting one of the primary segments 90 malfunctions, is disconnected from the network, or loses power.
- the node 42 stops transmitting the segment 22 .
- the node 41 starts transmitting the segment 21 over the network 50 to the node 40 .
- the section 251 , the section 254 , the section 255 and the section 256 of the encoded portion 35 are decoded to generate the portion 205 .
- the section 261 , the section 264 , the section 265 and the section 266 of the encoded portion 36 are decoded to generate the portion 206 .
- the section 271 , the section 274 , the section 275 and the section 276 of the include portion of the seven are decoded to generate the portion 207 .
- the section 281 , the section 284 , the section 285 and the section 286 of the encoded portion 38 are decoded to generate the portion 208 .
- the portion 205 , the portion 206 , the portion 207 and the portion 208 are assembled to generate and the time slice 62 .
- FIG. 5 is a block diagram illustrating another embodiment of a decoding process of the present invention.
- the node 40 requests a video.
- a set of segments are allocated to a video request and the subset of the set of segments used for at least two of the portions in a time slice are different.
- any four of the six segments can be used to generate the video 70 .
- the node 44 , the node 45 and the node 46 transmit the segment 24 , the segment 25 and the segment 26 , respectively, over the network 50 to the node 40 .
- the section 212 , the section 214 , section 215 and section 216 of the encoded portion 31 are decoded to generate the portion 201 .
- the section 222 , the section 224 , the section 225 in the section 226 of the include portion 32 or decoded to generate the portion 202 .
- the section 231 , the section 234 , the section 235 and section 236 of the include portion of the three are decoded to generate the portion 203 .
- the section 241 , the section 244 , the section 245 and the section 246 of the include portion 34 decoded to generate the portion 204 .
- the portion 201 , the portion 202 , the portion 203 and the portion 204 are assembled to generate the time slice 61 .
- the section 252 , the section 254 , the section 255 and the section 256 of the encoded portion 35 are decoded to generate the portion 205
- the section 261 , the section 264 , the section 265 and a section 266 of encoded portion 36 are decoded to generate the portion 206 .
- the section 272 , the section 274 , the section 275 in the section 276 of the include portion 37 are decoded to generate the portion 207 .
- 285 in the section 286 of the include portion 38 are decoded to generate the portion 208 .
- the portion 205 , the portion 206 , the portion 207 and the portion 208 are assembled to generate the time slice 62 .
- FIG. 6 shows a block diagram of the distribution of primary and secondary segments according to one embodiment of the invention.
- each of the segments associated with a video are split into a primary segment and a secondary segment.
- the primary segment corresponds to the first half of the playback duration of the video.
- the secondary segment corresponds to the second half of the playback duration of the video.
- a segment 600 includes a primary segment 601 and a secondary segment 602 .
- a segment 610 includes the primary segment 611 and a secondary segment 612 .
- a segment 620 includes a primary segment 621 and a secondary segment 622 .
- a segment 630 includes a primary segment 631 and a secondary segment 632 .
- a segment 640 includes a primary segment 641 and a secondary segment 642 .
- a segment 650 includes a primary segment 651 and a secondary segment 652 .
- the primary segment 601 , the primary segment 611 , the primary segment 621 , the primary segment 631 , the primary segment 641 in the primary segment 651 are distributed over a network 680 to a set of nodes 671 .
- the secondary segment 602 , the secondary segment 612 , the secondary segment 622 , the secondary segment 632 , the secondary segment 642 and a secondary segment 652 are distributed over a network 680 a set of nodes 672 .
- the set of nodes 671 is not disjoint from the set of nodes 672 .
- Nodes requesting a streaming video corresponding to the first half of the video are assigned nodes from the set of nodes 671 .
- Nodes requesting a streaming video corresponding to the second half of the video are assigned nodes from the set of nodes 672 .
- the division of segments into primary and secondary segments can, in the best case, double the peak capacity of concurrent streams of that video for the same average storage used per node.
- half the nodes receiving a particular video could be streaming the first half of the video from the set of nodes 671 and half the nodes receiving that video could be streaming the second half of that video from the set of nodes 672 . Since different nodes are streaming each half of the video, the peak capacity of concurrent streams of that video doubles as compared to the case in which the whole video is served by the same node.
- the video is broken into three or more periods and segments corresponding to each of the periods are distributed among three or more sets of nodes. In some embodiments, breaking the video into more periods can further increase flexibility in the allocation of nodes in response to video requests and the peak capacity of concurrent streams of a particular video.
- Embodiments of the invention can be implemented in a VOD system using primary and secondary segments as illustrated generally in FIG. 7 .
- the system includes nodes coupled through a network 760 to a server 700 that has a video lookup database 710 .
- a node 730 has a control system 731 , a memory 733 and a decoder 734 coupled to a network interface 732 to the network 760 .
- the node 730 has a video interface 735 coupled to the decoder 734 and coupled through a video connector 738 to a presentation device 739 .
- a user can request a video A through the control system 731 .
- the control system 731 initiates a video request for the first period of the video A through the network interface 732 onto the network 760 .
- the server 700 is configured to respond to video requests from the nodes on the network 760 .
- the server 700 accesses the video lookup database 710 to determine which of the nodes on the network 760 store segments associated with the first period of the video A and are available to serve the segments to the node 730 .
- the server can allocate a node 121 , a node 122 , a node 123 and a node 124 , for example, to serve the first period of the video.
- the node 721 has a memory 791 that is coupled to the network 760 through a network interface 781 .
- the memory 791 stores the segment 751 corresponding to the first period of video A and a segment 759 corresponding to first period of video B.
- a node 722 has a memory 792 that is coupled to the network 760 through a network interface 782 .
- the memory 792 stores the segment 752 corresponding to second period of the video A and a segment 760 corresponding to first period of the video B.
- a node 723 as a memory 793 that is coupled to the network 760 through a network interface 783 .
- the memory 793 stores the segment 763 corresponding to the second period of the video A and a segment 761 corresponding to the second period of the video B.
- a node 724 has a memory 794 that is coupled to the network 760 through a network interface 784 .
- the memory 794 stores the segment 754 corresponding to the second period of the video A and a segment 762 corresponding to the first period of the video B.
- the network interface 732 After receiving the allocation of the nodes from the server 700 , the network interface 732 communicates with the network interface 781 to receive the segment 751 , communicates with the network interface 782 to receive the segment 752 , communicate with the network interface 783 to receive the segment 753 and communicates with the network interface 784 to receive the segment 754 .
- the decoder 734 receives the four segments and generates the video according to methods described with reference to other figures.
- a video interface 735 is coupled to receive the video from the decoder 734 and transmit the video through a video connector 738 and to a presentation device 739 .
- the presentation device 739 is a television.
- the presentation device 739 is another device cable of audiovisual representation of the video.
- the control system 731 When streaming the first period of video A is almost complete, the control system 731 initiates a video request for the second period of video A through the network interface 732 onto the network 760 .
- the server 700 accesses the video lookup database 710 to determine which of the nodes on the network 760 store segments associated with the second period of the video A and are available to serve the segments to the node 730 .
- the server can allocate a node 125 , a node 126 , a node 127 and a node 128 , for example, to serve the first period of the video.
- the node 721 has a memory 795 that is coupled to the network 760 through a network interface 785 .
- the memory 795 stores the segment 755 corresponding to the second period of video A and a segment 763 corresponding to the first period of video B.
- a node 726 has a memory 796 that is coupled to the network 760 through a network interface 786 .
- the memory 796 stores the segment 756 corresponding to second period of the video A and a segment 764 corresponding to first period of the video B.
- a node 727 has a memory 797 that is coupled to the network 760 through a network interface 787 .
- the memory 797 stores the segment 765 corresponding to the second period of the video A and a segment 765 corresponding to the second period of the video B.
- a node 728 has a memory 798 that is coupled to the network 760 through a network interface 788 .
- the memory 798 stores the segment 758 corresponding to the second period of the video A and a segment 766 corresponding to the second period of the video B.
- the network interface 732 After receiving the allocation of the nodes from the server 700 , the network interface 732 communicates with the network interface 785 to receive the segment 755 , communicates with the network interface 786 to receive the segment 756 , communicate with the network interface 787 to receive the segment 757 and communicates with the network interface 788 to receive the segment 758 .
- the nodes 721 - 725 are now released to be available for allocation to stream another video as the newly allocated nodes are streaming the second portion of the video A to the node 730 .
- the decoder 734 receives the four segments and generates the video.
- the video is transmitted through the video interface 735 and through the video connector 738 to the presentation device 739 .
- a node 740 has a control system 741 , a memory 743 and a decoder 744 coupled to a network interface 742 in the network 760 .
- the node 740 has a video interface 745 coupled to the decoder 744 and coupled to a video connector 748 to a presentation device 749 .
- a node 740 has a control system 741 , a memory 743 and a decoder 744 coupled to a network interface 742 to the network 760 .
- the node 740 has a video interface 745 coupled to the decoder 744 and coupled through a video connector 748 to a presentation device 749 .
- the user can request a video A, for example, through the control system 141 .
- the control system 141 initiates a video request through the network interface 142 onto the network 160 .
- the server accesses the video lookup database 110 to determine which of the nodes on the network 160 store segments associated with first period of the video A and are available to serve the segments to the node 140 .
- the server 700 can allocate a node 721 , a node 722 , a node 723 and a node 724 to respond to the request for the first period of video A from the node 130 .
- the network interface 742 communicates with the network interface 781 to receive the segment 751 , communicates with the network interface 782 to receive the segment 752 , communicate with the network interface 783 to receive the segment 753 and communicates with the network interface 784 to receive the segment 754 .
- the decoder 734 receives the four segments and generates the video according to methods described with reference to subsequent figures.
- a video interface 735 is coupled to receive the video from the decoder 734 and transmit the video through a video connector 738 and to a presentation device 739 .
- FIG. 8 is a flow chart that illustrates one embodiment of a method of the present invention.
- the video portions are encoded to generate encoded portions each having multiple sections.
- the encoding process is performed using an erasure code, such as a Hamming code, a Reed-Solomon code or a Tornado code.
- step 810 the sections of each of the encoded portions are distributed among a set of segments.
- step 820 the segments are distributed among nodes on a network.
- the encoding process is performed as illustrated with reference to FIG. 2 .
- a video is requested.
- the node requests the video in response to a user request submitted through a remote control or keyboard.
- step 840 the nodes storing a subset of the segments are identified.
- a server accesses a video lookup database to determine which of the nodes on the network store segments associated with the requested video and are available to serve the segments.
- the server allocates the nodes that are least likely to be needed for a subsequent video request based on, for example, the popularity of videos associated with the other segments stored on each node.
- step 850 a subset of the sections for each of the encoded portions are received.
- step 860 the subset of the sections for each of the encoded portions is decoded to generate portions of the video.
- the decoding process is performed as illustrated with reference to FIGS. 3 , 4 and 5 .
- the portions of the video are presented.
- the video is displayed on a television or other device capable of audiovisual representation.
- the video is presented without sound.
- the video is presented without images.
- step the 880 it is determined whether another time slice is available. If yes, step 850 is performed to process subsequent time slices. If no, the flow chart is completed.
Abstract
A system, apparatus and method for presenting a video over a network using erasure codes is described. According to one system and method, the network has nodes, portions of a video being encoded as encoded portions each having sections, the sections for each encoded portion being distributed among segments, the segments being distributed among the nodes; an apparatus including a network interface coupled to the network; a control system coupled to the network interface and configured to initiate a video request and communicate with a subset of the nodes to receive a subset of the segments; and a decoder coupled to the network interface and configured to decode a subset of the sections for each of the encoded portions to generate the portions of the video; and a presentation device coupled to the apparatus, the presentation device presenting the portions of the video.
Description
- 1. Field of the Invention
- This invention relates generally to the field of video systems. More particularly, the invention relates to a system, apparatus and method for streaming videos.
- 2. Description of the Related Art
- Video on Demand (VOD) systems allow users to request and view videos over a network.
- In some VOD systems, a user requests a video using a box (e.g., a set-top receiver) connected through a network to a server farm. In response to a video request, the server farm “streams” the selected video to the box. The video is presented to the user while the rest of the video is being downloaded. As the number of boxes in the network increases, the bandwidth capacity required at the server farm increases.
- In other VOD systems, a video library is distributed among the boxes of multiple users. When a user requests a video using their box, the request is serviced over the network by one of the boxes that store the requested video. This peer-to-peer network distributes the bandwidth requirements across the boxes on the network. As the number of boxes in the network increases, the quantity of videos requested increases but the bandwidth capacity also increases since there are more boxes to service the video requests.
- However, the capacity to serve a particular video is limited, since a predetermined number of copies of that video are distributed among a fixed number of boxes. Each box has limited bandwidth capacity to serve the video(s) stored in that box. Thus, the peer-to-peer configuration restricts the flexibility to concurrently deliver quantities of particular videos.
- In other VOD systems, the entire video is downloaded to the box before it is presented on the user's video system. By lengthening the period over which the video is downloaded, the bandwidth requirements can be reduced whether using a centralized server or a peer-to-peer network. However, the longer download period increases the delay from the time the user requests a video to when that user can watch the requested video.
- What is needed is a VOD system that allows a video to be watched soon after the request. What is also needed is a VOD system that allows more flexibility in terms of capacity to concurrently serve particular videos to multiple users. What is further needed is a VOD system that can scale in terms of the number of boxes being served while limiting the increase in bandwidth requirements.
- A system for presenting a video is described. According to one embodiment, portions of a video are encoded into encoded portions each having sections, the sections for each encoded portion being distributed among segments, the segments being distributed among the nodes of a network. The system includes an apparatus including a network interface coupled to the network; a control system coupled to the network interface and configured to initiate a video request and communicate with a subset of the nodes to receive a subset of the segments; and a decoder coupled to the network interface and configured to decode a subset of the sections for each of the encoded portions to generate the portions of the video. A presentation device coupled to the apparatus is configured to present the portions of the video.
- An apparatus for processing a video is described including a network interface; a control system coupled to the network interface and configured to send a video request and communicate with a set of nodes; a decoder coupled to the network interface and configured to decode a subset of a set of sections for each of a set of encoded portions to generate a plurality of portions of the video, the subset of the set of sections for each of the set of encoded portions being assembled from a subset of a plurality of segments; and a video interface coupled to the decoder and configured to transmit the set of portions of the video.
- A method of processing a video over a network is described including encoding each of a plurality of portions of the video to generate a plurality of encoded portions each having a plurality of sections; distributing each plurality of sections among a plurality of segments; distributing the plurality of segments among the plurality of nodes; requesting the video; identifying a plurality of nodes storing a subset of the plurality of segments; receiving a subset of the plurality of sections for each of the plurality of encoded portions from the plurality of nodes; and decoding each subset of the plurality of sections to generate the plurality of portions of the video.
- These and other features, aspects, and advantages of the present invention will become better understood with regard to the following description, appended claims, and accompanying drawings where:
-
FIG. 1 illustrates a system for streaming a video according to one embodiment of the invention. -
FIG. 2 shows a block diagram of one embodiment of an encoding system of the invention. -
FIG. 3 shows a block diagram of one embodiment of decoding system of the invention. -
FIG. 4 shows a block diagram of a decoding system using primary segments and a backup segment according to one embodiment of the invention. -
FIG. 5 shows a block diagram of one embodiment of a decoding system using different subsets of the segments for some encoded portions. -
FIG. 6 shows a block diagram of the distribution of primary and secondary segments according to one embodiment of the invention. -
FIG. 7 illustrates a system using primary and secondary segments for streaming a video according to one embodiment of the invention. -
FIG. 8 is a flow chart that illustrates a method of streaming a video according to one embodiment of the invention. - Described below is a system and method for streaming video. Throughout the description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are not shown in the figures to avoid obscuring the underlying principles of the present invention.
- Embodiments of the invention may be implemented in a video on demand (VOD) system as illustrated generally in
FIG. 1 . The system includes nodes coupled through anetwork 160 to aserver 100 that has avideo lookup database 110. In one embodiment, theserver 100 is operated by a VOD service provider. - Users of the video on demand service access the service through the
network 160. Anode 130 has acontrol system 131, amemory 133 and adecoder 134 coupled through anetwork interface 132 to thenetwork 160. Thenode 130 has avideo interface 135 coupled to thedecoder 134 and coupled through avideo connector 138 to apresentation device 139. In some embodiments, thenode 130 is a box supplied by the VOD service provider. In other embodiments, thenode 130 is a personal computer. - A user can request a video A, for example, through the
control system 131. The user can submit that request using a remote control or a keyboard, for example. In response, thecontrol system 131 initiates a video request through thenetwork interface 132 onto thenetwork 160. Theserver 100 is configured to respond to video requests from the nodes on thenetwork 160. When a request is received, theserver 100 accesses thevideo lookup database 110 to determine which of the nodes on thenetwork 160 store segments associated with video A and are available to serve the segments to thenode 130. In one embodiment, theserver 100 allocates the nodes that are least likely to be needed for a subsequent video request based on, for example, the popularity of videos associated with the other segments stored on each node. - As an example, the video A is associated with six segments, a
segment 151, asegment 152, asegment 153, asegment 154, asegment 155, and asegment 156. In one embodiment, any four of the six segments can be used to generate the video A. The relationship between the videos and the segments are described in more detail with reference to subsequent figures. - For example, the
server 100 can allocate anode 121, anode 122, anode 123 and anode 124 in response to the request for the video A from thenode 130. Thenode 121 has amemory 191 that is coupled to thenetwork 160 through anetwork interface 181. Thememory 191 stores thesegment 151 corresponding to the video A and asegment 159 corresponding to a videoC. A node 122 has amemory 192 that is coupled to thenetwork 160 through anetwork interface 182. Thememory 192 stores thesegment 152 corresponding to the video A and asegment 160 corresponding to the videoC. A node 123 as amemory 193 that is coupled to thenetwork 160 through anetwork interface 183. Thememory 193 stores thesegment 153 corresponding to the video A and asegment 161 corresponding to the video B. Anode 124 has amemory 194 that is coupled to thenetwork 160 through anetwork interface 184. Thememory 194 stores thesegment 154 corresponding to the video A and asegment 162 corresponding to the video B. - After receiving the allocation of the nodes from the
server 100, thenetwork interface 132 communicates with thenetwork interface 181 to receive thesegment 151, thenetwork interface 132 communicates with thenetwork interface 182 to receive thesegment 152, thenetwork interface 132 communicates with thenetwork interface 183 to receive thesegment 153 and thenetwork interface 132 communicates with thenetwork interface 184 to receive thesegment 154. - In one embodiment, the download bandwidth of the
node 140 is at least four times the upload bandwidth of a typical node in thenetwork 160. Thus, thenetwork interface 132 can download all four segments from thenetwork 160 at the combined rate that thenetwork interface 181, thenetwork interface 182, thenetwork interface 183 and anetwork interface 184 can upload those four segments to thenetwork 160. In one embodiment, the number of segments is chosen to be such that the concurrent download of all necessary segments is fast enough to enable playback of video in real time. In one embodiment, multiple segments can be downloaded from the same node if that node has enough upstream bandwidth to concurrently upload the multiple segments at the required rate. - The
decoder 134 receives the four segments and generates the video according to methods described with reference to subsequent figures. Avideo interface 135 is coupled to receive the video from thedecoder 134 and transmit the video through avideo connector 138 to apresentation device 139. In one embodiment, thepresentation device 139 is a television. Alternatively, thepresentation device 139 is another device capable of audiovisual representation of the video. In some embodiments, thepresentation device 139 is only capable of presenting video without sound. In other embodiments, thepresentation device 139 is only capable of presenting sound without video. - Another user has a
node 140 including acontrol system 141, amemory 143 and adecoder 144 coupled to anetwork interface 142 on thenetwork 160. Thenode 140 has avideo interface 145 coupled to thedecoder 144 and coupled to avideo connector 148 to apresentation device 149. - A user can request, for example, a video B through the
control system 141. In response, thecontrol system 141 initiates a video request through thenetwork interface 142 onto thenetwork 160. When a request is received, theserver 100 accesses thevideo lookup database 110 to determine which of the nodes on thenetwork 160 store segments associated with the video B and are available to serve the segments to thenode 130. - The video B is associated with six segments: a
segment 161, asegment 162, asegment 163, asegment 164, asegment 157 and asegment 158. In one embodiment, any four of the six segments can be used to generate the video B. If the request for video B happens while thenode 123 and thenode 124 are still serving the segments for video A as described above, thenode 123 and thenode 124 are temporarily unavailable to serve thesegment 161 and thesegment 162, respectively, for video B. - In response to the request for video B, the
server 100 can allocate anode 125, anode 126, anode 127 and anode 128. Thenode 125 has amemory 195 that is coupled to thenetwork 160 through anetwork interface 185. Thememory 195 stores thesegment 155 corresponding to the video A and thesegment 163 corresponding to the video B. Thenode 126 has amemory 196 that is coupled to thenetwork 160 through anetwork interface 186. Thememory 196 stores asegment 156 corresponding to the video A and thesegment 164 corresponding to the video B. Anode 127 has amemory 197 that is coupled to thenetwork 160 through anetwork interface 187. Thememory 197 stores asegment 157 corresponding to the video B and thesegment 165 corresponding to the videoC. A node 128 has amemory 198 that is coupled to thenetwork 160 through anetwork interface 188. Thememory 198 stores asegment 158 corresponding to the video B and thesegment 166 corresponding to the video C. - After receiving the allocation of the nodes from the
server 100, thenetwork interface 142 requests the segments from the nodes. Thenetwork interface 142 communicates with thenetwork interface 185 to receive thesegment 151. Thenetwork interface 142 communicates with thenetwork interface 186 to receive thesegment 152. Thenetwork interface 142 communicates with thenetwork interface 187 to receive thesegment 153. And thenetwork interface 142 communicates with thenetwork interface 188 to receive thesegment 154. - The
decoder 144 receives the four segments and decodes the four segments to generate the video according to methods described with reference to subsequent figures. Avideo interface 145 is coupled to receive the video from thedecoder 144 and transmit the video through avideo connector 148 to apresentation device 149. Thepresentation device 149 can be a device capable of audiovisual representation of the video. - Nodes 121-128 are illustrated to emphasize components used to serve segments in response to a video request according to the example video requests described above. In some embodiments, each of these nodes has a control system, decoder and video interface to provide the functionality described with reference to the
node 130, for example. In some embodiments, thenode 130 is configured to provide similar functionality as described with reference to thenode 121, for example. - The example illustrated uses six independent segments. In other embodiments, a different number of segments may be used. In some embodiments, the same segment may be duplicated on multiple nodes to allow for more concurrent requests for the same video. In this example, any four of the six independent segments can be used to generate the video. In other embodiments, a different number of independent segments may be required. It will be apparent to one skilled in the art that duplicate segments cannot be used to establish the minimum number of segments to generate the video.
- Because only some of the segments are required to generate the video, there is quite a bit of flexibility in terms on selecting combinations of nodes that can generate the video. As the number of segments increases so does the number of combinations of segments that can be used to generate the video.
-
FIG. 2 is a block diagram illustrating one embodiment of an encoding system of the present invention. - A
video 70 is the source of the video for the encoding process. The process is not limited to any particular video format. In some embodiments, thevideo 70 format can be Digital Video (DV) Encoder Type 1, DV Encoder Type 2, MPEG-1 (Moving Picture Experts Group format 1), MPEG-2, MPEG-4, or Real Video. - In one embodiment, the
video 70 is processed as a sequence of time slices. The time slices are blocks of audiovisual data each including several portions. Two time slices are shown for illustrative purposes. Atime slice 61 includes aportion 201, aportion 202, aportion 203 and aportion 204. Atime slice 62 includes aportion 205, aportion 206, aportion 207 and aportion 208. - In one embodiment, each portion is encoded using an erasure code, such as a Hamming code, Reed-Solomon code, or Tornado code. An erasure code transforms data of n sections into encoded data with more than n sections such that the original data can be generated from any subset of the sections of the encoded data that include the minimum number of sections for that code. Strict subsets of the encoded data are any combination of less than all the sections of the encoded data. Rateless erasure codes can transform data of n sections into encoded data of an arbitrary number of sections. Erasure codes can also provide an error correcting function allowing the original data to be recovered despite a limited number of bit errors within the sections of the encoded message. In another embodiment, the erasure code used can be the identity function, i.e., the encoded segments are exactly identical to the original segments.
- In the illustrated example, each portion is encoded into encoded portions having six blocks of which any four blocks can be used to generate the portion. The
portion 201 is encoded into an encodedportion 31 having asection 211, asection 212, asection 213, asection 214, asection 215 and asection 216. Theportion 202 is encoded into an encodedportion 32 having asection 221, asection 222, asection 223, asection 224, asection 225 and asection 226. Theportion 203 is encoded into an encodedportion 33 having asection 231, asection 232, asection 233, asection 234, asection 235 and asection 236. Theportion 204 is encoded into an encodedportion 34 having asection 241, asection 242, asection 243, asection 244, asection 245 and asection 246. - The
portion 205 is encoded into an encodedportion 35 having a section 251 asection 252, asection 253, thesection 254,section 255 and asection 256. Theportion 206 is encoded into encodedportion 36 having asection 261, asection 262, asection 263, asection 264, asection 265 and asection 266. Theportion 207 is encoded into an encodedportion 37 having asection 271, asection 272, asection 273, asection 274, asection 275 and asection 276. Theportion 208 is encoded into an encodedportion 38 having asection 281,a a section 282, asection 283, asection 284, asection 285 and asection 286. - A
segment 21 is generated by assembling thesection 211, thesection 221, thesection 231, thesection 241, thesection 251, thesection 261, thesection 271 and thesection 281. Asegment 22 is generated by assembling thesection 212, thesection 222, thesection 232, thesection 242, thesection 252, thesection 262, thesection 272 and thesection 282. Asegment 23 is generated by assembling thesection 213, thesection 223, thesection 233, thesection 243, thesection 253, thesection 263, thesection 273 and thesection 283. Asegment 24 is generated by assembling thesection 214, thesection 224, thesection 234, thesection 244, thesection 254, thesection 264, thesection 274 and thesection 284. Asegment 25 is generated by assembling thesection 215, thesection 225, thesection 235, thesection 245, thesection 255, thesection 265, thesection 275 and thesection 285. Asegment 26 is generated by assembling thesection 216, thesection 226, thesection 236, thesection 246, thesection 256, thesection 266, thesection 276 and thesection 286. - In this illustration, two time slices are shown, each with four portions. However, the same technique can be applied to an arbitrary number of time slices using more or less portions. Furthermore, the encoding process may generate more or less sections according to well-known methods.
- The segments are distributed over a
network 50 to be stored among a set of nodes. In one embodiment, these nodes are configured as described with reference to the block diagram of thenode 130 shown inFIG. 1 . Thesegment 21 is distributed to anode 41. Thesegment 22 is distributed to anode 42. Thesegment 23 is distributed to anode 43. Thesegment 24 is distributed to anode 44. Thesegment 25 is distributed to anode 45 and thesegment 26 is distributed to anode 46. -
FIG. 3 is a block diagram illustrating one embodiment of a decoding system of the present invention. - In one embodiment, each portion is decoded using an erasure code. Any four of the six segments can be used to generate the
video 70. Anode 40 requests the video and four nodes are assigned to deliver the segments. In this example, thenode 42, thenode 44, thenode 45 and thenode 46 transmit thesegment 22, thesegment 24, thesegment 25 and thesegment 26, respectively, over thenetwork 50 to thenode 40. - In one embodiment, each portion is decoded using an erasure code. The
section 212, thesection 214, thesection 215 and thesection 216 of the encodedportion 31 are decoded to generate theportion 201. Thesection 222, thesection 224, thesection 225 and thesection 226 of the encodedportion 32 is decoded to generate theportion 202. Thesection 232, thesection 234, thesection 235 and asection 236 of the encodedportion 33 are decoded to generate theportion 203. Thesection 242, thesection 244, thesection 245 and thesection 246 of the includeportion 204 are decoded to generate theportion 204. Theportion 201, theportion 202, theportion 203 and theportion 204 are assembled to generate thetime slice 61. - The
section 252, thesection 254, thesection 255 and thesection 256 of the encodedportion 35 are decoded to generate theportion 205. Thesection 262, thesection 264, thesection 265 and thesection 266 of the encodedportion 36 are decoded to generate theportion 206. Thesection 272, thesection 274, thesection 275 and thesection 276 of the include portion of the seven are decoded to generate theportion 207. Thesection 282, thesection 284, thesection 285 and asection 286 of the encodedportion 38 are decoded to generate theportion 208. Theportion 205, theportion 206, theportion 207 and theportion 208 are assembled to generate thetime slice 62. -
FIG. 4 is a block diagram illustrating another embodiment of a decoding system of the present invention. - In one embodiment, a set of
primary segments 90 and abackup segment 91 are allocated in response to a video request. Thebackup segment 91 can be used to substitute for one of theprimary segments 90 in response to a failure, for example, of a node transmitting one of theprimary segments 90. In other embodiments, additional backup segments can be allocated to a video request. - In this example, any four of the six segments can be used to generate the
video 70. Thenode 40 requests a video. The set ofprimary segments 90 allocated to the video request include thesegment 22, thesegment 24, thesegment 25 and asegment 26. Thebackup segment 91 allocated to the video request is thesegment 21. Thenode 42, thenode 44, thenode 45 and thenode 46 transmit thesegment 22, thesegment 24, thesegment 25 and thesegment 26, respectively, over thenetwork 50 to thenode 40. - The
section 212, thesection 214, thesection 215, thesection 216 of the encodedportion 31 are decoded to generate theportion 201. Thesection 222, thesection 224, thesection 225 and thesection 226 of the encodedportion 32 is decoded to generate theportion 202. Thesection 232, thesection 234, thesection 235 and thesection 236 of the encodedportion 33 are decoded to generate theportion 203. Thesection 242, thesection 244, thesection 245 and thesection 246 of the includeportion 204 are decoded to generate theportion 204. Theportion 201, theportion 202, theportion 203 and theportion 204 are assembled to generate thetime slice 61. - In this example, the
backup segment 91 replaces thesegment 22 aftertime slice 61 is processed. The backup segment can be used instead of one of the primary segments when, for example, the node transmitting one of theprimary segments 90 malfunctions, is disconnected from the network, or loses power. Thenode 42 stops transmitting thesegment 22. In response, thenode 41 starts transmitting thesegment 21 over thenetwork 50 to thenode 40. - The
section 251, thesection 254, thesection 255 and thesection 256 of the encodedportion 35 are decoded to generate theportion 205. Thesection 261, thesection 264, thesection 265 and thesection 266 of the encodedportion 36 are decoded to generate theportion 206. Thesection 271, thesection 274, thesection 275 and thesection 276 of the include portion of the seven are decoded to generate theportion 207. Thesection 281, thesection 284, thesection 285 and thesection 286 of the encodedportion 38 are decoded to generate theportion 208. Theportion 205, theportion 206, theportion 207 and theportion 208 are assembled to generate and thetime slice 62. -
FIG. 5 is a block diagram illustrating another embodiment of a decoding process of the present invention. - The
node 40 requests a video. In this example, a set of segments are allocated to a video request and the subset of the set of segments used for at least two of the portions in a time slice are different. In one embodiment, any four of the six segments can be used to generate thevideo 70. In this example, thenode 44, thenode 45 and thenode 46 transmit thesegment 24, thesegment 25 and thesegment 26, respectively, over thenetwork 50 to thenode 40. - The
section 212, thesection 214,section 215 andsection 216 of the encodedportion 31 are decoded to generate theportion 201. Thesection 222, thesection 224, thesection 225 in thesection 226 of the includeportion 32 or decoded to generate theportion 202. Thesection 231, thesection 234, thesection 235 andsection 236 of the include portion of the three are decoded to generate theportion 203. Thesection 241, thesection 244, thesection 245 and thesection 246 of the includeportion 34 decoded to generate theportion 204. Theportion 201, theportion 202, theportion 203 and theportion 204 are assembled to generate thetime slice 61. - The
section 252, thesection 254, thesection 255 and thesection 256 of the encodedportion 35 are decoded to generate theportion 205, thesection 261, thesection 264, thesection 265 and asection 266 of encodedportion 36 are decoded to generate theportion 206. Thesection 272, thesection 274, thesection 275 in thesection 276 of the includeportion 37 are decoded to generate theportion 207. 285 in thesection 286 of the includeportion 38 are decoded to generate theportion 208. Theportion 205, theportion 206, theportion 207 and theportion 208 are assembled to generate thetime slice 62. -
FIG. 6 shows a block diagram of the distribution of primary and secondary segments according to one embodiment of the invention. - In one embodiment, each of the segments associated with a video are split into a primary segment and a secondary segment. The primary segment corresponds to the first half of the playback duration of the video. The secondary segment corresponds to the second half of the playback duration of the video.
- A
segment 600 includes aprimary segment 601 and asecondary segment 602. Asegment 610 includes theprimary segment 611 and asecondary segment 612. Asegment 620 includes aprimary segment 621 and asecondary segment 622. Asegment 630 includes aprimary segment 631 and asecondary segment 632. Asegment 640 includes aprimary segment 641 and asecondary segment 642. Asegment 650 includes aprimary segment 651 and asecondary segment 652. - The
primary segment 601, theprimary segment 611, theprimary segment 621, theprimary segment 631, theprimary segment 641 in theprimary segment 651 are distributed over anetwork 680 to a set ofnodes 671. Thesecondary segment 602, thesecondary segment 612, thesecondary segment 622, thesecondary segment 632, thesecondary segment 642 and asecondary segment 652 are distributed over a network 680 a set ofnodes 672. In one embodiment, the set ofnodes 671 is not disjoint from the set ofnodes 672. - Nodes requesting a streaming video corresponding to the first half of the video are assigned nodes from the set of
nodes 671. Nodes requesting a streaming video corresponding to the second half of the video are assigned nodes from the set ofnodes 672. Once a node completes viewing the first half of the video, it is assigned nodes from the set ofnodes 672 so that it can start viewing the second half. This assignment is done in advance to ensure that there is no interruption in movie watching as a node transitions from the first half to the second half. - The division of segments into primary and secondary segments can, in the best case, double the peak capacity of concurrent streams of that video for the same average storage used per node. Observe that, at any given point in time,—half the nodes receiving a particular video could be streaming the first half of the video from the set of
nodes 671 and half the nodes receiving that video could be streaming the second half of that video from the set ofnodes 672. Since different nodes are streaming each half of the video, the peak capacity of concurrent streams of that video doubles as compared to the case in which the whole video is served by the same node. - Approximately the same storage capacity is used, allowing for some overhead, since twice as many nodes store half of the video as compared to the case where the whole video is served by the same node. Since less to space is taken for each video stored on a particular node, more video selections can be stored on a node having a given memory capacity. This allows for more flexibility in the allocation of nodes in response to video requests.
- In other embodiments, the video is broken into three or more periods and segments corresponding to each of the periods are distributed among three or more sets of nodes. In some embodiments, breaking the video into more periods can further increase flexibility in the allocation of nodes in response to video requests and the peak capacity of concurrent streams of a particular video.
- Embodiments of the invention can be implemented in a VOD system using primary and secondary segments as illustrated generally in
FIG. 7 . The system includes nodes coupled through anetwork 760 to aserver 700 that has avideo lookup database 710. - Users of the video on demand service access the service through the
network 760. Anode 730 has acontrol system 731, amemory 733 and adecoder 734 coupled to anetwork interface 732 to thenetwork 760. Thenode 730 has avideo interface 735 coupled to thedecoder 734 and coupled through avideo connector 738 to apresentation device 739. - For example, a user can request a video A through the
control system 731. In response, thecontrol system 731 initiates a video request for the first period of the video A through thenetwork interface 732 onto thenetwork 760. Theserver 700 is configured to respond to video requests from the nodes on thenetwork 760. When a request is received, theserver 700 accesses thevideo lookup database 710 to determine which of the nodes on thenetwork 760 store segments associated with the first period of the video A and are available to serve the segments to thenode 730. - The server can allocate a
node 121, anode 122, anode 123 and anode 124, for example, to serve the first period of the video. Thenode 721 has amemory 791 that is coupled to thenetwork 760 through anetwork interface 781. Thememory 791 stores thesegment 751 corresponding to the first period of video A and asegment 759 corresponding to first period of video B. Anode 722 has amemory 792 that is coupled to thenetwork 760 through anetwork interface 782. Thememory 792 stores thesegment 752 corresponding to second period of the video A and asegment 760 corresponding to first period of the video B. Anode 723 as amemory 793 that is coupled to thenetwork 760 through anetwork interface 783. Thememory 793 stores thesegment 763 corresponding to the second period of the video A and asegment 761 corresponding to the second period of the video B. Anode 724 has amemory 794 that is coupled to thenetwork 760 through anetwork interface 784. Thememory 794 stores thesegment 754 corresponding to the second period of the video A and asegment 762 corresponding to the first period of the video B. - After receiving the allocation of the nodes from the
server 700, thenetwork interface 732 communicates with thenetwork interface 781 to receive thesegment 751, communicates with thenetwork interface 782 to receive thesegment 752, communicate with thenetwork interface 783 to receive thesegment 753 and communicates with thenetwork interface 784 to receive thesegment 754. - The
decoder 734 receives the four segments and generates the video according to methods described with reference to other figures. Avideo interface 735 is coupled to receive the video from thedecoder 734 and transmit the video through avideo connector 738 and to apresentation device 739. In one embodiment, thepresentation device 739 is a television. Alternatively, thepresentation device 739 is another device cable of audiovisual representation of the video. - When streaming the first period of video A is almost complete, the
control system 731 initiates a video request for the second period of video A through thenetwork interface 732 onto thenetwork 760. Theserver 700 accesses thevideo lookup database 710 to determine which of the nodes on thenetwork 760 store segments associated with the second period of the video A and are available to serve the segments to thenode 730. - The server can allocate a
node 125, anode 126, anode 127 and anode 128, for example, to serve the first period of the video. Thenode 721 has amemory 795 that is coupled to thenetwork 760 through anetwork interface 785. Thememory 795 stores thesegment 755 corresponding to the second period of video A and asegment 763 corresponding to the first period of video B. Anode 726 has amemory 796 that is coupled to thenetwork 760 through anetwork interface 786. Thememory 796 stores thesegment 756 corresponding to second period of the video A and asegment 764 corresponding to first period of the video B. Anode 727 has amemory 797 that is coupled to thenetwork 760 through anetwork interface 787. Thememory 797 stores thesegment 765 corresponding to the second period of the video A and asegment 765 corresponding to the second period of the video B. Anode 728 has amemory 798 that is coupled to thenetwork 760 through anetwork interface 788. Thememory 798 stores thesegment 758 corresponding to the second period of the video A and asegment 766 corresponding to the second period of the video B. - After receiving the allocation of the nodes from the
server 700, thenetwork interface 732 communicates with thenetwork interface 785 to receive thesegment 755, communicates with thenetwork interface 786 to receive thesegment 756, communicate with thenetwork interface 787 to receive thesegment 757 and communicates with thenetwork interface 788 to receive thesegment 758. The nodes 721-725 are now released to be available for allocation to stream another video as the newly allocated nodes are streaming the second portion of the video A to thenode 730. - The
decoder 734 receives the four segments and generates the video. The video is transmitted through thevideo interface 735 and through thevideo connector 738 to thepresentation device 739. - A
node 740 has acontrol system 741, amemory 743 and adecoder 744 coupled to anetwork interface 742 in thenetwork 760. Thenode 740 has avideo interface 745 coupled to thedecoder 744 and coupled to avideo connector 748 to apresentation device 749. - Other users of the VOD service can concurrently access the service through the
network 760. Anode 740 has acontrol system 741, amemory 743 and adecoder 744 coupled to anetwork interface 742 to thenetwork 760. Thenode 740 has avideo interface 745 coupled to thedecoder 744 and coupled through avideo connector 748 to apresentation device 749. - The user can request a video A, for example, through the
control system 141. In response, thecontrol system 141 initiates a video request through thenetwork interface 142 onto thenetwork 160. When a request is received, the server accesses thevideo lookup database 110 to determine which of the nodes on thenetwork 160 store segments associated with first period of the video A and are available to serve the segments to thenode 140. For example, theserver 700 can allocate anode 721, anode 722, anode 723 and anode 724 to respond to the request for the first period of video A from thenode 130. - After receiving the allocation of the nodes from the
server 700, thenetwork interface 742 communicates with thenetwork interface 781 to receive thesegment 751, communicates with thenetwork interface 782 to receive thesegment 752, communicate with thenetwork interface 783 to receive thesegment 753 and communicates with thenetwork interface 784 to receive thesegment 754. Thedecoder 734 receives the four segments and generates the video according to methods described with reference to subsequent figures. Avideo interface 735 is coupled to receive the video from thedecoder 734 and transmit the video through avideo connector 738 and to apresentation device 739. -
FIG. 8 is a flow chart that illustrates one embodiment of a method of the present invention. - In
step 800, the video portions are encoded to generate encoded portions each having multiple sections. In one embodiment, the encoding process is performed using an erasure code, such as a Hamming code, a Reed-Solomon code or a Tornado code. - In
step 810, the sections of each of the encoded portions are distributed among a set of segments. - In
step 820, the segments are distributed among nodes on a network. In some embodiments, the encoding process is performed as illustrated with reference toFIG. 2 . - In step 830 a video is requested. In one embodiment, the node requests the video in response to a user request submitted through a remote control or keyboard.
- In
step 840 the nodes storing a subset of the segments are identified. In one embodiment, a server accesses a video lookup database to determine which of the nodes on the network store segments associated with the requested video and are available to serve the segments. In one embodiment, the server allocates the nodes that are least likely to be needed for a subsequent video request based on, for example, the popularity of videos associated with the other segments stored on each node. - In
step 850, a subset of the sections for each of the encoded portions are received. - In
step 860, the subset of the sections for each of the encoded portions is decoded to generate portions of the video. In some embodiments, the decoding process is performed as illustrated with reference toFIGS. 3 , 4 and 5. - In
step 870, the portions of the video are presented. In one embodiment, the video is displayed on a television or other device capable of audiovisual representation. In some embodiments, the video is presented without sound. In other embodiments, the video is presented without images. - In step the 880, it is determined whether another time slice is available. If yes, step 850 is performed to process subsequent time slices. If no, the flow chart is completed.
Claims (20)
1. A method for distributing media comprising:
dividing at least a slice of a video file into a plurality of portions;
encoding each portion of the plurality of portions to generate encodings including a plurality of sections;
defining segments each including a section from each encoding of the plurality of encodings;
distributing each segment to a different node of a first group of nodes;
receiving, by a server, a request for the video file from a first node; and
transmitting, by the server, an assignment of the first group to the first node.
2. The method of claim 1 , wherein the at least a slice of the video file is a first slice of the video file, the video file comprising a second slice, the segments being first segments, the method comprising:
transmitting second segments encoding the second slice to a second group of nodes; and
transmitting an assignment to the second group of nodes to the first node just before playback of the first segment is completed.
3. The method of claim 2 , wherein the first and second slice have approximately the same playback duration.
4. The method of claim 1 , wherein a number of the segments is such that the cumulative data transmission rate of the first group of nodes to the first node is at least as fast as the playback rate of the video file.
5. The method of claim 1 , wherein the number of segments is approximately equal to a ratio of a download bandwidth and an upload bandwidth for a network coupling the server, first node, and the first group of nodes.
6. The method of claim 1 , wherein encoding each portion of the plurality of portions to generate encodings including a plurality of sections further comprises encrypting each portion of the plurality of portions.
7. The method of claim 1 , wherein encoding each portion of the plurality of portions to generate encodings including a plurality of sections comprises performing erasure encoding of each portion of the plurality of portions.
8. The method of claim 1 , wherein encoding each portion of the plurality of portions to generate encodings including a plurality of sections comprises performing erasure encoding such that less than all of the plurality of sections of each encoding are required to recreate a corresponding portion of the plurality of portions.
9. The method of claim 1 , further comprising:
receiving, by the first node, the assignment of the first group of nodes;
requesting, by the first node, the segments from the first group of nodes;
receiving, by the first node, the segments from the first group of nodes;
decoding, by the first node, the plurality of portions from the plurality of sections included in the segments;
displaying, by the first node, video according to the plurality of portions.
10. The method of claim 1 , wherein the segments include primary segments and at least one backup segment.
11. A system for distributing media comprising one or more processors and one or more memory devices operably coupled to the one or more processors, the one or more memory devices storing executable data effective to cause the one or more processors to:
divide at least a slice of a video file into a plurality of portions;
encode each portion of the plurality of portions to generate encodings including a plurality of sections;
define segments each including a section from each encoding of the plurality of encodings;
distribute each segment to a different node of a first group of nodes;
receive, by a server, a request for the video file from a first node; and
transmit, by the server, an assignment of the first group to the first node.
12. The system of claim 11 , wherein the at least a slice of the video file is a first slice of the video file, the video file comprising a second slice, the segments being first segments, the executable data being further effective to cause the one or more processors to:
transmit second segments encoding the second slice to a second group of nodes; and
transmit an assignment to the second group of nodes to the first node just before playback of the first segment is completed.
13. The system of claim 12 , wherein the first and second slice have approximately the same playback duration.
14. The system of claim 11 , wherein a number of the segments is such that the cumulative data transmission rate of the first group of nodes to the first node is at least as fast as the playback rate of the video file.
15. The system of claim 11 , wherein the number of segments is approximately equal to a ratio of a download bandwidth and an upload bandwidth for a network coupling the server, first node, and the first group of nodes.
16. The system of claim 11 , wherein the executable data is further effective to encode each portion of the plurality of portions to generate encodings including a plurality of sections by encrypting each portion of the plurality of portions.
17. The system of claim 11 , wherein the executable data is further effective to encode each portion of the plurality of portions to generate encodings including a plurality of sections by performing erasure encoding.
18. The system of claim 11 , wherein the executable data is further effective to encode each portion of the plurality of portions to generate encodings including a plurality of sections by performing erasure encoding such that less than all of the plurality of sections of each encoding are required to recreate a corresponding portion of the plurality of portions.
19. The system of claim 1 , wherein the first node is operable to:
receive the assignment of the first group of nodes;
request the segments from the first group of nodes;
receive the segments from the first group of nodes;
decode the plurality of portions from the plurality of sections included in the segments; and
display video according to the plurality of portions.
20. The system of claim 11 , wherein the segments include primary segments and at least one backup segment.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/624,676 US20130276040A1 (en) | 2006-09-01 | 2012-09-21 | Streaming video using erasure encoding |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/515,267 US8296812B1 (en) | 2006-09-01 | 2006-09-01 | Streaming video using erasure encoding |
US13/624,676 US20130276040A1 (en) | 2006-09-01 | 2012-09-21 | Streaming video using erasure encoding |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/515,267 Continuation US8296812B1 (en) | 2006-09-01 | 2006-09-01 | Streaming video using erasure encoding |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130276040A1 true US20130276040A1 (en) | 2013-10-17 |
Family
ID=47018666
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/515,267 Active 2027-09-24 US8296812B1 (en) | 2006-09-01 | 2006-09-01 | Streaming video using erasure encoding |
US13/624,676 Abandoned US20130276040A1 (en) | 2006-09-01 | 2012-09-21 | Streaming video using erasure encoding |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/515,267 Active 2027-09-24 US8296812B1 (en) | 2006-09-01 | 2006-09-01 | Streaming video using erasure encoding |
Country Status (1)
Country | Link |
---|---|
US (2) | US8296812B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130013798A1 (en) * | 2011-07-06 | 2013-01-10 | Cleversafe, Inc. | Distribution of multi-media content to a user device |
US20140157337A1 (en) * | 2012-11-30 | 2014-06-05 | At&T Intellectual Property I, L.P. | Multi-Stage Batching of Content Distribution in a Media Distribution System |
US9723343B2 (en) | 2010-11-29 | 2017-08-01 | At&T Intellectual Property I, L.P. | Content placement |
CN107851112A (en) * | 2015-07-08 | 2018-03-27 | 云聚公司 | For the system and method from camera secure transmission signal |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104079369A (en) * | 2013-03-28 | 2014-10-01 | 株式会社日立制作所 | Server, data caching method as well as communication system and method using server |
US10608784B2 (en) | 2016-03-15 | 2020-03-31 | ClineHair Commercial Endeavors | Distributed storage system data management and security |
US20190036648A1 (en) * | 2014-05-13 | 2019-01-31 | Datomia Research Labs Ou | Distributed secure data storage and transmission of streaming media content |
US10931402B2 (en) * | 2016-03-15 | 2021-02-23 | Cloud Storage, Inc. | Distributed storage system data management and security |
FR3076001B1 (en) * | 2017-12-27 | 2021-05-28 | Bull Sas | DATA STORAGE PROCESS AND APPLICATION EXECUTION PROCESS WITH REDUCTION IN ACCESS TIME TO STORED DATA |
EP3918484A4 (en) | 2019-01-29 | 2023-03-29 | Cloud Storage, Inc. | Encoding and storage node repairing method for minimum storage regenerating codes for distributed storage systems |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091825A1 (en) * | 2000-08-17 | 2002-07-11 | Shuster Gary Stephen | Method and apparatus for improving bandwidth efficiency in a computer network |
US20030204856A1 (en) * | 2002-04-30 | 2003-10-30 | Buxton Mark J. | Distributed server video-on-demand system |
US6678855B1 (en) * | 1999-12-02 | 2004-01-13 | Microsoft Corporation | Selecting K in a data transmission carousel using (N,K) forward error correction |
US20040128343A1 (en) * | 2001-06-19 | 2004-07-01 | Mayer Daniel J | Method and apparatus for distributing video programs using partial caching |
US20040143672A1 (en) * | 2003-01-07 | 2004-07-22 | Microsoft Corporation | System and method for distributing streaming content through cooperative networking |
US6970937B1 (en) * | 2000-06-15 | 2005-11-29 | Abacast, Inc. | User-relayed data broadcasting |
US20060218607A1 (en) * | 2005-03-09 | 2006-09-28 | Vvond, Inc. | System and method for trick play of highly compressed video data |
Family Cites Families (158)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701582A (en) | 1989-08-23 | 1997-12-23 | Delta Beta Pty. Ltd. | Method and apparatus for efficient transmissions of programs |
US6519693B1 (en) * | 1989-08-23 | 2003-02-11 | Delta Beta, Pty, Ltd. | Method and system of program transmission optimization using a redundant transmission sequence |
US5172413A (en) | 1990-12-20 | 1992-12-15 | Sasktel | Secure hierarchial video delivery system and method |
US5132992A (en) | 1991-01-07 | 1992-07-21 | Paul Yurt | Audio and video transmission and receiving system |
US5528281A (en) | 1991-09-27 | 1996-06-18 | Bell Atlantic Network Services | Method and system for accessing multimedia data over public switched telephone network |
ATE183352T1 (en) | 1992-12-09 | 1999-08-15 | Discovery Communicat Inc | IMPROVED TOP-UP TERMINAL FOR CABLE TELEVISION DISTRIBUTION SYSTEMS |
US20020100052A1 (en) | 1999-01-06 | 2002-07-25 | Daniels John J. | Methods for enabling near video-on-demand and video-on-request services using digital video recorders |
US5414455A (en) | 1993-07-07 | 1995-05-09 | Digital Equipment Corporation | Segmented video on demand system |
US5606359A (en) | 1994-06-30 | 1997-02-25 | Hewlett-Packard Company | Video on demand system with multiple data sources configured to provide vcr-like services |
BR9508403A (en) | 1994-07-14 | 1997-11-11 | Johnson Grace Company | Method and apparatus for image compression |
US5583868A (en) | 1994-07-25 | 1996-12-10 | Microsoft Corporation | Method and system for combining data from multiple servers into a single continuous data stream using a switch |
JPH0879685A (en) | 1994-08-31 | 1996-03-22 | Sony Corp | Program reproducing device for near-video-on-demand system |
US5761417A (en) * | 1994-09-08 | 1998-06-02 | International Business Machines Corporation | Video data streamer having scheduler for scheduling read request for individual data buffers associated with output ports of communication node to one storage node |
US5926205A (en) | 1994-10-19 | 1999-07-20 | Imedia Corporation | Method and apparatus for encoding and formatting data representing a video program to provide multiple overlapping presentations of the video program |
US5694559A (en) | 1995-03-07 | 1997-12-02 | Microsoft Corporation | On-line help method and system utilizing free text query |
DE69620289T2 (en) * | 1995-05-08 | 2002-12-12 | Box Worldwide Inc | Interactive video system |
US5721878A (en) * | 1995-06-07 | 1998-02-24 | International Business Machines Corporation | Multimedia control system and method for controlling multimedia program presentation |
US5815662A (en) | 1995-08-15 | 1998-09-29 | Ong; Lance | Predictive memory caching for media-on-demand systems |
US5933603A (en) | 1995-10-27 | 1999-08-03 | Emc Corporation | Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location |
US5948070A (en) | 1995-10-31 | 1999-09-07 | Nec Corporation | File transfer systems, file transfer methods and storage media for storing file transfer programs |
US5877812A (en) | 1995-11-21 | 1999-03-02 | Imedia Corporation | Method and apparatus for increasing channel utilization for digital video transmission |
JP3371186B2 (en) | 1995-11-27 | 2003-01-27 | ソニー株式会社 | Video data distribution system and video data receiving device |
US5765164A (en) | 1995-12-21 | 1998-06-09 | Intel Corporation | Apparatus and method for management of discontinuous segments of multiple audio, video, and data streams |
US5602918A (en) | 1995-12-22 | 1997-02-11 | Virtual Open Network Environment Corp. | Application level security system and method |
IL117133A (en) | 1996-02-14 | 1999-07-14 | Olivr Corp Ltd | Method and system for providing on-line virtual reality movies |
US5838314A (en) | 1996-02-21 | 1998-11-17 | Message Partners | Digital video services system with optional interactive advertisement capabilities |
US6055314A (en) | 1996-03-22 | 2000-04-25 | Microsoft Corporation | System and method for secure purchase and delivery of video content programs |
US5831662A (en) | 1996-04-04 | 1998-11-03 | Hughes Electronics Corporation | Near on-demand digital information delivery system and method using signal fragmentation and sequencing to reduce average bandwidth and peak bandwidth variability |
US5884031A (en) | 1996-10-01 | 1999-03-16 | Pipe Dream, Inc. | Method for connecting client systems into a broadcast network |
US6037983A (en) | 1996-11-08 | 2000-03-14 | Hughes Electronics Corporation | High quality reduced latency transmission of video objects |
US6604242B1 (en) | 1998-05-18 | 2003-08-05 | Liberate Technologies | Combining television broadcast and personalized/interactive information |
WO1998028915A2 (en) | 1996-12-23 | 1998-07-02 | Koninklijke Philips Electronics N.V. | Method and system for supplying data streams |
JP3780623B2 (en) * | 1997-05-16 | 2006-05-31 | 株式会社日立製作所 | Video description method |
US6038560A (en) | 1997-05-21 | 2000-03-14 | Oracle Corporation | Concept knowledge base search and retrieval system |
JPH11150723A (en) | 1997-07-29 | 1999-06-02 | Matsushita Electric Ind Co Ltd | Vod service system |
US20020031331A1 (en) | 1997-08-12 | 2002-03-14 | Index Systems, Inc. | Apparatus and methods for voice titles |
US6397251B1 (en) | 1997-09-02 | 2002-05-28 | International Business Machines Corporation | File server for multimedia file distribution |
US6212549B1 (en) | 1997-10-06 | 2001-04-03 | Nexprise, Inc. | Trackpoint-based computer-implemented systems and methods for facilitating collaborative project development and communication |
US5928331A (en) | 1997-10-30 | 1999-07-27 | Matsushita Electric Industrial Co., Ltd. | Distributed internet protocol-based real-time multimedia streaming architecture |
US6184878B1 (en) | 1997-12-23 | 2001-02-06 | Sarnoff Corporation | Interactive world wide web access using a set top terminal in a video on demand system |
US6018359A (en) | 1998-04-24 | 2000-01-25 | Massachusetts Institute Of Technology | System and method for multicast video-on-demand delivery system |
US6938258B1 (en) | 1998-05-26 | 2005-08-30 | Rockwell Collins | Message processor for a passenger entertainment system, method and article of manufacture |
BR9912386A (en) | 1998-07-23 | 2001-10-02 | Diva Systems Corp | System and process for generating and using an interactive user interface |
US6307487B1 (en) | 1998-09-23 | 2001-10-23 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US6853385B1 (en) | 1999-11-09 | 2005-02-08 | Broadcom Corporation | Video, audio and graphics decode, composite and display system |
US7051360B1 (en) | 1998-11-30 | 2006-05-23 | United Video Properties, Inc. | Interactive television program guide with selectable languages |
US6804825B1 (en) | 1998-11-30 | 2004-10-12 | Microsoft Corporation | Video on demand methods and systems |
US6324519B1 (en) | 1999-03-12 | 2001-11-27 | Expanse Networks, Inc. | Advertisement auction system |
US6760916B2 (en) | 2000-01-14 | 2004-07-06 | Parkervision, Inc. | Method, system and computer program product for producing and distributing enhanced media downstreams |
JP2001160066A (en) * | 1998-12-25 | 2001-06-12 | Matsushita Electric Ind Co Ltd | Device and method for processing data and recording medium, and program for allowing computer to execute data processing method |
US6820144B2 (en) | 1999-04-06 | 2004-11-16 | Microsoft Corporation | Data format for a streaming information appliance |
US6502139B1 (en) * | 1999-06-01 | 2002-12-31 | Technion Research And Development Foundation Ltd. | System for optimizing video on demand transmission by partitioning video program into multiple segments, decreasing transmission rate for successive segments and repeatedly, simultaneously transmission |
US6640241B1 (en) | 1999-07-19 | 2003-10-28 | Groove Networks, Inc. | Method and apparatus for activity-based collaboration by a computer system equipped with a communications manager |
US6463508B1 (en) | 1999-07-19 | 2002-10-08 | International Business Machines Corporation | Method and apparatus for caching a media stream |
US6785704B1 (en) | 1999-12-20 | 2004-08-31 | Fastforward Networks | Content distribution system for operation over an internetwork including content peering arrangements |
US7155735B1 (en) * | 1999-10-08 | 2006-12-26 | Vulcan Patents Llc | System and method for the broadcast dissemination of time-ordered data |
US7240359B1 (en) | 1999-10-13 | 2007-07-03 | Starz Entertainment, Llc | Programming distribution system |
US7984463B2 (en) | 2002-03-29 | 2011-07-19 | Starz Entertainment, Llc | Instant video on demand playback |
TW455694B (en) | 1999-12-21 | 2001-09-21 | Asia Optical Co Inc | Method and device to adjust the eye span in the way of shifting the position of prism and eye piece |
US7228556B2 (en) | 1999-12-21 | 2007-06-05 | Tivo Inc. | Distributed, interactive television program guide; system and method |
WO2001056244A1 (en) * | 2000-01-26 | 2001-08-02 | Sony Corporation | Data transmission system |
US6701528B1 (en) | 2000-01-26 | 2004-03-02 | Hughes Electronics Corporation | Virtual video on demand using multiple encrypted video segments |
US20050259682A1 (en) * | 2000-02-03 | 2005-11-24 | Yuval Yosef | Broadcast system |
US6622305B1 (en) | 2000-02-25 | 2003-09-16 | Opentv, Inc. | System and method for displaying near video on demand |
US20040123324A1 (en) | 2000-03-07 | 2004-06-24 | Sazzad Sharif M. | Methods and apparatus for providing video services such as Video-on-Demand, news and advertising services |
US6728763B1 (en) | 2000-03-09 | 2004-04-27 | Ben W. Chen | Adaptive media streaming server for playing live and streaming media content on demand through web client's browser with no additional software or plug-ins |
US20010042249A1 (en) | 2000-03-15 | 2001-11-15 | Dan Knepper | System and method of joining encoded video streams for continuous play |
US7398312B1 (en) | 2000-03-29 | 2008-07-08 | Lucent Technologies Inc. | Method and system for caching streaming multimedia on the internet |
WO2001090921A2 (en) | 2000-05-25 | 2001-11-29 | Kanisa, Inc. | System and method for automatically classifying text |
US20010051998A1 (en) * | 2000-06-09 | 2001-12-13 | Henderson Hendrick P. | Network interface having client-specific information and associated method |
US6731605B1 (en) | 2000-06-19 | 2004-05-04 | Sharp Laboratories Of America, Inc. | Prioritized optimal server side bandwidth allocation in a multimedia session with push and pull sources |
US7085843B2 (en) | 2000-07-13 | 2006-08-01 | Lucent Technologies Inc. | Method and system for data layout and replacement in distributed streaming caches on a network |
US7379963B1 (en) | 2000-07-14 | 2008-05-27 | Knownow-Delaware | Delivery of any type of information to anyone anytime anywhere |
AU2001283004A1 (en) | 2000-07-24 | 2002-02-05 | Vivcom, Inc. | System and method for indexing, searching, identifying, and editing portions of electronic multimedia files |
US6801947B1 (en) | 2000-08-01 | 2004-10-05 | Nortel Networks Ltd | Method and apparatus for broadcasting media objects with guaranteed quality of service |
US6804719B1 (en) | 2000-08-24 | 2004-10-12 | Microsoft Corporation | Method and system for relocating files that are partially stored in remote storage |
US6944585B1 (en) | 2000-09-01 | 2005-09-13 | Oracle International Corporation | Dynamic personalized content resolution for a media server |
US7716358B2 (en) | 2000-09-12 | 2010-05-11 | Wag Acquisition, Llc | Streaming media buffering system |
US6763392B1 (en) | 2000-09-29 | 2004-07-13 | Microsoft Corporation | Media streaming methods and arrangements |
US6970939B2 (en) | 2000-10-26 | 2005-11-29 | Intel Corporation | Method and apparatus for large payload distribution in a network |
ATE296514T1 (en) | 2000-10-26 | 2005-06-15 | Prismedia Networks Inc | METHOD AND DEVICE FOR PARALLEL MESSAGE TRANSMISSION IN REAL TIME FROM FILE SEGMENTED |
WO2002035359A2 (en) | 2000-10-26 | 2002-05-02 | Prismedia Networks, Inc. | Method and system for managing distributed content and related metadata |
US7188357B1 (en) * | 2000-11-16 | 2007-03-06 | Unisys Corporation | Video-on demand video server disk/memory streaming selection methodology |
US7246369B1 (en) | 2000-12-27 | 2007-07-17 | Info Valve Computing, Inc. | Broadband video distribution system using segments |
US20020129375A1 (en) | 2001-01-08 | 2002-09-12 | Artista Communications, Inc. | Adaptive video on-demand system and method using tempo-differential file transfer |
US6630963B1 (en) | 2001-01-23 | 2003-10-07 | Digeo, Inc. | Synchronizing a video program from a television broadcast with a secondary audio program |
US6789106B2 (en) | 2001-02-02 | 2004-09-07 | Sony Corporation | Selective capture and storage of A/V objects in an interactive multimedia system |
IL148080A0 (en) | 2001-02-13 | 2002-09-12 | Hosen Eliav | System for distributing video and content on demand |
US6973667B2 (en) | 2001-03-01 | 2005-12-06 | Minerva Networks, Inc. | Method and system for providing time-shifted delivery of live media programs |
WO2002071242A1 (en) | 2001-03-01 | 2002-09-12 | Akamai Technologies, Inc. | Optimal route selection in a content delivery network |
US20020143959A1 (en) | 2001-04-03 | 2002-10-03 | David El-Baze | Method and apparatus for interactive direct peer-to-peer multimedia streaming |
US20030084461A1 (en) | 2001-10-25 | 2003-05-01 | Khoi Hoang | Method and apparatus for transmitting non-VOD services |
US20020162109A1 (en) | 2001-04-26 | 2002-10-31 | Koninklijke Philips Electronics N.V. | Distributed storage on a P2P network architecture |
CA2447555A1 (en) | 2001-06-04 | 2002-12-12 | Nct Group, Inc. | System and method for increasing the effective bandwidth of a communications network |
US6742082B1 (en) | 2001-06-12 | 2004-05-25 | Network Appliance | Pre-computing streaming media payload method and apparatus |
US20040250286A1 (en) | 2001-06-15 | 2004-12-09 | Fraser Allistair M | System for communication of streaming digital data |
WO2003013141A1 (en) | 2001-07-31 | 2003-02-13 | Matsushita Electric Industrial Co., Ltd. | System, apparatus, and method of contents distribution, and program and program recording medium directed to the same |
US7080400B1 (en) * | 2001-08-06 | 2006-07-18 | Navar Murgesh S | System and method for distributed storage and presentation of multimedia in a cable network environment |
KR20010088742A (en) | 2001-08-28 | 2001-09-28 | 문의선 | Parallel Information Delievery Method Based on Peer-to-Peer Enabled Distributed Computing Technology |
JP4446368B2 (en) | 2001-09-14 | 2010-04-07 | 富士通株式会社 | Collaboration method, system, program, and recording medium |
WO2003039154A1 (en) | 2001-10-10 | 2003-05-08 | Xtend Networks Ltd. | Method and system for a true-video-on-demand service in a catv network |
US20030097661A1 (en) * | 2001-11-16 | 2003-05-22 | Li Hua Harry | Time-shifted television over IP network system |
KR20030056701A (en) | 2001-12-28 | 2003-07-04 | 한국전자통신연구원 | Apparatus and method for providing multimedia streaming service by using point-to-point connection |
US7010762B2 (en) | 2002-02-27 | 2006-03-07 | At&T Corp. | Pre-loading content to caches for information appliances |
US20030188317A1 (en) | 2002-03-28 | 2003-10-02 | Liew William J. | Advertisement system and methods for video-on-demand services |
US20040016000A1 (en) | 2002-04-23 | 2004-01-22 | Zhi-Li Zhang | Video streaming having controlled quality assurance over best-effort networks |
US20030204602A1 (en) | 2002-04-26 | 2003-10-30 | Hudson Michael D. | Mediated multi-source peer content delivery network architecture |
US8635355B2 (en) | 2002-05-01 | 2014-01-21 | Stmicroelectronics, Inc. | Method for pre-caching content to enable true VOD systems from NVOD or stream limited VOD systems |
US20040133923A1 (en) | 2002-08-21 | 2004-07-08 | Watson Scott F. | Digital home movie library |
US20050038724A1 (en) | 2002-08-30 | 2005-02-17 | Navio Systems, Inc. | Methods and apparatus for enabling transaction relating to digital assets |
US7360235B2 (en) | 2002-10-04 | 2008-04-15 | Scientific-Atlanta, Inc. | Systems and methods for operating a peripheral record/playback device in a networked multimedia system |
US7039712B2 (en) | 2002-10-16 | 2006-05-02 | Microsoft Corporation | Network connection setup procedure for traffic admission control and implicit network bandwidth reservation |
US20040107242A1 (en) | 2002-12-02 | 2004-06-03 | Microsoft Corporation | Peer-to-peer content broadcast transfer mechanism |
AU2003278481A1 (en) | 2002-12-06 | 2004-06-30 | Koninklijke Philips Electronics N.V. | Channel tapping in a near-video-on-demand system |
US20040143850A1 (en) * | 2003-01-16 | 2004-07-22 | Pierre Costa | Video Content distribution architecture |
KR100427143B1 (en) | 2003-01-17 | 2004-04-14 | 엔에이치엔(주) | Method for Transmitting and Dowloading Streaming Data |
US20040158867A1 (en) * | 2003-02-10 | 2004-08-12 | General Instrument Corporation | Methods, systems, and apparatus for determining transport stream channels for video-on-demand applications |
US7324555B1 (en) | 2003-03-20 | 2008-01-29 | Infovalue Computing, Inc. | Streaming while fetching broadband video objects using heterogeneous and dynamic optimized segmentation size |
WO2004088501A1 (en) | 2003-03-28 | 2004-10-14 | Thomson Licensing S.A. | System and method for transmitting media based files |
WO2004095201A2 (en) | 2003-04-09 | 2004-11-04 | Intervideo Inc. | Systems and methods for caching multimedia data |
US7577750B2 (en) | 2003-05-23 | 2009-08-18 | Microsoft Corporation | Systems and methods for peer-to-peer collaboration to enhance multimedia streaming |
US7415527B2 (en) | 2003-06-13 | 2008-08-19 | Satyam Computer Services Limited Of Mayfair Centre | System and method for piecewise streaming of video using a dedicated overlay network |
US7234077B2 (en) | 2003-06-24 | 2007-06-19 | International Business Machines Corporation | Rapid restoration of file system usage in very large file systems |
US20050015511A1 (en) * | 2003-07-02 | 2005-01-20 | Nec Laboratories America, Inc. | Accelerated large data distribution in overlay networks |
US7941554B2 (en) | 2003-08-01 | 2011-05-10 | Microsoft Corporation | Sparse caching for streaming media |
US20050055718A1 (en) | 2003-09-05 | 2005-03-10 | Stone Christopher J. | Peer-to-peer architecture for sharing video on demand content |
US20060008256A1 (en) | 2003-10-01 | 2006-01-12 | Khedouri Robert K | Audio visual player apparatus and system and method of content distribution using the same |
TW200518070A (en) | 2003-10-10 | 2005-06-01 | Matsushita Electric Ind Co Ltd | Recording medium, reproduction device, program, and reproduction method |
US7614071B2 (en) | 2003-10-10 | 2009-11-03 | Microsoft Corporation | Architecture for distributed sending of media data |
US20050108414A1 (en) | 2003-11-14 | 2005-05-19 | Taylor Thomas M. | System and method for transmitting data in computer systems using virtual streaming |
ATE491291T1 (en) | 2004-01-30 | 2010-12-15 | Ericsson Telefon Ab L M | PACKET SEQUENCE CONTROL FOR DATA STREAM TRANSMISSION |
US20050177853A1 (en) | 2004-02-11 | 2005-08-11 | Alio, Inc. | System and Methodology for Distributed Delivery of Online Content in Response to Client Selections from an Online Catalog |
US20050216941A1 (en) | 2004-03-26 | 2005-09-29 | Primedia Workplace Learning, Lp | System and method for controlling video-on-demand content |
US8010985B2 (en) * | 2004-06-01 | 2011-08-30 | General Instrument Corporation | Method and system for resource management in a video on-demand server |
US7631098B2 (en) | 2004-06-08 | 2009-12-08 | International Business Machines Corporation | Method, system and program product for optimized concurrent data download within a grid computing environment |
US20060037037A1 (en) | 2004-06-14 | 2006-02-16 | Tony Miranz | System and method for providing virtual video on demand |
US8904458B2 (en) | 2004-07-29 | 2014-12-02 | At&T Intellectual Property I, L.P. | System and method for pre-caching a first portion of a video file on a set-top box |
JP2006047067A (en) | 2004-08-03 | 2006-02-16 | Funai Electric Co Ltd | Human body detecting device and human body detecting method |
US7174385B2 (en) | 2004-09-03 | 2007-02-06 | Microsoft Corporation | System and method for receiver-driven streaming in a peer-to-peer network |
KR100584323B1 (en) | 2004-10-04 | 2006-05-26 | 삼성전자주식회사 | Method for streaming multimedia content |
US20060106807A1 (en) | 2004-11-18 | 2006-05-18 | Microsoft Corporation | System and method for transferring a file in advance of its use |
US7587454B2 (en) | 2004-12-08 | 2009-09-08 | Nice Systems Ltd. | Video streaming parameter optimization and QoS |
US7633887B2 (en) | 2005-01-21 | 2009-12-15 | Panwar Shivendra S | On demand peer-to-peer video streaming with multiple description coding |
US20060184688A1 (en) | 2005-02-17 | 2006-08-17 | Nec Laboratories America, Inc. | System and Method for Parallel Indirect Streaming of Stored Media from Multiple Sources |
US20060190975A1 (en) | 2005-02-24 | 2006-08-24 | Carlos Gonzalez | Method and apparatus for providing video on-demand |
US8219635B2 (en) | 2005-03-09 | 2012-07-10 | Vudu, Inc. | Continuous data feeding in a distributed environment |
US20090025046A1 (en) | 2005-03-09 | 2009-01-22 | Wond, Llc | Hybrid architecture for media services |
US9176955B2 (en) | 2005-03-09 | 2015-11-03 | Vvond, Inc. | Method and apparatus for sharing media files among network nodes |
US8904463B2 (en) | 2005-03-09 | 2014-12-02 | Vudu, Inc. | Live video broadcasting on distributed networks |
US7937379B2 (en) | 2005-03-09 | 2011-05-03 | Vudu, Inc. | Fragmentation of a file for instant access |
US7698451B2 (en) | 2005-03-09 | 2010-04-13 | Vudu, Inc. | Method and apparatus for instant playback of a movie title |
US20090019468A1 (en) | 2005-03-09 | 2009-01-15 | Vvond, Llc | Access control of media services over an open network |
US20080022343A1 (en) | 2006-07-24 | 2008-01-24 | Vvond, Inc. | Multiple audio streams |
US7191215B2 (en) | 2005-03-09 | 2007-03-13 | Marquee, Inc. | Method and system for providing instantaneous media-on-demand services by transmitting contents in pieces from client machines |
BRPI0614565A2 (en) * | 2005-08-12 | 2009-08-04 | Nokia Siemens Networks Gmbh Co | resilient multi-source streaming video on demand system for a peer-to-peer subscriber community |
US20070143804A1 (en) * | 2005-12-15 | 2007-06-21 | General Instrument Corporation | System, method and apparatus for distributing Video-On-Demand (VOD) |
US20090024573A1 (en) | 2006-07-18 | 2009-01-22 | Vvond, Inc. | Method and system for performing search on a client device |
US8316146B2 (en) | 2007-07-13 | 2012-11-20 | Spotify Ab | Peer-to-peer streaming of media content |
-
2006
- 2006-09-01 US US11/515,267 patent/US8296812B1/en active Active
-
2012
- 2012-09-21 US US13/624,676 patent/US20130276040A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678855B1 (en) * | 1999-12-02 | 2004-01-13 | Microsoft Corporation | Selecting K in a data transmission carousel using (N,K) forward error correction |
US6970937B1 (en) * | 2000-06-15 | 2005-11-29 | Abacast, Inc. | User-relayed data broadcasting |
US20020091825A1 (en) * | 2000-08-17 | 2002-07-11 | Shuster Gary Stephen | Method and apparatus for improving bandwidth efficiency in a computer network |
US20040128343A1 (en) * | 2001-06-19 | 2004-07-01 | Mayer Daniel J | Method and apparatus for distributing video programs using partial caching |
US20030204856A1 (en) * | 2002-04-30 | 2003-10-30 | Buxton Mark J. | Distributed server video-on-demand system |
US20040143672A1 (en) * | 2003-01-07 | 2004-07-22 | Microsoft Corporation | System and method for distributing streaming content through cooperative networking |
US20060218607A1 (en) * | 2005-03-09 | 2006-09-28 | Vvond, Inc. | System and method for trick play of highly compressed video data |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9723343B2 (en) | 2010-11-29 | 2017-08-01 | At&T Intellectual Property I, L.P. | Content placement |
US20130013798A1 (en) * | 2011-07-06 | 2013-01-10 | Cleversafe, Inc. | Distribution of multi-media content to a user device |
US20140157337A1 (en) * | 2012-11-30 | 2014-06-05 | At&T Intellectual Property I, L.P. | Multi-Stage Batching of Content Distribution in a Media Distribution System |
US9197712B2 (en) * | 2012-11-30 | 2015-11-24 | At&T Intellectual Property I, L.P. | Multi-stage batching of content distribution in a media distribution system |
CN107851112A (en) * | 2015-07-08 | 2018-03-27 | 云聚公司 | For the system and method from camera secure transmission signal |
Also Published As
Publication number | Publication date |
---|---|
US8296812B1 (en) | 2012-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20130276040A1 (en) | Streaming video using erasure encoding | |
US6725267B1 (en) | Prefetched data in a digital broadcast system | |
US6604224B1 (en) | Method of performing content integrity analysis of a data stream | |
US8943218B2 (en) | Method and apparatus for a fault resilient collaborative media serving array | |
US20090055880A1 (en) | Method of distributing video-on-demand over an internet protocol network infrastructure | |
KR20020035571A (en) | Vod from a server or a user to another user | |
US20020026501A1 (en) | Decreased idle time and constant bandwidth data-on-demand broadcast delivery matrices | |
US20020138845A1 (en) | Methods and systems for transmitting delayed access client generic data-on demand services | |
US20230010330A1 (en) | Methods and systems for streaming content | |
TW571594B (en) | Methods for providing video-on-demand services for broadcasting systems | |
EP1570667B1 (en) | Multi-point service injection in a broadcast system | |
TWI223563B (en) | Methods and systems for transmitting delayed access client generic data-on-demand services | |
CN100484237C (en) | Data requesting digital broadcast system transmitting via preset data | |
CA2428829A1 (en) | Decreased idle time and constant bandwidth data-on-demand broadcast delivery matrices | |
KR20230047717A (en) | Broadcasting System Based on Contents Pool And Method | |
Afrin et al. | An adaptive quasi harmonic broadcasting scheme with optimal bandwidth requirement | |
WO2002086673A2 (en) | Transmission of delayed access client data and demand | |
AU2001253797A1 (en) | Universal digital broadcast system and methods | |
KR20030060066A (en) | Universal stb architectures and control methods | |
KR20030051800A (en) | Decreased idle time and constant bandwidth data-on-demand broadcast delivery ma-trices | |
KR20040063795A (en) | Transmission of delayed access client data and demand | |
EP1402331A2 (en) | Methods and systems for transmitting delayed access client generic data-on demand services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: VUDU, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GANESAN, PRASANNA;REEL/FRAME:029376/0442 Effective date: 20121105 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |