WO2007053957A1 - Transcoder for live streams and on demand media - Google Patents

Transcoder for live streams and on demand media Download PDF

Info

Publication number
WO2007053957A1
WO2007053957A1 PCT/CA2006/001854 CA2006001854W WO2007053957A1 WO 2007053957 A1 WO2007053957 A1 WO 2007053957A1 CA 2006001854 W CA2006001854 W CA 2006001854W WO 2007053957 A1 WO2007053957 A1 WO 2007053957A1
Authority
WO
WIPO (PCT)
Prior art keywords
data packet
live stream
data
media file
audio
Prior art date
Application number
PCT/CA2006/001854
Other languages
French (fr)
Inventor
Jean-François DIONNE
Original Assignee
Cyberdiffusion Inc.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to US73582905P priority Critical
Priority to US60/735,829 priority
Application filed by Cyberdiffusion Inc. filed Critical Cyberdiffusion Inc.
Publication of WO2007053957A1 publication Critical patent/WO2007053957A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-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/47202End-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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/475End-user interface for inputting end-user data, e.g. personal identification number [PIN], preference data
    • H04N21/4753End-user interface for inputting end-user data, e.g. personal identification number [PIN], preference data for user identification, e.g. by entering a PIN or password
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6581Reference data, e.g. a movie identifier for ordering a movie or a product identifier in a home shopping application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8106Monomedia components thereof involving special audio data, e.g. different tracks for different languages
    • H04N21/8113Monomedia components thereof involving special audio data, e.g. different tracks for different languages comprising music, e.g. song in MP3 format

Abstract

A system and method for playing a live stream or an on demand media file on an audio/video player running on a computing device, the system comprising a server connected to a source of the live stream; the server being so configured as to enable a connection with the audio/video player running on the computing device; the server runing a software program executing the steps of accessing the live stream or on demand media file, processing the live stream or on demand media file, transcoding the live stream or on demand media file and providing the transcoded live stream or on demand media file to the audio/video player.

Description

TRANSCODER FOR LIVE STREAMS AND ON DEMAND MEDIA

CROSS-REFERENCE TO RELATED APPLICATION

[0001] The present application claims the benefits of U.S. provisional patent application No. 60/735,829 filed November 14, 2005, which is hereby incorporated by reference.

TECHNICAL FIELD

[0002] The present invention relates to a transcoder for live streams and on demand media enabling conventional audio and/or video players to read both live stream broadcasts and on demand media. More specifically, but not exclusively, the present invention relates to an MP3 and FLV encoded live stream transcoder enabling audio/video players such as, for example, Macromedia's Flash Player™, to read MP3 and FLV encoded live stream broadcasts. More specifically still, but not exclusively, the present invention relates to an MP3 and FLV on demand transcoder enabling audio/video players such as, for example, Macromedia's Flash Player™, to read MP3 and FLV encoded on demand media.

BACKGROUND

[0003] Audio/video players are increasingly popular as the number of audio and video media files available on computer networks such as the internet increase.

[0004] Generally stated, two types of audio/video media are found on the internet. Live streams and fixed length media files. In the first case, the length of the file is indefinite since it contains live audio/video feeds. In the second case, the length of the file is known and may be included in the header of the file. [0005] Conventionally, different audio/video players are used to play live streams and fixed length media files. Indeed, fixed length media file readers such as, for example, Macromedia's Flash Player™, expects to find the length of the file in the header of the media file.

[0006] Furthermore, conventional audio/video players are often slow when used to play fixed length media files. This is mainly due to the fact that some audio/video players download the complete fixed length media file before starting to play the media file. Some audio/video players may have an internal buffer but also proceed to download the complete fixed length media file and at a certain point, when an internal buffer has been filled, starts playing the media file. However, these processes may be quite slow, expecially when using a low bandwidth connection.

[0007] It is a drawback for a user to have to buy and install a supplemental live streaming media audio/video player on a personal computer, laptop computer, a personal assistant device or any other suitable computing device. It is also a draw back to have to wait for a large fixed length media file, especially when using a low bandwidth connection, before beginning the playback of the media file.

SUMMARY

[0008] The present invention relates to a system for playing a live stream on an audio/video player running on a computing device, the system comprising a server connected to a source of the live stream; the server being so configured as to enable a connection with the audio/video player running on the computing device; the server running a software program executing the steps of:

- pointing the audio/video player to at least one live stream data trunk; - transcoding at least one live stream data trunk;

- storing the at least one transcoded live stream data trunk into a memory of the server; and

- transferring the at least one transcoded live stream data trunk from the memory of the server to the audio/video player.

[0009] The present invention further relates to a live stream playing system as previously recited, wherein the at least one live stream data trunk includes a first live stream data trunk and subsequent live stream data trunk; the software program running on the server further executing, while the audio/video player maintains the connection the server, the steps of:

