METHOD AND SYSTEM FOR LIVE STREAMING VIDEO WITH DYNAMIC RATE ADAPTATION
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.
1 . A live streaming system for distributing live streaming data to client devices, comprising:
a processor for executing a live stream recorder and segmenter, wherein the live stream recorder accepts a live media stream and a configuration file;
a memory for storing output of the live stream recorder and segmenter; and
instructions executable by the processor for:
recording the live streaming data;
dynamically transcoding the live streaming data into a plurality of encodings;
packing the plurality of encodings in a plurality of file formats each having formatted data;
writing the formatted data out in segments;
transferring the segments to a storage device accessible to a server; and
delivering the segments to the client devices sequentially for live media playback.
2 . A live streaming system according to claim 1 , wherein the live streaming data includes audio and/or video data.
3 . A live streaming system according to claim 1 , wherein the live stream data is transcoded into different formats for different types of client devices.
4 . A live streaming system according to claim 3 , further comprising transcoding each file format into different bit rates.
5 . A live streaming system according to claim 3 , further comprising adding custom frame headers to transcoded frames.
6 . A live streaming system according to claim 5 , wherein the custom frame headers include audio/video track information for each frame.
7 . A live streaming system according to claim 5 , wherein the custom frame headers include frame length information.
8 . A live streaming system according to claim 5 , wherein the custom frame headers include RTP packet headers.
9 . A live streaming system according to claim 1 , wherein each of the segments is of a predetermined fixed duration being an integral number of seconds.
10 . A live streaming system according to claim 1 , wherein at least some of the segments are of variable durations each being a respective integral numbers of seconds.
11 . A live streaming system according to claim 1 , wherein the segments are encrypted before being transferred to the storage device.
12 . A live streaming system according to claim 1 , wherein the storage device is local to the segmenter.
13 . A live streaming system according to claim 1 , wherein the storage device is remote from the segmenter.
14 . A live streaming system according to claim 1 , wherein the storage device is accessible to an HTTP server, and wherein the segments are delivered to the client devices using the HTTP protocol.
15 . A live streaming system according to claim 1 , wherein a multiplicity of metadata associated with the live streaming data is created and stored in a database and made available to the client devices, and wherein previously stored segments of video can be searched using the metadata stored in the database.
16 . A method for distributing live streaming data to client devices, comprising:
recording the live streaming data;
dynamically transcoding the live streaming data into a plurality of encodings;
packing the plurality of encodings in a plurality of file formats each having formatted data;
writing the formatted data out in segments;
transferring the segments to a storage device accessible to a server; and
delivering the segments to the client devices sequentially for live media playback.
17 . A method according to claim 16 , wherein the live streaming data includes audio and/or video data.
18 . A method according to claim 16 , wherein the live stream data is transcoded into different formats for different types of client devices.
19 . A method according to claim 18 , further comprising transcoding each file format into different bit rates.
20 . A method according to claim 18 , further comprising adding custom frame headers to transcoded frames.
21 . A method according to claim 20 , wherein the custom frame headers include audio/video track information for each frame.
22 . A method according to claim 20 , wherein the custom frame headers include frame length information.
23 . A method according to claim 20 , wherein the custom frame headers include RTP packet headers.
24 . A method according to claim 16 , wherein each of the segments is of a predetermined fixed duration being an integral number of seconds.
25 . A method according to claim 16 , wherein at least some of the segments are of variable durations each being a respective integral numbers of seconds.
26 . A method according to claim 16 , wherein the segments are encrypted before being transferred to the storage device.
27 . A method according to claim 16 , wherein the storage device is local to a segmenter which performs the writing of the formatted data in segments.
28 . A method according to claim 16 , wherein the storage device is remote from a segmenter which performs the writing of the formatted data in segments.
29 . A method according to claim 16 , wherein the storage device is accessible to an HTTP server, and wherein the segments are delivered to the client devices using the HTTP protocol.
30 . A method according to claim 16 , wherein a multiplicity of metadata associated with the live streaming data is created and stored in a database and made available to the client devices, and wherein previously stored segments of video can be searched using the metadata stored in the database.
31 . An apparatus, comprising:
a processor for executing a live stream recorder and segmenter, wherein the recorder accepts a live media stream and a configuration file;
a memory for storing output of the live stream recorder and segmenter; and
instructions executable by the processor for:
recording the live media stream;
transcoding the recorded stream into a plurality of encodings as defined by the configuration file;
storing the encoded data in segments;
encrypting the plurality of resultant segments as defined by the configuration file; and
storing the transcoded and encrypted segments in the memory.