A live streaming system/method provides cross platform live streaming capabilities to mobile devices. A file format compatible with legacy HTTP infrastructure is used to deliver media over a persistent connection. Legacy client media players can dynamically change the encoded rate of the media delivered over a persistent connection. Standard HTTP servers may be used without modification, leveraging standard media players embedded in mobile devices for seamless media delivery over wireless networks with high bandwidth fluctuations.
Legal claims defining the scope of protection, as filed with the USPTO.
1. Apparatus for retrieving live streaming data from a server, comprising: a processor for executing a segment downloader and network proxy; a memory for storing downloaded segments; instructions executable by the processor to constitute a rendering engine for rendering downloaded data, wherein the rendering engine communicates through the network proxy; and instructions executable by the processor for: measuring bandwidth at a client device; selecting an appropriate bit rate for a current bandwidth in a delivery channel; selecting an appropriate encoding for the client device; and performing the following with respect to segments of the live streaming data: (1) requesting the segments from a server, (2) downloading the segments via the delivery channel, (3) storing the downloaded segments, (4) decrypting the stored segments, (5) parsing the decrypted segments, and (6) delivering the parsed segment data to a local media player through the network proxy, wherein the network proxy is a proxy server engaging in internal client-server media delivery with the local media player for delivering the parsed segment data to the local media player in response to explicit segment data requests from the local media player according to an internal client-server media delivery protocol.
2. Apparatus according to claim 1 , wherein the segments are requested and downloaded using the HTTP protocol.
3. Apparatus according to claim 1 , wherein the stored segments are deleted upon delivery of the parsed segment data to the local media player.
4. Apparatus according to claim 1 , wherein the stored segments are kept for a period of time after the parsed segment data is delivered to the local media player to support a rewind function.
5. Apparatus according to claim 1 , wherein segment parsing includes decoding individual frames.
6. Apparatus according to claim 1 , wherein segment parsing includes parsing file location information for use in generating playlists.
7. Apparatus according to claim 1 , wherein the local network proxy is an HTTP server.
8. Apparatus according to claim 1 , wherein the local network proxy is an RTSP server.
9. A method for retrieving live streaming data from a server, comprising: measuring bandwidth at a client device; selecting an appropriate bit rate for a current bandwidth in a delivery channel; selecting an appropriate encoding for the client device; and performing the following with respect to segments of the live streaming data: (1) requesting the segments from a server, (2) downloading the segments via the delivery channel, (3) storing the downloaded segments, (4) decrypting the stored segments, (5) parsing the decrypted segments, and (6) delivering the parsed segment data to a local media player through a network proxy, wherein the network proxy is a proxy server engaging in internal client-server media delivery with the local media player for delivering the parsed segment data to the local media player in response to explicit segment data requests from the local media player according to an internal client-server media delivery protocol.
10. A method according to claim 9 , wherein the segments are requested and downloaded using the HTTP protocol.
11. A method according to claim 9 , wherein the stored segments are deleted upon delivery of the parsed segment data to the local media player.
12. A method according to claim 9 , wherein the stored segments are kept for a period of time after the parsed segment data is delivered to the local media player to support a rewind function.
13. A method according to claim 9 , wherein segment parsing includes decoding individual frames.
14. A method according to claim 9 , wherein segment parsing includes parsing file location information for use in generating playlists.
15. A method according to claim 9 , wherein the local network proxy is an HTTP server.
16. A method according to claim 9 , wherein the local network proxy is an RTSP server.
17. An apparatus, comprising: a processor for executing a segment downloader and network proxy; a memory for storing downloaded segments; instructions executable by the processor to constitute a rendering engine for rendering downloaded data, wherein the rendering engine communicates through the network proxy; and instructions executable by the processor for: connecting to a server to retrieve segments; decrypting retrieved file data; storing retrieved and decrypted segment data to the memory; detecting a change in bandwidth that necessitates a change in bit rate and changing the bit rate at which future segments are retrieved; parsing frames from the segment; providing frames to the network proxy; accepting connections to the network proxy from the rendering engine; and streaming frame data to the rendering engine from the network proxy, wherein the network proxy is a proxy server engaging in internal client-server media delivery with the local media player for delivering the parsed segment data to the local media player in response to explicit segment data requests from the local media player according to an internal client-server media delivery protocol.
18. An apparatus, comprising: a processor for executing a segment downloader and network proxy; a memory for storing downloaded segments; instructions executable by the processor to constitute a rendering engine for rendering downloaded data, wherein the rendering engine communicates through the network proxy; and instructions executable by the processor for: connecting to a server to retrieve segments; decrypting retrieved file data; storing retrieved and decrypted segment data to the memory; detecting a change in bandwidth that necessitates a change in bit rate and changing the bit rate at which future segments are retrieved; generating a playlist file for the stored segments; accepting connections to the network proxy from the rendering engine; and sending playlist and segment data to the rendering engine from the network proxy, wherein the network proxy is a proxy server engaging in internal client-server media delivery with the local media player for delivering the parsed segment data to the local media player in response to explicit segment data requests from the local media player according to an internal client-server media delivery protocol.
19. Apparatus according to claim 1 wherein the segment downloader is a client engaging in external client-server media delivery with the server for downloading the segments from the server according to a separate external client-server media delivery protocol.
20. Apparatus according to claim 19 , wherein the external client-server media delivery protocol is of a different type than the internal client-server media delivery protocol and the network proxy is a protocol conversion proxy converting from adaptive bitrate segment delivery from the server to variable-bitrate playback by the local media player.
21. Apparatus according to claim 5 , wherein parsing includes separating out RTP frames for audio, RTP frames for video, RTCP frames for audio, RTCP frames for video and proprietary control frames from the segment.
22. Apparatus according to claim 6 , wherein the playlist generated is one of an HTTP Live Streaming m3u8 manifest file or a Smooth Streaming manifest file.
23. Apparatus according to claim 7 , wherein the HTTP server responds to HTTP Live Streaming m3u8 manifest file requests, HTTP Live Streaming MPEG-TS segment requests, Smooth Streaming manifest file requests, or Smooth Streaming MP4 fragment requests with downloaded segment data and information.
24. Apparatus according to claim 8 , wherein the RTSP server creates RTP channels for audio, RTP channels for video, RTCP channels for audio, and RTCP channels for video, over which parsed segment data is streamed.
25. A method according to claim 13 , wherein parsing includes separating out RTP frames for audio, RTP frames for video, RTCP frames for audio, RTCP frames for video and proprietary control frames from the segment.
26. A method according to claim 14 , wherein the playlist generated is one of an HTTP Live Streaming m3u8 manifest file or a Smooth Streaming manifest file.
27. A method according to claim 15 , wherein the HTTP server responds to HTTP Live Streaming m3u8 manifest file requests, HTTP Live Streaming MPEG-TS segment requests, Smooth Streaming manifest file requests, or Smooth Streaming MP4 fragment requests with downloaded segment data and information.
28. A method according to claim 16 , wherein the RTSP server creates RTP channels for audio, RTP channels for video, RTCP channels for audio, and RTCP channels for video, over which parsed segment data is streamed.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 15, 2011
October 28, 2014
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.