- pointing the audio/video player to a subsequent live stream data trunk;

- transcoding the subsequent live stream data trunk;

- storing the subsequent transcoded live stream data trunk into a memory of the server; and

- transferring the subsequent transcoded live stream data trunk from the memory of the server to the audio/video player.

[0010] The present invention relates further still to a live stream playing system as previously recited, wherein the software program running on the server further executing during the step of transcoding the at least one live stream data trunk, the sub-steps of:

- extracting characteristics of each data packet of the live stream data trunk;

- processing the characteristics of each of the data packet; - creating a temporary data packet associated with each data packet according to the processed characteristics of the associated data packet; and

- assembling the temporary data packets to form a transcoded live stream data trunk.

[0011] The present invention further still relates to a live stream playing system as previously recited, further comprising a database and wherein the software program running on the server further executing, when the audio/video player disconnects from the server, the steps of:

- sending statistical information about the connection to the database.

[0012] The present invention also relates to a system for playing an on demand media file on an audio/video player running on a computing device, the system comprising a server storing the on demand media file; the server being so configured as to enable a connection with the audio/video player running on the computing device; the server running a software program executing the steps of:

- accessing an on demand media file;

- extracting characteristics of the media file;

- computing a burst packet size from the characteristics of the media file;

- processing data from the media file, the data being of a size corresponding to the burst packet size;

- storing the processed data into a memory of the server; - transferring the processed data from the memory of the server to the audio/video player; and

- for at least one subsequent data packet from the media file:

- processing the subsequent data packet;

- storing the processed subsequent data packet into the memory of the server; and

- transferring the processed subsequent data packet from the memory of the server to the audio/video player.

[0013] The present invention further relates to an on demand media file playing system as previously recited, wherein the software program running on the server further executing during the step of processing the data from the media file, the sub-steps of:

- identifying a media file type; and

- if the media file type is video, transcoding the data.

[0014] The present invention relates further still to an on demand media file playing system as previously recited, wherein the software program running on the server further executing during the step of transcoding the data, the sub-steps of:

- extracting characteristics of each data packet of the data;

- processing the characteristics of each of the data packet;

- creating a temporary data packet associated with each data packet according to the processed characteristics of the associated data packet; and

SUBSTITUTE SBEET (RULE 26} - assembling the temporary data packets to form a processed data.

[0015] The present invention relates further still to a on demand media file playing system as previously recited, wherein the software program running on the server further executing during the step of processing the subsequent data packet, the sub-steps of:

- identifying a media file type; and

- if the media file type is video, transcoding the subsequent data packet.

[0016] The present invention relates to an on demand media file playing system as previously recited, wherein the software program running on the server further executing during the step of transcoding the subsequent data packet, the sub-steps of:

- extracting characteristics of the subsequent data packet;

- processing the characteristics the subsequent data packet;

- creating a temporary data packet associated with the subsequent data packet according to the processed characteristics of the associated subsequent data packet; and

- assembling the temporary data packet to form a processed subsequent data packet.

[0017] The present invention relates further still to an on demand media file playing system as previously recited, further comprising a database and wherein the software program running on the server further executing, when the audio/video player disconnects from the server, the steps of:

'•"wmnEββr,^ - sending statistical information about the connection to the database.

[0018] The present invention also relates to the methods executed by the live stream playing system and the on demand media file playing system as described above.

BRIEF DESCRIPTION OF THE DRAWINGS

[0019] A non-limitative embodiment of the invention will now be described by way of example only with reference to the accompanying drawings, in which:

[0020] Figure 1 is a schematic view of a network where computing devices running audio/video players connected to a live stream and on demand media server through a network;

[0021] Figure 2 is a flow diagram depicting the process of an audio and/or video player accessing a live. stream or an on demand media;

[0022] Figure 3 is a flow diagram depicting the process of a live stream server providing a transcoded live stream;

[0023] Figure 4 is a flow diagram depicting the live stream transcoding process used in the flow diagram of Figure 3; and

[0024] Figure 5 is a flow diagram depicting the process of an on demand server providing a transcoded on demand media.

[0025] It is to be noted that the expression "audio/video player" is to be construed herein and in the appended claims as an audio player software, a video player software or an audio and/or video player software.

DETAILED DESCRIPTION

SUBST/TUTE SHEET (RUlE M) [0026] Generally stated, a live streams and on demand media transcoder according to an illustrative embodiment of the present invention may be used to enable an audio/video player such as, for example, Macromedia's Flash Player™, to play MP3 (MPEG-1 Audio Layer-3) or FLV (Flash Video) encoded live streams without having to either select, install, configure nor update any software or other plugin. Presently, many audio/video player such as Macromedia's Flash Player™ cannot be used to play live streaming as a fixed sized MP3 or FLV file is required. Furthermore, the illustrative embodiment of the live streams and on demand media transcoder may also be used to play on demand at a desired position index within the MP3 or FLV encoded media in a bandwidth efficient fashion.

