[go: up one dir, main page]

GB2549323A - Methods of distributing media files, and file distribution systems for distributing media files - Google Patents

Methods of distributing media files, and file distribution systems for distributing media files Download PDF

Info

Publication number
GB2549323A
GB2549323A GB1606593.0A GB201606593A GB2549323A GB 2549323 A GB2549323 A GB 2549323A GB 201606593 A GB201606593 A GB 201606593A GB 2549323 A GB2549323 A GB 2549323A
Authority
GB
United Kingdom
Prior art keywords
media file
segment
download
file
receiving
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
GB1606593.0A
Other versions
GB2549323B (en
Inventor
Westland Cain James
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quantel Ltd
Original Assignee
Quantel Ltd
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
Application filed by Quantel Ltd filed Critical Quantel Ltd
Priority to GB1606593.0A priority Critical patent/GB2549323B/en
Publication of GB2549323A publication Critical patent/GB2549323A/en
Application granted granted Critical
Publication of GB2549323B publication Critical patent/GB2549323B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/632Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing using a connection between clients on a wide area network, e.g. setting up a peer-to-peer communication via Internet for retrieving video segments from the hard-disk of other client devices
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A method of distributing media files, including receiving at a sending system a request that the media file be made available for distribution (20), and in response, determining a plurality of individually playable segments making up the media file (21), where each segment may be used immediately by the receiving system. A receiving system requests that a segment be downloaded from a sending system, and in response, receives details of a download system from which to download the pieces, opening a data transfer connection, for example peer-to-peer, between the systems. The media file data for the segment is transferred from the download system, which may act as the seed/tracker, to the receiving system, acting for example as a peer. The segments may be transferred in parallel or be requested non-sequentially, thus prioritising distribution. The media segment may be created in a virtual file system from an on-going live event.

Description

Methods of distributing media files, and file distribution systems for distributing media files
Field of the Invention
The present invention concerns methods of distributing media files, and file distribution systems for distributing media files. More particularly, but not exclusively, the present invention concerns peer-to-peer methods of distributing media files and media file data.
Background of the Invention
The distribution of files using "torrents" is well known. Torrents provide peer-to-peer file sharing, by which a file which multiple users wish to obtain is not downloaded in the traditional manner from a single central source, but instead the file data making up the file is shared between the multiple users .
In order to allow a file to be distributed, a user makes the file available from a computer system called a "seed", on which the file is divided into equal size segments called "pieces". A cryptographic hash for each piece is generated.
The user then creates a small "descriptor" file which contains the details required to enable the file to be obtained. The details include the URL of a "tracker", which is a computer system that will coordinate the distribution of the file. The tracker may or may not be the seed. The details in the descriptor further include the details of the segments making up the file, and their hashes.
The descriptor file can be distributed to other users who wish to obtain a copy of the file, for example by e-mail or posting on a web discussion forum. When user of a second computer system (called a "peer") wishes to download a file, the peer connects to the tracker, which provides details of the computer systems from which it can download the pieces making up the file. The peer then connects to those computer systems and downloads the pieces for the file. The peer uses the hashes in the descriptor file to check that the downloaded pieces are not corrupted or maliciously altered, for example, and then re-assembles them to provide the file .
When a file is first downloaded, the tracker will necessarily tell the peer that the pieces should be obtained from the seed (as there is nowhere else from which to download them). However, for subsequent downloads the tracker will provide details of other peers that previously have downloaded pieces, so that the peer obtains the pieces from those other peers rather than directly from the seed.
In this way, the file is distributed in a peer-to-peer fashion.
When a file is downloaded in the traditional singlesource manner, typically a single TCP connection (a connection over which file data can be transferred, which is used on the Internet and other Internet-type networks) is opened between the downloading computer and the course, through which the entire file is downloaded. In contrast, with a torrent the peer opens a separate TCP connection to download each piece, usually to multiple different peers that are providing the different pieces. It is also typical for pieces to be downloaded in such a way as to maximise the availability of the pieces, such as by downloading the pieces in a random order or using a "rarest first" algorithm. Thus, while traditional downloading of a file is done sequentially, with torrents the pieces of a file are usually obtained out-of-order and/or in parallel.
Many variations in the operation of torrents are known. For example, each peer may act as a tracker, rather than there being a single central tracker to coordinate the distribution of the file. Such systems are sometimes known as "trackerless" or "distributed tracker" systems.
The use of torrents can be advantageous, as they allow large files to be distributed much more quickly than in the traditional single-source manner. However, a disadvantage of the use of torrents is that a file cannot be used until every piece has been downloaded and the file re-assembled. This is because the file is divided into pieces of equal size without any consideration for the file data they may contain, and so in isolation the file data within each piece cannot be used. This is a particular disadvantage in the context of media file systems, as is now explained. A common situation with media file systems is that a very large media file containing media relating to an event, for example a recording of a football match, is stored on a first system (usually a system close to where the recording of the football match was made). It is desired to transfer the media file to a second system, such as file system at a local television studio. Traditionally, the file will be transferred sequentially, i.e. from start to finish so that the media arrives chronologically. Once the file has been transferred, it can viewed and edited as desired. It will often also be possible to view and edit media as soon as it is received, even though there is further media still to come. The advantage of being able to transfer the file more quickly in this scenario is clear. Further, as it is likely that the media file will be being transferred from the first system to multiple other systems, the distribution of the media file by using torrents can be particularly effective.
However, a disadvantage of using a torrent to distribute the media file is that, unlike traditional sequential downloading, the file can only be viewed and edited once the entire media file has been downloaded and re-assembled.
Another common situation is that while it is desired that an entire media file is transmitted, it is also desired that a particular segment of the media in the media file is available as a priority. In the context of a football match, an example of this would be where the entire media file is required for use when creating a television programme showing the football match, but in addition a segment showing a goal being scored towards the end of the football match is required for inclusion in a news programme. With a torrent, again, the segment showing the goal being scored will not be available until after the entire media file has been downloaded and re-assembled.
Further, in the context of media files it can be desirable to begin the distribution of a media file before the file as a whole has been created. This can done using a "virtual file system", such as described in WO 2008/102159 (Quantel Limited) published 28 August 2008, for example. A virtual file system allows data from a file to be read before the file data for the entire file is available, for example because it is being created from an incoming stream of media data from the recording of a live event, or because it is being generated by transcoding (i.e. changing the quality or other properties of) existing file data. Such a virtual file can usually be downloaded in the traditional single-source manner, as the file data they contain usually arrives sequentially as well; for example media streams arrive sequentially, and transcoding of file data is done sequentially. However, as (amongst other things) a torrent requires the hashes to be generated for each piece in order to create the descriptor file, distribution of the media file cannot begin until the entire media file is available.
The present invention seeks solve the above-mentioned problems. Alternatively and/or additionally, the present invention seeks to provide improved methods of distributing media files, and improved file distribution systems for distributing media files.
Summary of the Invention
In accordance with a first aspect of the invention, there is provided a method of distributing a media file across a computer network, the method comprising the steps of: receiving at a sending system a request that the media file be made available for distribution; in response, determining a plurality of segments making up the media file, wherein each segment is an independently playable portion of media file data from the media file; receiving at a receiving system a request that a segment be downloaded; in response, receiving at the receiving system details of a download system from which to download the segment, opening a data transfer connection between the receiving system and the download system, and transferring the media file data for the segment from the download system to the receiving system via the data transfer connection.
Thus, the invention provides method for distributing media files similar to the method implemented by a conventional torrent system, with the sending system acting as the seed/tracker, the receiving system acting as a peer, and the segments of the media file corresponding to the "pieces" of a file in a torrent system. This allows a media file to be distributed in a peer-to-peer manner, with the advantages that gives. However, as each segment of the media file is an independently playable portion of media file data from the media file, it can be used immediately by the receiving system, it is not necessary for all segments making up the media file to be received first.
Preferably, the sending system generates a descriptor file containing details of the determined segments.
Preferably, the receiving system uses the descriptor file to request the segments.
The computer network may be a local network or public network such as the Internet. The data transfer connection may be a TCP (Transmission Control Protocol) data connection such as is used on the Internet.
Preferably, the receiving system requests details of the download system from the sending system. This allows the sending system to coordinate distribution of the media file. Alternatively, the method may implement a "trackerless"-type distribution system.
The download system may be the sending system. This may be the case if the requested segment has not yet been downloaded by any other receiving systems, for example. Alternatively, the download system may have previously received the media file data for the segment when acting as a receiving system. Preferably, the method further comprises the steps of: receiving at the sending system a request from a further receiving system for details of a download system from which to download the segment; in response, providing to the further receiving system details of the receiving system as the download system from which to download the segment. Preferably, the method further comprises the steps of: receiving at the receiving system a request from the further receiving system to download the segment; in response, transferring the media file data for the segment from the receiving system to the further receiving system. In this way, the sending system and receiving system can allow the receiving system to act as a peer by passing on segments it has downloaded to further receiving systems.
The receiving system may receive a plurality of requests that segments be downloaded. In this case, preferably a plurality of data transfer connections are opened between the receiving system and the download systems for the plurality of segments. Advantageously, the media file data for the plurality of segments is then transferred via the data transfer connection in parallel. This allows for a faster downloading of media file data, whether received from a single or multiple download systems, and even in the case that all requested segments are downloaded from the sending system. The plurality of segments may be requested non-sequentially. The sending system may prioritise a segment it provides for downloading (either from itself or from another download system), for example if the segment has been requested by multiple receiving systems, or because the receiving system has requested to receive it as a priority. Such prioritisation can improve the distribution of the segment, particularly in the case it is requested by multiple receiving systems, by increasing the number of download systems from which it can be obtained.
Advantageously, the media file data for a segment is generated only when a request that the segment be downloaded is received by the sending system. This allows the method to distribute a media file before all of the media data it contains is available, for example when it is a media file created in a virtual file system from an on-going live sporting event.
Advantageously, the receiving system receives, with details of the download system from which to download the segment, a cryptographic hash for the segment. This allows the receiving system to use the hash to check that the segment has not been corrupted or maliciously altered, but without requiring all of the media file data for the media file to be available prior to distribution of the media file beginning .
The receiving system may receive a request for the entire media file, and after receiving all of the segments of the media file, re-assembles them into a copy of the entire media file. This allows an entire file to be obtained by the receiving system.
Advantageously, the sending system determines the plurality of segments making up the media file based upon the properties of the network over which the media file is to be distributed. This allows the segments to be determined in a way that optimises distribution of the file. The properties of the network include the latency of the network.
The media file advantageously may be converted to a different file format prior to the plurality of segments being determined. This may be done when a media file which its original state cannot be divided into appropriate segments, either because it can only be divided into segments which are not of an appropriate size, or because it cannot be divided into segments at all. By converting the media file, the converted file can be created so that it has an appropriate internal structure. The file format may be fragmented MPEG-4. Alternatively, any other appropriate file format may be used.
In accordance with a second aspect of the invention, there is provided a file distribution system for distributing a media file across a computer network, the system comprising: a sending system arranged, in response to a request that the media file be made available for distribution, to determine a plurality of segments making up the media file, wherein each segment is an independently playable portion of media file data from the media file; a download system arranged, in response to a request for a segment, to provide the media file data for the segment; a receiving system arranged, in response to a request that a segment be downloaded, to receive details of the download system, open a data transfer connection between the receiving system and the download system, and receive the media file data for the segment from the download system via the data transfer connection.
Preferably, the receiving system is arranged to request details of the download system from the sending system. The download system may be the sending system.
Advantageously, the sending system is further arranged, in response to a request for details of a download system from which to download a segment, to provide details of a receiving system which previously requested details of a download system from which to download that segment.
Preferably, the receiving system is further arranged, in response to a request from a further receiving system to download a segment previously downloaded by the receiving system, to transfer the media file data for the segment to the further receiving system.
Advantageously, the receiving system is further arranged, in response to a plurality of requests that segments be downloaded, to open a plurality of data transfer connections between the receiving system and the download systems for the plurality of segments. In this case, advantageously the receiving system is further arranged to receive the media file data for the plurality of segments in parallel. The receiving system may be arranged to request a plurality of segments non-sequentially.
Advantageously, the sending system is further arranged to generate the media file data for a segment is only when a request that the segment be downloaded is received. Advantageously, the sending system is arranged to send, with details of the download system from which to download the segment, a cryptographic hash for the segment.
Preferably, the receiving system is further arranged to receive a request for the entire media file, and in response to request all of the segments of the media file, and reassemble the segments into a copy of the entire media file.
Advantageously, the sending system is further arranged to determine the plurality of segments making up the media file based upon the properties of the network over which the media file is to be distributed. The properties of the network may include the latency of the network.
Advantageously, the sending system is further arranged to convert the media file to a different file format prior to determining the plurality of segments.
In accordance with a third aspect of the invention, there is provided a sending system for a file distribution system as described above.
In accordance with a fourth aspect of the invention, there is provided a download system for a file distribution system as described above.
In accordance with a fifth aspect of the invention, there is provided a receiving system for a file distribution system described above.
In accordance with a sixth aspect of the invention, there is provided a computer program product arranged, when executed, to perform any of the methods described above.
In accordance with a seventh aspect of the invention, there is provided a computer program product arranged, when executed on a computer system, to provide a sending system as claimed described above.
In accordance with an eighth aspect of the invention, there is provided a computer program product arranged, when executed on a computer system, to provide a download system as described above.
In accordance with a ninth aspect of the invention, there is provided a computer program product arranged, when executed on a computer system, to provide a receiving system as described above.
It will of course be appreciated that features described in relation to one aspect of the present invention may be incorporated into other aspects of the present invention. For example, the methods of the invention may incorporate any of the features described with reference to the systems of the invention and vice versa.
Description of the Drawings
Embodiments of the present invention will now be described by way of example only with reference to the accompanying schematic drawings of which:
Figure 1 is a diagram showing the operation of a computer network system in accordance with a first embodiment of the invention;
Figure 2 is a flow chart describing the operation of the file system of the first embodiment;
Figure 3 is a diagram of a media file divided into segments in accordance with a first embodiment of the invention;
Figure 4 is a flow chart describing the operation of the file system and peer of the first embodiment;
Figure 5 is a diagram of the further operation of the computer network system of the first embodiment;
Figure 6 is a flow chart describing the further operation of the file system and peer of the first embodiment;
Figure 7 is a flow chart describing the operation of a file system and peer in accordance with a second embodiment of the invention; and
Figure 8 is a flow chart describing the further operation of the file system and peer of the second embodiment.
Detailed Description
An embodiment of the invention is now described with reference to Figures 1 to 3. A computer network system comprises a media file system 1. The media file system 1 has stored upon it a media file, which is to be distributed in accordance with the embodiment invention. The operation of the media file system 1 is shown in Figure 2.
In a first step, the media file system 1 receives a request to make the media file available for distribution (step 20). The media file system 1 then determines the segments into which the media file will be divided for distribution (step 21). Each of the segments is an independently playable portion of media file data from the media file; that is, each segment can be used as media data without requiring file data from other segments (e.g. all preceding segments).
The file can be split into such independent segments when it is a file of an appropriate media format, such as the format "fragmented" MPEG-4. The structure of a fragmented MPEG-4 format media file is shown in Figure 3. A file 100 comprises a header 101, a plurality of "moof"s (movie fragments) 102a, 102b, 102c and so on, and a footer 103. Each moof provides a portion of video of a fixed duration, for example two seconds of video. Figure 3 further shows the internal structure of a moof. A moof comprises a header file 105 and a plurality of GOPs 106a, 106b to 106c. (A GOP, "group of pictures", is a series of images making up the particular sequence of video.) The images are compressed, and as can be seen schematically from Figure 3 this results in the GOPs being of different lengths (i.e. being made up of a different number of bytes). The structure of the file 100 is such that each moof is much the same as a single ordinary MPEG-4 file, and so is independently playable without data from the other moofs being required.
The header 21 contains in XML format details of the moofs in the file 20 and the time ranges for the video they contain; for example, that moofs 22a, 22b and 22c provide video in the time ranges 0-2 seconds, 2-4 seconds and 4-6 second respectively. The footer 23 contains in XML format details of the byte ranges for the moofs in the file 20.
Thus, when a media file of fragmented MPEG-4 format is to be distributed, the media file can be divided so that each segment is a moof, or if it is desirable that the segments are larger in size than the moots usually are (as noted above, the moots will not all be of equal size due to compression), each segment can be an appropriate number of consecutive moofs that taken together are of an appropriate size. Alternatively, each segment may correspond to a moof or consecutive moofs that give a desired time period of video .
In particularly advantageous embodiments, the media file system 1 determines the segments based on the present conditions under which the media file will be distributed. For example, if the media file system 1 knows that it will be distributing the media file to a particular computer system, it can ascertain the bandwidth between the media file system 1 and the computer system, and determine the segment duration or size accordingly.
It may be the case that the media file is not in a format which can be divided into appropriate segments, for example because it is a fragmented MPEG-4 file in which the moofs are too large, or because it is not in a file format that can be divided into segments at all (e.g. ordinary MPEG-4). In this case, the media file system 1 can convert the media file into a file of fragmented MPEG-4 format with moofs of appropriate size.
Following the step of dividing the media file into segments, the media file system 1 generates a cryptographic hash each for the segments, for example using the well-known SHA-1 hash algorithm (step 22). The media file system 1 then creates a descriptor file, which contains details of the media file system 1 (i.e. the URL by which it can be contacted), details of the segments and their hashes (step 23) .
The computer network system of Figure 1 further comprises a peer computer system 2. This is a computer system that has been provided with a copy of the descriptor file created by the media file system 1, and which wishes to use it to download the media file, or at least a segment thereof. The operation of the media file system 1 and the peer 2 when a segment is downloaded is shown in Figure 4.
In a first step, the peer 2 sends a request for a segment to the media file system 1. (The peer 2 is able to contact the media file system 1 as the URL for the media file system 1 is contained in the descriptor file.) This is shown by the connection 3 of Figure 1. The peer 2 may be requesting the particular segment as it is currently required, for example because it contains media that needs to be viewed as soon as possible. Alternatively, the peer 2 may wish to download all the segments making up the media file, and has selected the present segment using a predetermined algorithm, for example having selected the segment at random.
In the present example, the segment requested by the peer 2 is only available from the media file system 1, and so the media file system advises the peer 2 to obtain it from the media file system 1 (step 32). The peer 2 then opens a TCP connection with the media file system 1. The TCP connection is shown by the connection 4 of Figure 1.
The media file system 1 then sends the segment to the peer 2 (step 33). Once the peer 2 has received the hash, it checks it against the hash in the descriptor file (step 34), to ensure that it is not corrupted or has been maliciously altered.
Further operation of the computer network system in accordance with the first embodiment of the invention is now described with reference to Figure 5 and 6. Following on from the previous example, the peer 2 now wishes to obtain a further segment for the media file. In this case, the segment is also only available from the media file system 1, and so the steps of Figure 4 are again followed. However, importantly this results in a new TCP connection 5 being opened between the media file system 1 and the peer 2, through which the media file system 1 sends the further segment. Importantly again, the steps required for the further segment can occur in parallel with the steps required for the first segment, meaning that the TCP connections 4 and 5 can be opened simultaneously, allowing the segments to be transferred simultaneously to the peer 2. In this way, the embodiment of the invention can take advantage of the improved data transfer that is possible when multiple TCP connections are used, even in circumstances when all segments are provided from the media file system 1 and so no peer-to-peer data distribution is in fact occurring.
Finally, computer network system of Figure 5 also comprises a second peer computer system 10 and a third peer computer system 15, which have previously downloaded segments from the media file system 1. The operation of the media file system 1, peer 2 and second peer 10 is shown in Figure 5.
As before, in a first step the peer 2 sends a request for a segment to the media file system 1 (step 40).
However, in this case the media file system 1 knows that on a previous occasion it sent the requested segment to the second peer 10, and so it advises the peer 2 to obtain the segment from the second peer 10 (step 41). The peer 2 opens a TCP connection 11 with the second peer 10 (step 42), and the second peer 10 sends the segment to the peer 2 (step 43). The peer 2 then checks the received segment against the hash in the descriptor file to ensure it is correct.
Figure 6 also describes the operation of the media file system 1, peer 2 and third peer 15. In this case, the media file system 1 knows that on a previous occasion the third peer 15 requested the segment being requested by the peer 2. However, in contrast to the case with peer 10, the media file system 1 did not directly send the peer 15 with the segment, rather it advised the peer 15 of another peer from which the segment could be obtained. Nevertheless, this allows the media file system 1 to conclude that the peer 15 will have the required segment, and so the media file system 1 advises the peer to obtain the segment from the third peer 15. The peer 2 then opens a TCP connection 16 with the peer 15 and obtains the segment.
As before, it is important to note that each of the TCP connections 4, 5, 11 and 16 can be open simultaneously, so that the various segments requested by the peer 2 are received in parallel.
The peer 2 may continue to request segments from the media file until it has received the entire media file, or alternatively only certain portions of the media file may be required by the peer 2, in which case the peer 2 may requests only the relevant corresponding segments. A second embodiment of the invention is now described with reference to Figures 7 and 8. In this embodiment, as in the previous embodiment, a media file system has stored upon it a media file which is for distribution. As before, the media file system creates a descriptor file by determining the details of segments of the making up the file. However, in this case the descriptor file does not contain the hashes for the segments. This allows the media file system to be a virtual file system and the media file to be a virtual media file for which all of the media file data it will contain is not already available. This is because the details of the segments stored in the descriptor file can be determined from the general properties of the virtual media file (i.e. its overall size, quality and so on), and the actual file data the segments contain is not required in order to generate the hashes.
The operation of the media file system and a peer in accordance with the second embodiment is shown in Figure 7. In a first step, the peer sends a request for a segment to the media file system (step 50). The media file system, being a virtual file system, generates the media file data for the segment (step 51). It may do this by obtaining the media file data from an incoming stream of media data or by transcoding media data already stored in the media file system, for example. The media file system then generates a hash for the segment, and sends it to the peer (step 52).
The media file system then advises the peer to obtain the segment from the media file system (step 53). (This is because, as the file data for the segment has only just been generated, it is only available from the media file system.) As before, the peer then opens a TCP connection with the media file system (step 54), the media file system sends the segment to the peer (step 55), and once received the peer checks the segment against the hash (step 56).
The further operation of the media file system and peer in accordance with the second embodiment is shown in Figure 8. In a first step, the peer sends a request for a further segment to the media file system (step 60). In this case, the segment has previously been generated, along with a hash, and both have been sent to another peer. As a result, the media file system send the already-generated hash to the peer, and advises the peer to obtain the segment to the other peer (step 61), i.e. the peer to which the segment was previously sent. As before, the peer then opens a TCP connection with the other peer (step 62), the other peer sends the segment to the peer (step 63), and once received the peer checks the segment against the hash it received from the media file system (step 63).
As in the previous embodiment, it will be appreciated that multiple segments could be downloaded in parallel from multiple sources, using multiple TCP connections.
While the present invention has been described and illustrated with reference to particular embodiments, it will be appreciated by those of ordinary skill in the art that the invention lends itself to many different variations not specifically illustrated herein.
For example, the skilled person will appreciate that while in the above embodiments the file format of fragmented MPEG-4 has been described as a file format which can be divided into segments as required, the invention Is equally applicable to embodiments in which other file formats are used, as long as they enable the file to de divided into independently playable portions.

Claims (37)

Claims
1. A method of distributing a media file across a computer network, the method comprising the steps of: receiving at a sending system a request that the media file be made available for distribution; in response, determining a plurality of segments making up the media file, wherein each segment is an independently playable portion of media file data from the media file; receiving at a receiving system a request that a segment be downloaded; in response, receiving at the receiving system details of a download system from which to download the segment, opening a data transfer connection between the receiving system and the download system, and transferring the media file data for the segment from the download system to the receiving system via the data transfer connection.
2. A method as claimed in claim 1, wherein the receiving system requests details of the download system from the sending system.
3. A method as claimed in claim 1 or 2, wherein the download system is the sending system.
4. A method as claimed in claim 1 or 2, wherein the download system has previously received the media file data for the segment when acting as a receiving system.
5. A method as claimed in any of claims 1 to 4, further comprising the steps of: receiving at the sending system a request from a further receiving system for details of a download system from which to download the segment; in response, providing to the further receiving system details of the receiving system as the download system from which to download the segment.
6. A method as claimed in claim 5, further comprising the steps of: receiving at the receiving system a request from the further receiving system to download the segment; in response, transferring the media file data for the segment from the receiving system to the further receiving system.
7. A method as claimed in any preceding claim, wherein the receiving system receives a plurality of requests that segments be downloaded.
8. A method as claimed in claim 7, wherein a plurality of data transfer connections are opened between the receiving system and the download systems for the plurality of segments .
9. A method as claimed in claim 8, wherein media file data for the plurality of segments is transferred via the data transfer connection in parallel.
10. A method as claimed in any of claims 7 to 9, wherein the plurality of segments are requested non-sequentially.
11. A method as claimed in any preceding claim, wherein the media file data for a segment is generated only when a request that the segment be downloaded is received by the sending system.
12. A method as claimed in any preceding claim, wherein the receiving system receives, with details of the download system from which to download the segment, a cryptographic hash for the segment.
13. A method as claimed in any preceding claim, wherein the receiving system receives a request for the entire media file, and after receiving all of the segments of the media file, re-assembles them into a copy of the entire media file .
14. A method as claimed in any preceding claim, wherein the sending system determines the plurality of segments making up the media file based upon the properties of the network over which the media file is to be distributed.
15. A method as claimed in claim 14, wherein the properties of the network include the latency of the network.
16. A method as claimed in any preceding claim, wherein the media file is converted to a different file format prior to the plurality of segments being determined.
17. A file distribution system for distributing a media file across a computer network, the system comprising: a sending system arranged, in response to a request that the media file be made available for distribution, to determine a plurality of segments making up the media file, wherein each segment is an independently playable portion of media file data from the media file; a download system arranged, in response to a request for a segment, to provide the media file data for the segment; a receiving system arranged, in response to a request that a segment be downloaded, to receive details of the download system, open a data transfer connection between the receiving system and the download system, and receive the media file data for the segment from the download system via the data transfer connection.
18. A file distribution system as claimed in claim 17, wherein the receiving system is arranged to request details of the download system from the sending system.
19. A file distribution system as claimed in claim 17 or 18, wherein the download system is the sending system.
20. A file distribution system as claimed in any of claims 17 to 19, wherein the sending system is further arranged, in response to a request for details of a download system from which to download a segment, to provide details of a receiving system which previously requested details of a download system from which to download that segment.
21. A file distribution system as claimed in any of claims 17 to 20, wherein the receiving system is further arranged, in response to a request from a further receiving system to download a segment previously downloaded by the receiving system, to transfer the media file data for the segment to the further receiving system.
22. A file distribution system as claimed in any of claims 17 to 21, wherein the receiving system is further arranged, in response to a plurality of requests that segments be downloaded, to open a plurality of data transfer connections between the receiving system and the download systems for the plurality of segments.
23. A file distribution system as claimed in claim 22, wherein the receiving system is further arranged to receive the media file data for the plurality of segments in parallel.
24. A file distribution system as claimed in claim 22 or 23, wherein the receiving system is arranged to request a plurality of segments non-sequentially.
25. A file distribution system as claimed in any of claims 17 to 24, wherein the sending system is further arranged to generate the media file data for a segment is only when a request that the segment be downloaded is received.
26. A file distribution system as claimed in any of claims 17 to 25, wherein the sending system is arranged to send, with details of the download system from which to download the segment, a cryptographic hash for the segment.
27. A file distribution system as claimed in of claims 17 to 26, wherein the receiving system is further arranged to receive a request for the entire media file, and in response to request all of the segments of the media file, and reassemble the segments into a copy of the entire media file.
28. A file distribution system as claimed in any of claims 17 to 27, wherein the sending system is further arranged to determine the plurality of segments making up the media file based upon the properties of the network over which the media file is to be distributed.
29. A file distribution system as claimed in claim 28, wherein the properties of the network include the latency of the network.
30. A file distribution system as claimed in any of claims 17 to 29, wherein the sending system is further arranged to convert the media file to a different file format prior to determining the plurality of segments.
31. A sending system for a file distribution system as claimed in any of claims 17 to 30.
32. A download system for a file distribution system as claimed in any of claims 17 to 30.
33. A receiving system for a file distribution system as claimed in any of claims 17 to 30.
34. A computer program product arranged, when executed, to perform any of the methods claimed in claims 1 to 16.
35. A computer program product arranged, when executed on a computer system, to provide a sending system as claimed in claim 31.
36. A computer program product arranged, when executed on a computer system, to provide a download system as claimed in claim 32.
37. A computer program product arranged, when executed on a computer system, to provide a receiving system as claimed in claim 33.
GB1606593.0A 2016-04-15 2016-04-15 Methods of distributing media files, and file distribution systems for distributing media files Active GB2549323B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB1606593.0A GB2549323B (en) 2016-04-15 2016-04-15 Methods of distributing media files, and file distribution systems for distributing media files

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1606593.0A GB2549323B (en) 2016-04-15 2016-04-15 Methods of distributing media files, and file distribution systems for distributing media files

Publications (2)

Publication Number Publication Date
GB2549323A true GB2549323A (en) 2017-10-18
GB2549323B GB2549323B (en) 2022-06-15

Family

ID=59895501

Family Applications (1)

Application Number Title Priority Date Filing Date
GB1606593.0A Active GB2549323B (en) 2016-04-15 2016-04-15 Methods of distributing media files, and file distribution systems for distributing media files

Country Status (1)

Country Link
GB (1) GB2549323B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022217361A1 (en) * 2021-04-16 2022-10-20 Podcrunch Inc. System and method for searching and playing a predetermined start and end time of a clip within a larger audio or video file

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8169916B1 (en) * 2007-11-23 2012-05-01 Media Melon, Inc. Multi-platform video delivery configuration
US20130031219A1 (en) * 2010-03-15 2013-01-31 Tencent Technology (Shenzhen) Company Limited Device And Method For Downloading Movie File
EP2658271A1 (en) * 2012-04-23 2013-10-30 Thomson Licensing Peer-assisted video distribution
US20150281308A1 (en) * 2012-12-13 2015-10-01 Tencent Technology (Shenzhen) Company Limitead Method and system for downloading and playing media file, client, server, and storage medium

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8169916B1 (en) * 2007-11-23 2012-05-01 Media Melon, Inc. Multi-platform video delivery configuration
US20130031219A1 (en) * 2010-03-15 2013-01-31 Tencent Technology (Shenzhen) Company Limited Device And Method For Downloading Movie File
EP2658271A1 (en) * 2012-04-23 2013-10-30 Thomson Licensing Peer-assisted video distribution
US20150281308A1 (en) * 2012-12-13 2015-10-01 Tencent Technology (Shenzhen) Company Limitead Method and system for downloading and playing media file, client, server, and storage medium

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022217361A1 (en) * 2021-04-16 2022-10-20 Podcrunch Inc. System and method for searching and playing a predetermined start and end time of a clip within a larger audio or video file
US11947584B1 (en) 2021-04-16 2024-04-02 Podcrunch Inc. System and method for searching and playing a predetermined start and end time of a clip within a larger audio or video file

Also Published As

Publication number Publication date
GB2549323B (en) 2022-06-15

Similar Documents

Publication Publication Date Title
US8386630B1 (en) Video-aware P2P streaming and download with support for real-time content alteration
Mol et al. Give-to-get: free-riding resilient video-on-demand in p2p systems
CN103392344B (en) Format-agnostic streaming architecture using an http network for streamings
US9253236B2 (en) Apparatus and method for providing streaming service in a data communication network
CN100559776C (en) a streaming system
CN107743708A (en) The system and method based on catalogue limitation for storage media section
EP3539271B1 (en) Resource segmentation to improve delivery performance
US20110099372A1 (en) Method and system for providing peer-to-peer video on demand
Detti et al. Mobile peer-to-peer video streaming over information-centric networks
US20110082943A1 (en) P2p network system and data transmitting and receiving method thereof
EP3391652B1 (en) Controlling retrieval in adaptive streaming
MX2015002628A (en) SYSTEM AND METHOD FOR DELIVERING AN AUDIO-VISUAL CONTENT TO A CUSTOMER DEVICE.
EP2740276B1 (en) Methods and systems for providing file data for media files
US10601910B2 (en) Method for broadcasting a piece of content in an it network
US20240155019A1 (en) Synchronizing independent media and data streams using media stream synchronization points
CN108833350B (en) A data transmission method suitable for multi-server adaptive streaming media system
Bertinat et al. Goalbit: The first free and open source peer-to-peer streaming network
GB2549323A (en) Methods of distributing media files, and file distribution systems for distributing media files
US9386056B1 (en) System, method and computer readable medium for providing media stream fragments
Begen et al. Are the streamingformat wars over?
Savolainen et al. Windowing bittorrent for video-on-demand: Not all is lost with tit-for-tat
CN111193686B (en) Media stream delivery method and server
US20230008021A1 (en) Synchronizing independent media and data streams using media stream synchronization points
Erman Extending bittorrent for streaming applications
Chadagorn et al. PileCast: Multiple bit rate live video streaming over BitTorrent

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)

Free format text: REGISTERED BETWEEN 20200319 AND 20200325