CLIENT-SERVER VIDEO STREAMING TECHNOLOGY TECHNICAL FIELD
The invention pertains to the transmission and reception of video streams over a network and more particularly to software, methods and apparatus for requesting, delivering and viewing segments of a digital video file. BACKGROUND ART
Video streaming refers to the delivery of a continuous flow of data which is reconstituted by a user, as it is received (usually in conjunction with a buffer memory), for the purpose of simulating the real time transmission of a video image and soundtrack. In the past, a user (such as a PC user) could only view a pre-determined segment of the video steam by requesting the entirety of that video stream.
It would be commercially advantageous to allow a user to access only requested segments of a video stream without having to deliver the entire stream to that user.
It would also be advantageous to allow a user to request segments of a video stream according to any one of diverse parameters such as by subject, key word, elapsed time or by other information which can be expressed as an entry in a database or index.
It would also be advantageous to provide a user with means by which to access portions of a video stream without compromising the copyright associated with the video stream. DISCLOSURE OF THE INVENTION It is an object of the invention to provide methods, apparatus and software for the request, assembly, delivery, reception and display of segments of a digital video file or stream.
In a preferred form of the invention there is provided a method for the production of a segment from a first digital video file having a header, the method comprising the steps of: identifying or storing the header of the first digital video file; identifying from within the file, a portion; copying the portion from the first file; and appending a copy of the header to the copied portion to produce the segment.
In another form of the invention there is provided a method of serving digital video files, comprising the steps of: storing on a server, a database which functions as an index to a first digital video file; the database comprising entries which relate to specific segments of the first digital video file; the entries identifying segment data such as: text data, segment duration, start time and end time; providing to a client application or allowing a client application to access segment data; accepting requests based on segment data from the client application and in reply, serving a segment of the first digital video file to a user of the client.
In yet another form of the invention there is provided a method of using a computer to view digital video files comprising the steps of: running on an operating system of the computer, software for the display and use of a video browser; the video browser being a graphical user interface having a visual display which can be toggled, by a user, to display either an index of
text data relating to segments of a digital video file, or segments of the same file; the browser adapted to request and display video files or streaming video selected by a user from the text data. In another aspect of the invention, software is provided for a browser which toggles between a display of index information and a display of a segment of a digital video stream or file. BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a flowchart illustrating the steps carried out by the client program;
Fig. 2 is a flowchart illustrating the steps carried out by the server program; Fig. 3 is a screen image of a requested video segment; Fig. 4 is a screen display of a text index. BEST MODE FOR CARRYING OUT THE INVENTION
While the present description is made with reference to MPEG1 video, it will be understood that the technology is adaptable to other file formats that may share the characteristic that the file header may be appended to a segment of the file and where the segment with appended header can be played, viewed or otherwise put to use by an end user.
For MPEG1 files to be served in segments, it is first required to create an index of the MPEG1 file. This is done by creating an index of segments or sub-divisions of the MPEG1 file. Each sub-division may be expressed as a number in a database which is constructed as an index. This number can relate to either a number of bits, microseconds or seconds of data that have elapsed from the beginning of the file. In the aforementioned database, each number may be associated with a separate entry in the form of a text string.
Each of the aforementioned numbers corresponds to a start point and each start point is preferably associated with a text string and an end point. This gives the capability to conveniently sub-divide the MPEG1 video file and as will be explained, provides a capability for a user to play these individually defined segments.
In some embodiments of the invention, the individually defined segments as defined by their start point and an end point are referred to as "sections". The sections may also be sub-divided into a number of sub-section layers each having an individual start point and end point, which regions are re- defined as subjects, topics, etc.
By expressing the list of sections and subjects as an index and by linking each entry in the list with a start and a finish number, there is provided a method of searching through lengthy MPEG1 video files by reference to text or key words without having to physically view the video and make selections based on the display of images.
In order to facilitate the utility of these features to the end user, the user client program automates the process of requesting an MPEG1 video segment. As shown in Fig. 1 , the end user, whether by PC or by set top box will generally authenticate himself to the server by entering the appropriate user ID and password. Once the end user has been authenticated, the user client program allows the user to prepare a request for a segment 20. Importantly, the client program displays to the user an index or list of topics or segments which may be searchable or directly selected by the user 21. It is from this display that the user makes selections which form the basis of the request that the client program makes to the server program 22.
When the segment or segments which are requested 22 are eventually delivered over the network to the client program, the client will receive and
display the segment 30. The usefulness of the system is greatly enhanced by display features of the client program. The client program includes a graphical interface which can be toggled between a display of the requested video segment (as shown in Fig. 3) and a display of the text index 32 (as shown in Fig. 4) at the command of the user. A graphical button 101 displayed in the frame of the video browser 100 allows the user to switch between index and video segment displays. The text index or text data 102 displayed in the text view may be obtained from the server which serves the video segment or stores the related database. The video browser may incorporate other display controls as well.
As shown in Fig. 2, the server program software includes features for both serving the segments requested by the user and for protecting the stored video files from unauthorised use or manipulation.
The server program software includes features for authenticating a user 50 by comparing database entries to a particular user's ID and password. A user's request for a segment 60 is accomplished by searching for and finding the requested MPEG1 video file 61 , finding the search index which corresponds to that file 62, then determining the start point and end point within the file which corresponds to the user's request 63. The server program software must then prepare the segment for transmission 70. The previously identified file segment is appended by copying the header of the full MPEG1 video file at the beginning of the requested segment 71. This allows the requested segment to be recognised as a video file by the operating system. This new file comprising the segment and the header ("the clip") is then given a random file name 72. The randomly named file is then served over the network 80. After the clip is served, the transmission is ended 90. Typically, this involves an update of the user's
session details 91 and also preferably includes the deletion of the requested and randomly named clip file from the temporary video cache of the server after a specific period of time has elapsed 92. Deletion of the clip from the server after a short period of time makes the clip inaccessible once it has been served.
In particular segment preparation entails that a software program is used to read the first 3 to 6 bytes of the header of the digital video file (e.g. MPEG1). This results in the identification of a number. Each frame of the video file begins with this number. The software then scans the entire digital video file for the next occurrence of this number. This identifies the beginning of the first frame of the video image. Everything before this point in the file is treated as the header. When a segment is identified for copying, the segmentising software looks again for the first occurrence of this number and removes all of the bytes before it. This removes any partial frames from the segment before the header is attached or appended.
The security of the system is enhanced in a number of ways. First, the server protocols are set to make original MPEG1 video streams inaccessible to a client. Accordingly, segments are only served in small portions. Further, each portion is given a randomly-generated name prior to being served. Lastly, each clip is deleted shortly after it has been served. In line with the security protocols established in the server software, the client program software creates a cache through which the requested clip is played. The client program deletes the cached clip file once it has been played.