[0027] It is to be understood that in the present specification the term "live" is meant to designate real-time broadcasts of live events as well as live audio or video signals such as, for example, live radio or television shows and live concerts.

[0028] It is also to be understood that although in the present specification reference is made to MP3 and FLV audio and video formats, persons skilled in the art will appreciate that the present invention may also be applied to other audio and video formats.

[0029] Referring to Figure 1 , a user using an audio/video player, installed on a personal computer 12, laptop computer 14, personal assistant device 16 or any other such device that may run Macromedia's Flash Player, may access a content provider's 20 media server 24 through, for example, a link from a web page on a web server 22. The media server 24 serves as an interface to a live stream source 26 and an on demand media repository 27, and may store statistical data relating to live streaming and on demand media access on a statistical database 28. The content provider 20 may be a commercial radio station running, for example, a radio scheduling software such as RCSWorks. The personal computer 12, laptop computer 14 or

SUBSTITUTE SHEET (RULE 2€) personal assistant device 16 may connect to the web server 22 using an internet connection such as, for example, Ethernet (broadband, high-speed), wireless WiFi, cable internet, etc.

[0030] The media server 24 implements processes by which MP3 and FLV file's internal header descriptions are transcoded in real time into a new header description so that it may be read by the audio/video player. Furthermore, media server 24 also implements processes by which MP3 and FLV file's may be accessed, on demand at a desired position index within the file in a bandwidth efficient fashion. It is to be understood that both the underlying MP3 and FLV technology file format and the audio/video player remain unchanged.

[0031] The web server 22 may optionally provide a user with login access to detailed statistical data, complete with graphs and charts, so that users may monitor any progress for their radio or television station, or may monitor their usage of on demand services.

Audio/video player accessing live streams and on demand media

[0032] Referring now to Figure 2, there is shown a flow diagram of an illustrative example of a process executed by an audio/video player accessing either live streams as well as on demand media access, provided by a content provider 20. Live streams including, for example, live television or live ratio shows while on demand media including archived television or radio shows. The steps of the process are indicated by blocks 102 to 148.

[0033] The process starts at block 102 where the user connects to a service provider 20 through, for example, a web page on a web server 22, using a personal computer 12, laptop computer 14, personal assistant device 16 or any other such device on which is the audio/video player is installed. The user activates a link on the web server 22, which redirects the user to the media server 24.

SUBSTITUTE SHEET (RULE 26} [0034] Then, at block 103, the media server 24 verifies if the activated link from the web server 22 relates to a live stream or to on demand media. If the activated link relates to a live stream, the media server 24 then provides pertinent live stream information to the audio/video player, which is automatically started. This information may comprise, for example, mountpoint of the requested live stream on the live stream source 26 and server streaming ID. The process then proceeds to block 104. If the activated link relates to an on demand media, the media server 24 then provides pertinent on demand information to the audio/video player, which is automatically started. This information may comprise, for example, the requested file name and path on the on demand media repository 27 and, optionally, a position index within the requested file. The process then proceeds to block 120, which will be detailed further on.

[0035] At block 104, the media server 24 verifies if the live stream source 26 is connected to the live stream mountpoint requested by the user. If not, then the process exits at block 106 and the media server 24 disconnects the user. If the live stream source 26 is connected on the live stream mountpoint requested by the user then the process proceeds to block 108 where the media server 24 points the audio/video player towards a first live stream data trunk from the live stream source 26.

[0036] At block 110, the media server 24 stores in memory the live stream data trunk the audio/video player is pointing to, transcodes the live stream data trunk (the transcoding process will be described further on) and then provides the transcoded live stream data trunk to the audio/video player. Then, at block 112, the live stream server verifies if the audio/video player is still connected. This verification may be done via timeout TCP/IP protocol or from error socket, for example.

[0037] If the audio/video player is still connected, then at block 114 the media server 24 points the audio/video player towards the next live stream

