IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
UP-0838465
(2004-05-03)
|
등록번호 |
US-7720983
(2010-06-10)
|
발명자
/ 주소 |
- Klemets, Anders E.
- Oliveira, Eduardo P.
- Bhatt, Sanjay
- Wynn, Tong L.
|
출원인 / 주소 |
|
대리인 / 주소 |
|
인용정보 |
피인용 횟수 :
25 인용 특허 :
21 |
초록
▼
Fast startup for streaming media includes one or both of a technique for predictive start and a technique for switching delivery channel(s) during streaming. Predictive start allows a media content source to predict which media stream(s) are desired by the requesting client device and begin streamin
Fast startup for streaming media includes one or both of a technique for predictive start and a technique for switching delivery channel(s) during streaming. Predictive start allows a media content source to predict which media stream(s) are desired by the requesting client device and begin streaming those predicted media stream(s) to the client device. The delivery channel switching technique allows the media content source to begin streaming the media stream(s) using one delivery channel (e.g., using the Transmission Control Protocol (TCP)), and then check whether another delivery channel (e.g., using the User Datagram Protocol (UDP)) will work and switch to that other delivery channel if it will work.
대표청구항
▼
The invention claimed is: 1. A method, comprising: receiving, at a server device, a predictive play request, from a client device, the predictive play request including information about the client device, information about a client using the client device, and information about a connection betwee
The invention claimed is: 1. A method, comprising: receiving, at a server device, a predictive play request, from a client device, the predictive play request including information about the client device, information about a client using the client device, and information about a connection between the client device and the server device; predicting, at the server device and in response to the predictive play request, one or more media streams desired by the client device; streaming at least the predicted one or more media streams from the server device to the client device; choosing, by the server device, not to predict one or more media streams to be streamed to the client device when a likelihood of making an incorrect prediction exceeds a predetermined threshold and communicating, to the client device, an identification of one or more available media streams that can be streamed to the client device without streaming the one or more available media streams, the one or more available media streams being streamed to the client device at a request of the client device; receiving a determination, from the client device, of whether at least one media stream different from the predicted one or more media streams are selected for streaming to the client device; if the at least one media stream different from the predicted one or more media streams are selected for streaming to the client device, then receiving, from the client device, an indication of the selected at least one media stream; streaming the one or more media streams from the server device to the client device using TCP (Transmission Control Protocol); in response to probing to determine whether data can be streamed from the server device to the client device using UDP (User Datagram Protocol), switching to streaming the one or more media streams from the server device to the client device using UDP when the probing indicates that data can be streamed from the server device to the client device using UDP; wherein the probing includes: receiving, by the server device, a UDP probing packet from the client device; sending, by the server device, a UDP probing response packet to the client device, to indicate to the client device that the UDP probing packet was received by the server device, when the server device can stream data to client device using UDP; and receiving, by the server device, additional UDP probing packets from the client device to verify that data cannot be streamed from the server device to the client device using UDP when the client device determines that the server device did not receive the UDP probing packet; continuing to stream the one or more media streams from the server device to the client device using TCP when the probing indicates that data cannot be streamed from the server device to the client device using UDP. 2. A method as recited in claim 1, wherein the probing comprises: receiving from the client device one or more UDP probing packets; sending, in response to each of the one or more UDP probing packets, a UDP response packet from the server device to the client device; determining, if at least one of the UDP response packets is received by the client device, that at least some data can be streamed from the server device to the client device using UDP; and determining, if none of the UDP response packets are received by the client device, that data cannot be streamed from the server device to the client device using UDP. 3. One or more computer readable storage media having stored thereon a plurality of instructions that, when executed by one or more processors, causes the one or more processors to: receive, from a requestor, a predictive play request for media content to be streamed to the requestor, the predictive play request including information about the requestor and information about a connection to the requestor; predicting, in response to the predictive play request, one or more media streams desired by the requestor; streaming, using Transmission Control Protocol (TCP) packets, at least the predicted one or more media streams to the requestor; choosing not to predict one or more media streams to be streamed to the requestor when a likelihood of making an incorrect prediction exceeds a predetermined threshold and communicating, to the requestor, an identification of one or more available media streams that can be streamed to the requestor without streaming the one or more available media streams, the one or more available media streams being streamed to the requestor at a request of the requestor; receiving a determination, from the requestor, of whether at least one media stream different from the predicted one or more media streams are selected for streaming to the requestor; if the at least one media stream different from the predicted one or more media streams are selected for streaming to the requestor, then receiving, from the requestor, an indication of the selected at least one media stream; receive, concurrent with the at least a portion of the content being streamed to the requestor, a request to change to using User Datagram Protocol (UDP) packets; and stream one or more additional portions of the media content to the requestor using UDP packets rather than TCP packets, wherein the request to change to using UDP packets is received after receiving probing to determine whether media content can be streamed to the requestor using UDP packets and a determination has been made that media content can be streamed to the requestor using UDP packets, the probing occurring while the at least a portion of the media content is being streamed to the requestor using TCP packets, and wherein the probing includes receiving a UDP probing packet from the requestor and sending a UDP probing response packet to the requestor, to indicate to the requestor that the UDP probing packet was received, when it is determined that the UDP packets can be streamed to the requestor. 4. One or more computer readable storage media as recited in claim 3, the one or more additional portions of the media content streamed to the requestor using UDP packets including none of the at least a portion of the media content streamed to the requestor using TCP packets. 5. One or more computer readable storage media as recited in claim 3, wherein the instructions further cause the one or more processors to: send, after receipt of the request to change to using UDP packets, data representing control information to the requestor using TCP packets. 6. One or more computer readable storage media as recited in claim 3, wherein the instructions that cause the one or more processors to stream the one or more additional portions of the media content to the requestor using UDP packets rather than TCP packets comprise instructions that cause the one or more processors to stream one or more additional portions of only selected media streams of the media content to the requestor using UDP packets rather than TCP packets. 7. One or more computer readable storage media as recited in claim 3, wherein the request to change to using UDP packets comprises a Select request having one or more headers to indicate that the media content is to be streamed to the requestor using UDP packets. 8. One or more computer readable storage media as recited in claim 7, wherein the one or more headers comprises an X-Transport header with an RTP/UDP transport parameter. 9. One or more computer readable storage media as recited in claim 3, wherein the requestor comprises a client device. 10. One or more computer readable storage media as recited in claim 3, wherein the one or more processors are part of a server device. 11. One or more computer readable storage media having stored thereon a plurality of instructions that, when executed by one or more processors of a device, causes the one or more processors to: send, from the device to a media content source, a predictive play request, the predictive play request including information about the device, information about a client using the device, and information about a connection between the device and the media content source; receiving, at the device, at least a portion of media content predicted by the media content source to be desired by the device; receiving, at the device, an identification of one or more available media streams that can be streamed to the device without streaming the one or more available media streams, the one or more available media streams being streamed to the device at a request of the device, wherein the media content source chooses to not predict one or more media streams to be streamed to the device when a likelihood of making an incorrect prediction exceeds a predetermined threshold; communicating, by the device, whether at least one media stream different from the predicted one or more media streams are selected for streaming to the device; if the at least one media stream different from the predicted one or more media streams are selected for streaming to the device, then transmitting, from the device, an indication of the selected at least one media stream; receive, from the media content source, at least a portion of media content using Transmission Control Protocol (TCP) packets; send probing to determine, during receipt of the at least a portion of the media content using TCP packets, whether the media content can be streamed to the device using User Datagram Protocol (UDP) packets, wherein the send probing including sending a UDP probing packet to the media content source; send, if the device receives a probing response from the media content source indicating that the media content can be streamed to the device using UDP packets, a request to the media content source to stream the media content to the device using UDP packets, wherein the receiving the probing response includes receiving a UDP probing response packet, to indicate that the UDP probing packet was received, when it is determined that the media content source can stream UDP packets; and send additional UDP probing packets to the media content source to verify that data cannot be streamed from the media content source using UDP when it is determined that the media content source did not receive the UDP probing packet. 12. One or more computer readable storage media as recited in claim 11, wherein the instructions further cause the one or more processors to: receive, after having sent the request, data representing the media content using UDP packets and data representing control information using TCP packets. 13. One or more computer readable storage media as recited in claim 11, wherein the instructions that cause the one or more processors to send the request to the media content source comprise instructions that cause the one or more processors to send a request to the media content source to stream only selected media streams of the media content to the device using UDP packets. 14. One or more computer readable storage media as recited in claim 11, wherein the instructions that cause the one or more processors to determine whether the media content can be streamed to the device using UDP packets comprise instructions that cause the one or more processors to: send, to the media content source, a UDP probing packet; and determine, if a UDP response packet is received from the media content source in response to the UDP probing packet, whether media content can be streamed to the device using UDP packets, and otherwise determine whether media content cannot be streamed to the device using UDP packets. 15. One or more computer readable storage media as recited in claim 11, wherein the media content source comprises a server device. 16. One or more computer readable storage media as recited in claim 11, wherein the request comprises a Select request having an X-Transport header with an RTP/UDP transport parameter to indicate that the media content is to be streamed to the device using UDP packets. 17. One or more computer readable storage media as recited in claim 11, wherein the request comprises a HyperText Transport Protocol (HTTP) Post command. 18. One or more computer readable storage media as recited in claim 11, wherein the request comprises a HyperText Transport Protocol (HTTP) Get command. 19. One or more computer readable storage media having stored thereon a plurality of instructions that, when executed by one or more processors of a device, causes the one or more processors to: receive a predictive play request from a requestor, the predictive play request including information about the requestor device, information about the requestor, and information about a connection between the requestor device and a server device; predict, in response to the predictive play request, one or more media streams to be streamed to the requestor; stream the predicted one or more media streams to the requestor; communicate, to the requestor, an identification of the predicted one or more streams as well as an identification of one or more additional streams that are streamed to the requestor when requested by the requestor; choose not to predict one or more media streams to be streamed to the requestor when a likelihood of making an incorrect prediction exceeds a predetermined threshold and communicating, to the requestor, an identification of one or more available media streams that can be streamed to the requestor without streaming the one or more available media streams, the one or more available media streams being streamed to the requestor at a request of the requestor; receive a second request from the requestor requesting one or more selected streams if the requestor determines that the predicted one or more media streams streamed to the requestor are not desired by the requestor; identify and stream to the requestor, using Transmission Control Protocol (TCP), one or more streams that are capable of either replacing the predicted one or more streams and are able to be streamed in addition to the predicted one or more streams; in response to probing to determine whether data can be streamed from the server device to the requestor using User Diagram Protocol (UDP), switching to streaming the one or more media streams from the server device to the requestor using UDP when the probing indicates that data can be streamed from the server device to the requestor using UDP; wherein the probing includes receiving, by the server device, a UDP probing packet from the requestor and sending, by the server device, a UDP probing response packet to the requestor, to indicate to the requestor that the UDP probing packet was received, when the server device determines that the UDP packets can be streamed to the requestor; continuing to stream the one or more media streams from the server device to the requestor device using TCP when the probing indicates that data cannot be streamed from the server device to the requestor device using UDP; stop streaming the predicted one or more streams when the identified one or more streams are to replace the predicted one or more streams; and continue streaming the predicted one or more streams when the identified one or more streams are to be in addition to the predicted one or more streams. 20. One or more computer readable storage media as recited in claim 19, wherein the predictive play request comprises a request having a “Pragma: PredStart=1” header. 21. One or more computer readable storage media as recited in claim 19, wherein the instructions further cause the one or more processors to: receive, from the requestor, a request to stream a different media stream other than one of the predicted one or more media streams; stop streaming the one of the predicted one or more media streams to the requestor; and begin streaming the different media stream to the requestor. 22. One or more computer readable storage media as recited in claim 21, wherein the request to stream a different media stream other than one of the predicted one or more media streams comprises a Select request having a “pragma: stream-switch-entry” header with one or more parameters to indicate the different media stream. 23. One or more computer readable storage media as recited in claim 19, wherein the requestor comprises a client device. 24. One or more computer readable storage media as recited in claim 19, wherein the instructions that cause the one or more processors to predict one or more media streams to be streamed to the requestor comprise instructions that cause the one or more processors to predict the one or more media streams to be streamed to the requestor based at least in part on information included in the predictive play request. 25. One or more computer readable storage media as recited in claim 24, wherein the information included in the predictive play request comprises an identification of a connection speed between the requestor and the device. 26. One or more computer readable storage media as recited in claim 24, wherein the information included in the predictive play request comprises an identification of a language desired by the requestor. 27. One or more computer readable storage media as recited in claim 19, wherein the instructions that cause the one or more processors to predict one or more media streams to be streamed to the requestor comprise instructions that cause the one or more processors to predict the one or more media streams to be streamed to the requestor based at least in part on information, other than information included in the predictive play request, available to the device. 28. One or more computer readable storage media having stored thereon a plurality of instructions that, when executed by one or more processors of a device, causes the one or more processors to: send a predictive play request to a media content source, the predictive play request including information about the device, information about a user of the device, and information about a connection between the device and the media content source; receive, in response to the predictive play request, one or more media streams predicted by the media content source as being desired by the device; and receive a communication, from the media content source, identifying the predicted one or more streams as well as an identification of one or more additional streams that are streamed to the requestor when requested by the requestor; receive a communication, from the media content source, identifying one or more available media streams that can be streamed from the media content source but that are not streamed unless requested when it is determined that a likelihood of receiving an incorrect prediction exceeds a predetermined threshold; send a second request, to the media content source, requesting one or more selected streams if it is determined that the predicted one or more media streams are not desired; receive, using Transmission Control Protocol (TCP), one or more streams identified by the media content source that are capable of either replacing the predicted one or more streams and are able to be streamed in addition to the predicted one or more streams; in response to probing to determine whether data can be streamed from the media content source to the device using User Diagram Protocol (UDP), receiving the one or more media streams from the media content device to the device using UDP when the probing indicates that data can be streamed from the media content source to the device using UDP; wherein the probing includes sending, by the device, a UDP probing packet to the media content source and receiving, by the device, a UDP probing response packet to indicate to the device that the UDP probing packet was received when the media content source determines that the UDP packets can be streamed to the device; stop receiving the predicted one or more streams when the identified one or more streams are to replace the predicted one or more streams; and continue to receive the predicted one or more streams when the identified one or more streams are to be in addition to the predicted one or more streams. 29. One or more computer readable storage media as recited in claim 28, wherein the predictive play request comprises a request having a “Pragma: PredStart=1” header. 30. One or more computer readable storage media as recited in claim 28, wherein the instructions that cause the one or more processors to receive one or more media streams predicted by the media content source as being desired by the device cause the one or more processors to receive the one or more media streams predicted by the media content source as being desired by the device without the device having selected any of the one or more media streams. 31. One or more computer readable storage media as recited in claim 28, wherein the instructions further cause the one or more processors to: select a different media stream than one of the one or more media streams predicted by the media content source as being desired by the device; send, to the media content source, an indication of the different media stream; and receive, in response to the indication and from the media content source, the different media stream in place of the one of the one or more media streams predicted by the media content source as being desired by the device. 32. One or more computer readable storage media as recited in claim 31, wherein the indication of the different media stream comprises a Select request having a “pragma: stream-switch-entry” header with one or more parameters to indicate the different media stream. 33. One or more computer readable storage media as recited in claim 28, wherein the instructions further cause the one or more processors to: select a different media stream than the one or more media streams predicted by the media content source as being desired by the device; send, to the media content source, an indication of the different media stream; and receive, in response to the indication and from the media content source, the different media stream in addition to the one or more media streams predicted by the media content source as being desired by the device. 34. One or more computer readable storage media as recited in claim 33, wherein the indication of the different media stream comprises a Select request having a “pragma: stream-switch-entry” header with one or more parameters to indicate the different media stream. 35. One or more computer readable storage media as recited in claim 28, wherein the instructions further cause the one or more processors to include, in the predictive play request, information to be used by the media content source in predicting the one or more media streams. 36. One or more computer readable storage media as recited in claim 35, wherein the information included in the predictive play request comprises an identification of a connection speed between the device and the media content source. 37. One or more computer readable storage media as recited in claim 35, wherein the information included in the predictive play request comprises an identification of a language desired by the device. 38. A method, comprising: receiving, at a server device, a predictive play request from a client device, the predictive play request including information about the client device, information about a client using the client device, and information about a connection between the client device and the server device; predicting, at the server device and in response to the predictive play request, one or more media streams desired by the client device; streaming at least the predicted one or more media streams from the server device to the client device; choosing, by the server device, not to predict one or more media streams to be streamed to the client device when a likelihood of making an incorrect prediction exceeds a predetermined threshold and communicating, to the client device, an identification of one or more available media streams that can be streamed to the client device without streaming the one or more available media streams, the one or more available media streams being streamed to the client device at a request of the client device; receiving a determination, from the client device, of whether at least one media stream different from the predicted one or more media streams are selected for streaming to the client device; if the at least one media stream different from the predicted one or more media streams are selected for streaming to the client device, then receiving, from the client device, an indication of the selected at least one media stream; streaming, using TCP (Transmission Control Protocol), from the server device to the client device the selected at least one media stream rather than at least one of the predicted one or more media streams; in response to probing to determine whether data can be streamed from the server device to the client device using UDP (User Datagram Protocol), switching to streaming the one or more media streams from the server device to the client device using UDP when the probing indicates that data can be streamed from the server device to the client device using UDP; wherein the probing includes receiving, by the server device, a UDP probing packet from the client device and sending, by the server device, a UDP probing response packet to the client device, to indicate to the client device that the UDP probing packet was received, when the server device determines that the UDP packets can be streamed to the client device, continuing to stream the one or more media streams from the server device to the client device using TCP when the probing indicates that data cannot be streamed from the server device to the client device using UDP.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.