SUBSTITUTE SHEET (RULE 20J data trunk from the live stream source 26, each live stream data trunk containing a pointer towards the next live stream data trunk. The process then proceeds back to block 110.

[0038] If the audio/video player is disconnected then, at block 116, the media server 24 may optionally send statistical information about the live stream access, for example length of connection, number of bytes sent, etc., to the optional statistical database 28. The process then proceeds to block 118 where the media server 24 memory assigned to the connection is cleared and verification is made to make sure connection is properly closed.

[0039] At block 120, the media server 24 verifies if the requested file exists on the on demand media repository 27. If not, then the process exits at block 122 and the media server 24 disconnects the user. If the file requested by the user exists on the on demand media repository 27 then the process proceeds to block 124 where the media server 24 opens the requested file on the on demand media repository 27 at the requested position index (if applicable).

[0040] At block 126, the process creates a memory space in which to place the data for the following steps and then calculates the required memory space by subtracting the position index from the size of the requested file.

[0041] At block 128, using the size and duration of the requested file, the process calculates the required data rate. For example, a file having a size of 3 Mbytes and a duration of 5 minutes, would be at 10 Kbytes/sec with quality of 80 Kbps. The file size and duration may be taken from, for example, the on demand media repository 27 or a configuration file.

[0042] At block 130, the process identifies the file media type. If this verification is actuated for the first time, the media server 24 may record the media type associated with the file into its memory in prevision of ulterior

s^τ,τUre sHEET(Ruie26) accesses to that file. If the file media type is MP3, the process proceeds to block 134. If the file media type is FLV then the process proceeds to block 132 where the FLV video split process is applied to the file and then proceeds to block 134. The FLV video split process of block 132 will be described further on.

[0043] At block 134, the process prepares a burst packet in the memory space, acting as a "buffer" since not all audio/video players may handle a buffer. Thus, for example, the process prepares a burst packet comprising 30 seconds of data in a single burst. By proceeding this way, the process reduces the time required for the video to start on the user's audio/video player. With a high speed internet connection, a user would not see a "buffering" message from the audio/video player, this is due to the audio/video player receiving enough data to immediately start the streaming. For example, the burst packet may be calculated using the following equation:

burst packet size = (stream quality / 8) * stream duration. Equation 1

[0044] For example, for a video with a stream quality of 300 Kbps, this value is divided by 8 to transfer the value into Kbytes/sec, after which the resulting value is multiplied by the desired stream duration, which in this case is 30 seconds, to get the right burst packet size to be sent to the user.

[0045] Then, at block 136, the process sends the burst packet from the memory space to the user through, for example, a TCP/IP connection.

[0046] At block 138, the process waits for the next cycle, each cycle lasting, for example, one second. At block 140, the process verifies if the audio/video player is still connected, this verification may be done via timeout TCP/IP protocol or from error socket.

SUBSTITUTE SHEET (RULE 26J [0047] If the audio/video player is disconnected then, at block 116, the media server 24 may optionally send statistical information about the on demand access, for example length of connection, number of bytes sent, etc., to the optional statistical database 28. The process then proceeds to block 118 where the media server 24 memory assigned to the connection is cleared and verification is made to make sure connection is properly closed.

[0048] If the audio/video player is still connected, then, at block 142, the process verifies if it has received a new request from the audio/video player, for example a new video request or a specific position index within that video.

[0049] If the process has received a new request, it proceeds back to block 120 to verify if the requested file exists on the on demand media repository 27.

[0050] If the process has not received a new request, it proceeds to block 144 where it reads the file media type previously recorded on the media server 24 at block 130. If the file media type is MP3, the process stores the next data packet from the file and into the memory space and proceeds to block 148. If the file media type is FLV then the process proceeds to block 146 where the FLV video split process is applied to the next data packet of file, stores the resulting data packet into the memory space and then proceeds to block 148. The FLV video split process will be described further on.

[0051] At block 148, the process sends the next data packet from the memory space to the user through, for example, a TCP/IP connection and goes back to block 138 where it waits for the next cycle.

Live stream server providing a transcoded live stream

[0052] Referring now to Figure 3, there is shown a flow diagram of an illustrative example of the sub-process used by the live stream server when providing a transcoded live stream (see block 110 of Figure 2). The steps of the sub-process are indicated by blocks 202 to 218.

[0053] The process starts at block 202 where the media server 24 connects to the live stream mountpoint on the live stream source 26. The live stream source 26 may contain, for example, audio/video data such as music radio, talk radio, live television shows, live concerts, etc. The media server 24 verifies if the requested live stream mountpoint is available. If the live stream mountpoint is not available, or does not exist, then step 110 is terminated and the process returns to step 116 of Figure 1.

[0054] If the live stream mountpoint is available, then, at block 204, the media server 24 receives a live stream data packet from the live stream source 26. The data packet constitutes several bytes that may contain, for example, one or more MP3 or FLV data trunks. At block 206, the process identifies the live stream source's media type. If this verification is actuated for the first time, the media server 24 may record the media type associated with the source into its memory in prevision of ulterior accesses to that live stream source.

[0055] If the live stream source media type is FLV, then the process proceeds to block 208 where the FLV video split process is applied to the data and then proceeds to block 210 where the new packets are stored as data trunks into the memory of the media server 24,. erasing previously stored data trunks, so as to be ready to be sent to the audio/video player. The FLV video split process will be described further on with reference to Figure 4).

[0056] At block 212, the process verifies if the live stream source 26 is still connected, this verification may be done via timeout TCP/IP protocol or from error socket If the live stream source 26 is still connected, then the process returns to block 204 where the media server 24 receives a new live stream data packet from the live stream source 26.

^UBSTiTUTE SHEEr (RULB mj [0057] If the live stream source 26 is disconnected then the sub-process of Figure 3 is terminated and the process returns to block 116 of Figure 2.

[0058] Going back to block 206, if the live stream source media type is MP3, then the process proceeds to block 214 where the live stream source's bit rate is identified. Then, at block 216 the live stream data packet is transcoded so that is may be provided to the audio/video player in a format allowing it to be played. The transcoding process will be described further on with reference to Figure 4. Optionally, at block 218, information contained in the transcoded data packet header, such as, for example, ID3 and metaname, may be extracted and provided to the web server 22 to be displayed or used when storing information in the statistical database 28. Following which, the process proceeds to previously described block 210, where the transcoded data packets are stored as data trunks into the memory of the media server 24, erasing previously stored data trunks, so as to be ready to be sent to the audio/video player.

[0059] It is to be understood that the live stream server may be designed or adapted so as to handle other audio and video types in addition or instead of MP3 and FLV.

W1P3 transcoding process

[0060] Referring now to Figure 4, there is shown a flow diagram of an illustrative example of the transcoding sub-process used at block 216 of Figure 3. The steps of the sub-process are indicated by blocks 302 to 314.

[0061] The transcoding sub-process starts at block 302 where the data packet is received and is examined, byte by byte, looking for the start of an MP3 header.

[0062] When the start of an MP3 header is found, then, at block 304, the process reads the MP3 header to extract the size of the data packet. At

Figure imgf000017_0001
block 306, an optimum dummy live stream length value is set so that the audio/video player may read the live stream for the longest period of continuous play time. This optimum dummy live stream length value generally depends on the operating system the audio/video player is running on and may be determined by repeated trials. As non-limiting examples, a value of 200 megabytes may be used for Windows '98 or earlier, while a value of 396 megabytes may be used for Windows 2000 and XP. It is to be understood that values lower than those specified may be used, resulting in a shorter period of continuous play time.

[0063] Then, at block 308, a temporary data packet is generated with an MP3 header which is a purged version of the data packet header read at block 304. Thus the header data packet is purged of any unnecessary non standard MP3 information so that it may be compatible with the audio/video player used, for example Macromedia's Flash Player™. The size of the temporary data packet is advantageously set as the sum of the number of bytes required to store the header, the optimum dummy live stream length value, and audio data of a size equal to the bit rate, identified at block 214 of Figure 3, divided by eight. It is to be understood that other sizes may be used as well.

[0064] At block 310, the optimum dummy live stream length value set at block 306 is added after the header of the temporary data packet, following which, at block 312, the remaining byte space of the temporary packet is filled with the bytes of the data packet immediately following the header read at block 304. Finally, at block 314, any unused bytes from the data packet, i.e. if the number of bytes in the data packet exceeded the size of the audio data computed at block 308; are moved at the front of the next live stream data packet at block 204 of Figure 3. The temporary packet is returned to block 218 of Figure 3.

SUBSTITUTE SHEET (RULE 2$ [0065] It is to be understood that, although reference is made to live streaming in the preceding description, the live stream transcoder may also be used to access on-demand streams from, for example, radio stations wishing to give their listeners the opportunity to tune into previously recorded broadcasts.

FLV video split process

[0066] Referring now to Figure 5, there is shown a flow diagram of an illustrative example of the FLV video split sub-process used at blocks 132 and 146 of Figure 2 and block 208 of Figure 3. The steps of the sub-process are indicated by blocks 402 to 422.

[0067] The sub-process starts at block 402 where the data packet is received and is examined byte by byte, looking for the start of a FLV tag header.

[0068] When the start of a FLV tag header is found, then, at block 404, the process reads the FLV tag header to extract the size of the data packet, the type, the timestamp, etc. The size of the data packet is used to calculate the end of that data trunk.

[0069] At block 406, the process identifies the FLV tag byte type, a FLV tag header conventionally begins with hex 0x08 for audio, hex 0x09 for video and hex 0x14 for metadata.

[0070] If the tag byte type is video, then, at block 408, the process verifies if the video frame is a keyframe or an inside frame. A keyframe is a full image of the video itself while an inside frame is the change between the keyframe and that frame.

[0071] If the video frame is an inside frame, then the process proceeds to block 416. If the video frame is a keyframe, then the process proceeds to block 410 where it sets a synchronization point. Thus, the audio/video player

SUBSTITUTE SHEET (RUiE 2δ) will receive a keyframe when it first connects. This helps ensure that the user does not receive an inside frame causing a black screen to be displayed while hearing the audio streaming. The process then proceeds to block 416.

[0072] If the tag byte type is audio, then, at block 412, the process, sets a synchronization point so that the user may start streaming at that point. The process then proceeds to block 416.

[0073] If the tag byte type is metadata, then, at block 414, the process creates a new FLV tag header, with the metadata of the original FLV tag header but modifying the timestamp to correspond to the position index. The metadata, which is built in Academic Metadata Format (AMF) originating from the encoder, provides the user with all the information (title, artist, duration etc..) about the stream itself regardless of the position index at which the user connects to the audio or video stream. In an alternative embodiment, instead of creating a new FLV tag header, the process may replace the FLV tag header with previously generated FLV tag header corresponding to the desired FLV tag header. A plurality of FLV tag headers may be generated using, for example, Macromedia Encoder 8 and stored, for example, on the media server 24. The process then proceeds to block 416.

[0074] At block 416, the sub-process creates a space into memory for a temporary data packet and, at block 418, using the size of the data packet, reads all of the bytes of the data packet until the end of the tag.

[0075] At block 420, the process copies all of the bytes read at block 418 into the temporary packet, after which, at block 422, the unused bytes from the data packet are moved so that they may be ready to use in the next loop.

[0076] The temporary packet is then returned to the block following the block calling the FLV video split process, i.e. either block 134, 148 of Figure 2 or block 210 of Figure 3.

SUBSTITUTE SHEET (RULE 2SJ [0077] It is to be noted that even though the audio/video player used as an example herein is Macromedia's Flash Player™, other audio/video players may also be used.

[0078] Although the present invention has been described by way of a non-restrictive illustrative embodiment and example thereof, it should be noted that it will be apparent to persons skilled in the art that modifications may be made to the illustrative embodiment without departing from the spirit and the scope of the present invention.

SUBSTITUTE SHEET (RULE 26J

Claims

WHAT IS CLAIMED IS:
1. A system for playing a live stream on an audio/video player running on a computing device, the system comprising a server connected to a source of the live stream; the server being so configured as to enable a connection with the audio/video player running on the computing device; the server running a software program executing the steps of:
- pointing the audio/video player to at least one live stream data trunk;
- transcoding at least one live stream data trunk;
- storing the at least one transcoded live stream data trunk into a memory of the server; and
- transferring the at least one transcoded live stream data trunk from the memory of the server to the audio/video player.
2. A live stream playing system as recited in claim 1 , wherein the at least one live stream data trunk includes a first live stream data trunk and subsequent live stream data trunk; the software program running on the server further executing, while the audio/video player maintains the connection the server, the steps of:
- pointing the audio/video player to a subsequent live stream data trunk;
- transcoding the subsequent live stream data trunk;
- storing the subsequent transcoded live stream data trunk into a memory of the server; and
- transferring the subsequent transcoded live stream data trunk from the memory of the server to the audio/video player.
3. A live stream playing system as recited in claim 1 , wherein the software program running on the server further executing during the step of transcoding the at least one live stream data trunk, the sub-steps of: - extracting characteristics of each data packet of the live stream data trunk;
- processing the characteristics of each of the data packet;
- creating a temporary data packet associated with each data packet according to the processed characteristics of the associated data packet; and
- assembling the temporary data packets to form a transcoded live stream data trunk.
4. A live stream playing system as recited in claim 1 , further comprising a database and wherein the software program running on the server further executing, when the audio/video player disconnects from the server, the steps of:
- sending statistical information about the connection to the database.
5. A system for playing an on demand media file on an audio/video player running on a computing device, the system comprising a server storing the on demand media file; the server being so configured as to enable a connection with the audio/video player running on the computing device; the server running a software program executing the steps of:
- accessing an on demand media file;
- extracting characteristics of the media file;
- computing a burst packet size from the characteristics of the media file;
- processing data from the media file, the data being of a size corresponding to the burst packet size;
- storing the processed data into a memory of the server;
- transferring the processed data from the memory of the server to the audio/video player; and - for at least one subsequent data packet from the media file:
- processing the subsequent data packet;
- storing the processed subsequent data packet into the memory of the server; and
- transferring the processed subsequent data packet from the memory of the server to the audio/video player.
6. An on demand media file playing system as recited in claim 4, wherein the software program running on the server further executing during the step of processing the data from the media file, the sub-steps of:
- identifying a media file type; and
- if the media file type is video, transcoding the data.
7. An on demand media file playing system as recited claim 6, wherein the software program running on the server further executing during the step of transcoding the data, the sub-steps of:
- extracting characteristics of each data packet of the data;
- processing the characteristics of each of the data packet;
- creating a temporary data packet associated with each data packet according to the processed characteristics of the associated data packet; and
- assembling the temporary data packets to form a processed data.
8. An on demand media file playing system as recited in claim 4, wherein the software program running on the server further executing during the step of processing the subsequent data packet, the sub-steps of:
- identifying a media file type; and
- if the media file type is video, transcoding the subsequent data packet.
SUBSTiTUTE SHEET (RULE 26|
9. An on demand media file playing system as recited in claim 8, wherein the software program running on the server further executing during the step of transcoding the subsequent data packet, the sub-steps of:
- extracting characteristics of the subsequent data packet;
- processing the characteristics the subsequent data packet;
- creating a temporary data packet associated with the subsequent data packet according to the processed characteristics of the associated subsequent data packet; and
- assembling the temporary data packet to form a processed subsequent data packet.
10.An on demand media file playing system as recited in claim 4, further comprising a database and wherein the software program running on the server further executing, when the audio/video player disconnects from the server, the steps of:
- sending statistical information about the connection to the database.
11. A method for playing a live stream on an audio/video player, the method comprising:
- pointing the audio/video player to at least one live stream data trunk from a live stream source;
- transcoding at least one live stream data trunk; and
- providing the at least one transcoded live stream data to the audio/video player.
12. A live stream playing method as recited in claim 11 , wherein the at least one live stream data trunk includes a first live stream data trunk and subsequent live stream data trunk, the method further comprising:
- pointing the audio/video player to a subsequent live stream data trunk;
SUBSTITUTE SHEET (RULE 2SJ - transcoding the subsequent live stream data trunk; and
- providing the subsequent transcoded live stream data trunk to the audio/video player.
13. A live stream playing method as recited in claim 11, wherein the transcoding of the at least one live stream data trunk comprises:
- extracting characteristics of each data packet of the live stream data trunk;
- processing the characteristics of each of the data packet;
- creating a temporary data packet associated with each data packet according to the processed characteristics of the associated data packet; and
- assembling the temporary data packets to form a transcoded live stream data trunk.
14. A method for playing on demand media files on an audio/video player the method comprising:
- accessing an on demand media file;
- extracting characteristics of the media file;
- computing a burst packet size from the characteristics of the media file;
- processing data from the media file, the data being of a size corresponding to the burst packet size;
- providing the processed data to the audio/video player; and
- for at least one subsequent data packet from the media file:
- processing the subsequent data packet; and
- providing the processed subsequent data packet to the audio/video player.
Ki
.SUBSTITUTE SHEET (RUlE 26f
15.An on demand media file playing method as recited in claim 14, wherein the processing of the data from the media file, comprises:
- identifying a media file type; and
- if the media file type is video, transcoding the data.
16.An on demand media file playing method as recited claim 15, wherein the transcoding of the data, comprises:
- extracting characteristics of each data packet of the data;
- processing the characteristics of each of the data packet;
- creating a temporary data packet associated with each data packet according to the processed characteristics of the associated data packet; and
- assembling the temporary data packets to form a processed data.
17.An on demand media file playing method as recited in claim 14, wherein the processing of the subsequent data packet comprises:
- identifying a media file type; and
- if the media file type is video, transcoding the subsequent data packet.
18.An on demand media file playing method as recited in claim 17, wherein the transcoding of the subsequent data packet comprises:
- extracting characteristics of the subsequent data packet;
- processing the characteristics the subsequent data packet;
- creating a temporary data packet associated with the subsequent data packet according to the processed characteristics of the associated subsequent data packet; and
- assembling the temporary data packet to form a processed subsequent data packet.
SUBSTITUTE SHEET (RULE 26|
PCT/CA2006/001854 2005-11-14 2006-11-14 Transcoder for live streams and on demand media WO2007053957A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US73582905P true 2005-11-14 2005-11-14
US60/735,829 2005-11-14

Publications (1)

Publication Number Publication Date
WO2007053957A1 true WO2007053957A1 (en) 2007-05-18

Family

ID=38022944

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2006/001854 WO2007053957A1 (en) 2005-11-14 2006-11-14 Transcoder for live streams and on demand media

Country Status (1)

Country Link
WO (1) WO2007053957A1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010045289A1 (en) * 2008-10-14 2010-04-22 Ripcode, Inc. System and method for progressive delivery of transcoded media content
EP2242272A2 (en) * 2009-04-18 2010-10-20 Saffron Digital Limited Transcoding video data
EP2321969A2 (en) * 2008-09-09 2011-05-18 Onmobile Global Limited Method and apparatus for transmitting video
US8180920B2 (en) 2006-10-13 2012-05-15 Rgb Networks, Inc. System and method for processing content
US8977778B2 (en) 2011-08-29 2015-03-10 Latakoo, Inc. Compressing, transcoding, sending, and retrieving video and audio files in a server-based system and related systems and methods
US9282131B2 (en) 2009-01-20 2016-03-08 Imagine Communications Corp. System and method for splicing media files
US9294728B2 (en) 2006-01-10 2016-03-22 Imagine Communications Corp. System and method for routing content
US9473812B2 (en) 2008-09-10 2016-10-18 Imagine Communications Corp. System and method for delivering content
US10178399B2 (en) 2013-02-28 2019-01-08 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
EP3416400A4 (en) * 2017-04-14 2019-07-17 Wangsu Science & Tech Co Ltd Html5-based audio-video playback method and device, audio and video live broadcast method and system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930473A (en) * 1993-06-24 1999-07-27 Teng; Peter Video application server for mediating live video services
US5999525A (en) * 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
CA2444825A1 (en) * 2001-04-17 2002-10-24 Julian Basil Fisk Data distribution
CA2505936A1 (en) * 2002-11-11 2004-05-27 Supracomm, Inc. Multicast videoconferencing
US6785704B1 (en) * 1999-12-20 2004-08-31 Fastforward Networks Content distribution system for operation over an internetwork including content peering arrangements

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930473A (en) * 1993-06-24 1999-07-27 Teng; Peter Video application server for mediating live video services
US5999525A (en) * 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
US6785704B1 (en) * 1999-12-20 2004-08-31 Fastforward Networks Content distribution system for operation over an internetwork including content peering arrangements
CA2444825A1 (en) * 2001-04-17 2002-10-24 Julian Basil Fisk Data distribution
CA2505936A1 (en) * 2002-11-11 2004-05-27 Supracomm, Inc. Multicast videoconferencing

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9294728B2 (en) 2006-01-10 2016-03-22 Imagine Communications Corp. System and method for routing content
US8180920B2 (en) 2006-10-13 2012-05-15 Rgb Networks, Inc. System and method for processing content
EP2321969A2 (en) * 2008-09-09 2011-05-18 Onmobile Global Limited Method and apparatus for transmitting video
US9473812B2 (en) 2008-09-10 2016-10-18 Imagine Communications Corp. System and method for delivering content
WO2010045289A1 (en) * 2008-10-14 2010-04-22 Ripcode, Inc. System and method for progressive delivery of transcoded media content
US9247276B2 (en) 2008-10-14 2016-01-26 Imagine Communications Corp. System and method for progressive delivery of media content
US9282131B2 (en) 2009-01-20 2016-03-08 Imagine Communications Corp. System and method for splicing media files
US8724691B2 (en) 2009-04-18 2014-05-13 Saffron Digital Limited Transcoding video data
EP2242272A2 (en) * 2009-04-18 2010-10-20 Saffron Digital Limited Transcoding video data
US20100266009A1 (en) * 2009-04-18 2010-10-21 Saffron Digital Limited Transcoding Video Data
EP2242272A3 (en) * 2009-04-18 2011-03-02 Saffron Digital Limited Transcoding video data
US8977778B2 (en) 2011-08-29 2015-03-10 Latakoo, Inc. Compressing, transcoding, sending, and retrieving video and audio files in a server-based system and related systems and methods
US10178399B2 (en) 2013-02-28 2019-01-08 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
EP3416400A4 (en) * 2017-04-14 2019-07-17 Wangsu Science & Tech Co Ltd Html5-based audio-video playback method and device, audio and video live broadcast method and system

Similar Documents

Publication Publication Date Title
Zambelli IIS smooth streaming technical overview
US7975062B2 (en) Capturing and sharing media content
CN1231042C (en) Method and system for delivering media service and application over network
CN103309933B (en) A method and apparatus for data transmission media
JP5320740B2 (en) Adaptive rate shifting apparatus, system and method for streaming content
US7073191B2 (en) Streaming a single media track to multiple clients
CN101594518B (en) Distributed on-demand media transcoding system and method
US9473812B2 (en) System and method for delivering content
KR100607784B1 (en) Method and apparatus for media data transmission
EP2122482B1 (en) Video distribution system including progressive playback
CN102439578B (en) Dynamic variable rate media delivery system
US6735634B1 (en) Method for real time protocol media recording
JP4813001B2 (en) Media resynchronization during streaming
US20060117365A1 (en) Stream output device and information providing device
US7490342B2 (en) Content provisioning system and method
KR101066366B1 (en) System for broadcasting multimedia content
EP1062782B1 (en) Method and apparatus for media data transmission
US7073028B2 (en) Pre-computing streaming media payload method and apparatus
JP4165668B2 (en) How to compress the data stream that is not continuous separation and apparatus
US7383229B2 (en) Access control and metering system for streaming media
US20050102371A1 (en) Streaming from a server to a client
US7478164B1 (en) Methods and apparatus for pacing delivery of streaming media data
US7941554B2 (en) Sparse caching for streaming media
US20050071496A1 (en) Method and system for media object streaming
TWI465113B (en) Content reproduction system, content reproduction apparatus, program, content reproduction method, and providing content server

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase in:

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06804723

Country of ref document: EP

Kind code of ref document: A1