[go: nahoru, domu]

WO2014193996A2 - Network video streaming with trick play based on separate trick play files - Google Patents

Network video streaming with trick play based on separate trick play files Download PDF

Info

Publication number
WO2014193996A2
WO2014193996A2 PCT/US2014/039852 US2014039852W WO2014193996A2 WO 2014193996 A2 WO2014193996 A2 WO 2014193996A2 US 2014039852 W US2014039852 W US 2014039852W WO 2014193996 A2 WO2014193996 A2 WO 2014193996A2
Authority
WO
WIPO (PCT)
Prior art keywords
trick play
video
files
stream
playlist
Prior art date
Application number
PCT/US2014/039852
Other languages
French (fr)
Other versions
WO2014193996A3 (en
Inventor
Abhishek Shivadas
Stephen R. BRAMWELL
Original Assignee
Sonic Ip, 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 claimed from US13/905,867 external-priority patent/US20140359678A1/en
Priority claimed from US13/905,852 external-priority patent/US9094737B2/en
Application filed by Sonic Ip, Inc. filed Critical Sonic Ip, Inc.
Publication of WO2014193996A2 publication Critical patent/WO2014193996A2/en
Publication of WO2014193996A3 publication Critical patent/WO2014193996A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/782Television signal recording using magnetic recording on tape
    • H04N5/783Adaptations for reproducing at a rate different from the recording rate
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • 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/47217End-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 controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
    • 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/6587Control parameters, e.g. trick play commands, viewpoint selection

Definitions

  • Distribution of multimedia video (also referred to herein as “media” and/or “program(s)”), such as movies and the like, from network services to a client device, may be achieved through adaptive bitrate streaming of the video.
  • the video Prior to streaming, the video may be encoded at different bitrates and resolutions into multiple bitrate streams that are stored in the network services.
  • each of the bitstreams includes time-ordered segments of encoded video.
  • Adaptive bitrate streaming includes determining an available streaming bandwidth at the client device, and then downloading a selected one of the different bitrate streams from the network services to the client device based on the determined available bandwidth. While streaming, the client device downloads and buffers the successive encoded video segments associated with the selected bitstream. The client device decodes the buffered encoded video segments to recover the video therein, and then plays back the recovered video on the client device, e.g., in audio-visual form.
  • the client device plays back the video recovered from each of the buffered segments in the order in which the video was originally encoded, i.e., in a forward direction.
  • the client device may offer playback modes or features in addition to normal playback. Such additional playback features may include rewind, fast forward, skip, and so on, as is known.
  • trick play features The additional playback features are referred to herein as trick play features.
  • trick play features such as rewind
  • the client device requires access to video that has already been played. Therefore, the client device may be required to store large amounts of already downloaded and played video in order to meet the demands of a selected trick play feature.
  • client devices especially small, hand-held devices, have limited memory capacity and, therefore, may be unable to store the requisite amount of video.
  • FIG. 1 is a block diagram of an example network environment that supports adaptive bitrate streaming of multimedia content, such as video, with trick play features.
  • FIG. 2 is an illustration of an example encoded multimedia video program generated by and stored in network services of FIG. 1 .
  • FIG. 3A is an illustration of an example adaptive bitrate frame structure of an encoded video block of FIG. 2.
  • FIG. 3B is an illustration of an example trick play frame structure of an encoded video block of FIG. 2.
  • FIG. 4 is a sequence diagram of example high-level interactions between network services and a client device used to initiate streaming, implement normal streaming and playback, and implement trick play features in streaming embodiments.
  • FIG. 5 is an example Profile message used in streaming.
  • FIG. 6 is an example Playlist message used in streaming.
  • FIG. 7 is a flowchart of an example network-side method of multimedia content streaming with trick play support based on trick play files, which may be implemented in the network services of FIG. 1 .
  • FIG. 8 is a flowchart of an example client-side method of multimedia content streaming with trick play support based on trick play files, which may be implemented in the client device of FIG. 1 .
  • FIG. 9A is a block diagram of an example computer system.
  • FIG. 9B is a block diagram of network/server-side application instructions which may execute in on a processor system similar to that of FIG. 9A.
  • FIG. 10 is a block diagram of an example computer system corresponding to any of the network servers in the environment of FIG. 1 .
  • FIG. 1 1 is a block diagram of an example system representing a client device of FIG. 1 .
  • the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.
  • FIG. 1 is a block diagram of an example network environment 100 that supports adaptive bitrate streaming of multimedia content with trick play features.
  • Network services 102 encode multimedia content, such as video, into multiple adaptive bitrate streams of encoded video and a separate trick play stream of encoded video to support trick play features.
  • the trick play stream may be encoded at a lower encoding bitrate and a lower frame than each of the adaptive bitrate streams.
  • the adaptive bitrate and trick play streams are stored in network services 102.
  • a client device 104 downloads a selected one of the adaptive bitrate streams from network services 102 for playback at the client device.
  • a trick play feature such as rewind
  • the client device 104 downloads the trick play stream from network services 102 for trick play playback.
  • Environment 100 supports trick play features in different adaptive bitrate streaming embodiments, including on-demand streaming, live streaming, and real-time streaming embodiments.
  • On-demand streaming includes encoding the content of a program from start to end in its entirety and then, after the entire program has been encoded, streaming, i.e., downloading, the encoded program to a client device.
  • An example of on-demand streaming includes streaming a movie from a Video-on-Demand (VOD) service to a client device.
  • VOD Video-on-Demand
  • Live streaming includes encoding successive blocks of live content, i.e., a live program, as they are received from a content source, and then streaming each encoded block as it becomes available for download.
  • Live streaming may include streaming live scenes, i.e., video, captured with a video camera.
  • Real-time streaming is similar in most aspects to live streaming, except that the input to real-time streaming is not a live video feed. Rather, the input, or source, may include successive encoded blocks, or input blocks, that have a format not suitable for streaming (e.g., for a given system) and must, therefore, be decoded and re-encoded (i.e., transcoded) into an encoded format that is suitable for streaming (in the given system). Real-time streaming handles the successive incompatible input blocks similar to the way live streaming handles the successive blocks of live content.
  • Network environment 100 includes server-side or network services 102 (also referred to simply as "services 102") and client-side device 104.
  • Network services 102 may be implemented as Internet cloud-based services.
  • Network services 102 interact and cooperate with each other, and with client device 104, to manage and distribute, e.g., stream, multimedia content from content sources 108 to the client devices, over one or more communication network 106, such as the Internet.
  • Network services 102 communicate with each other and with client devices 104 using any suitable communication protocol, such as an Internet protocol, which may include Transmission Control Protocol/Internet Protocol (TCP/IP), Hypertext Transfer Protocol (HTTP), etc., and other non-limiting protocols described herein.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • HTTP Hypertext Transfer Protocol
  • Content sources 108 may include any number of multimedia content sources or providers that originate live and/or pre-recorded multimedia content (also referred to herein simply as "content”), and provide the content to services 102, directly, or indirectly through communication network 106.
  • Content sources 108 such as Netflix®, HBO®, cable and television networks, and so on, may provide their content in the form of programs, including, but not limited to, entertainment programs (e.g., television shows, movies, cartoons, news programs, etc.), educational programs (e.g., classroom video, adult education video, learning programs, etc.), and advertising programs (e.g., commercials, infomercials, or marketing content).
  • Content sources 108 such as, e.g., video cameras, may capture live scenes provide the resulting real-time video to services 102.
  • Content sources may also include live broadcast feeds deployed using protocols such as Real-time Transport Protocol (RTP), and Real-time Messaging Protocol (RTMP).
  • RTP Real-time Transport Protocol
  • RTMP Real-time Messaging Protocol
  • Network services 102 include, but are not limited to: an encoder 1 10 to encode content from content sources 108; a content delivery network (CDN) 1 12 (also referred to as a “download server 1 12") to store the encoded content, and from which the stored, encoded content may be streamed or downloaded to client device 104; and a real-time service (RTS) 1 14 (also referred to as a “real-time server (RTS) 1 14”) to (i) control services 102, and (ii) implement an RTS streaming control interface through which client device 104 may initiate and then monitor both on-demand, live, and realtime streaming sessions.
  • Each of services 102 may be implemented as one or more distinct computer servers that execute one or more associated server-side computer program applications suited to the given service.
  • Encoder 1 10 may be implemented as a cloud encoder accessible over communication network 106. Encoder 1 10 encodes content provided thereto into a number of alternative bitstreams 120 (also referred to as encoded content) to support adaptive bitrate streaming of the content. For increased efficiency, encoder 1 10 may be implemented as a parallel encoder that includes multiple parallel encoders. In such an embodiment, encoder 1 10 divides the content into successive blocks or clips each of a limited duration in time. Each block may include a number of successive picture frames, referred to collectively as a group of pictures (GOPs). Encoder 1 10 encodes the divided blocks or GOPs in parallel to produce alternative bitstreams 120. Encoder 1 10 may also include transcoders to transcode input files from one encoded format to another, as necessary.
  • GEPs group of pictures
  • bitstreams 120 encode the same content in accordance with different encoding parameters/settings, such as at different encoding bitrates, resolutions, frame rates, and so on.
  • each of bitstreams 120 comprises a large number of sequential (i.e., time-ordered) files of encoded content, referred to herein as container files (CFs), as will be described further in connection with FIG. 2.
  • container files CFs
  • the encoder uploads the encoded content to CDN 1 12 for storage therein.
  • CDN 1 12 includes one or more download servers (DSs) to store the uploaded container files at corresponding network addresses, so as to be accessible to client device 104 over communication network 106.
  • DSs download servers
  • RTS 1 14 acts as a contact/control point in network services 102 for client device 104, through which the client device may initiate and then monitor its respective on-demand, live, and real-time streaming sessions. To this end, RTS 1 14 collects information from services 102, e.g., from encoder 1 10 and CDN 1 12, that client device 104 may use to manage its respective streaming sessions, and provides the collected information to the client device via messages (described below) when appropriate during streaming sessions, thus enabling the client device to manage its streaming sessions.
  • services 102 e.g., from encoder 1 10 and CDN 1 12
  • the information collected by RTS 1 14 (and provided to client device 104) identifies the encoded content, e.g., the container files, stored in CDN 1 12, and may include, but is not limited to, network addresses of the container files stored in the CDN, encoding parameters use to encode the container files, such as their encoding bitrates, resolutions, and video frame rates, and file information, such as file sizes, and file types.
  • Client device 104 may be capable of wireless and/or wired communication with network services 102 over communication network 106, and includes processing, storage, communication, and user interface capabilities sufficient to provide all of the client device functionality described herein. Such functionality may be provided, at least in part, by one or more client applications 107, such as computer programs, that execute on client device 104. Client applications 107 may include:
  • GUI Graphical User Interface
  • client device 104 may request/select (i) programs to be streamed from services 102, and (ii) trick play features to control trick play playback of the streamed programs; b. streaming and playback applications to stream/download the selected programs from the services, and playback, i.e., present, the streamed programs on client device 104, under user control, through the GUI; and c. a trick play application, integrated with the GUI and the streaming and playback applications, to implement the trick play features as described herein.
  • GUI Graphical User Interface
  • encoder 1 10 encodes multimedia content from content sources 108, and CDN 1 12 stores the encoded content.
  • encoder 1 10 encodes the content at multiple encoding levels, where each level represents a distinct combination of an encoding bitrate, a video resolution (for video content), and a video frame rate, to produce (i) multiple adaptive bitrate streams for the content, and (ii) a trick play stream for the content.
  • the multiple streams may be indexed according to their respective encoding levels.
  • client device 104 may switch between streams, i.e., levels (and thus encoded bitrates and resolutions), according to conditions at the client device.
  • client device 104 may download portions of the trick play stream from CDN 1 12 to implement trick play features in the client device.
  • FIG. 2 is an illustration of an example encoded multimedia video program 200 generated by encoder 1 10 and stored in CDN 1 12.
  • Encoded video program 200 includes:
  • ABR adaptive bitrate
  • the trick play stream corresponds to, i.e., encodes the same video as, the two ABR streams 1 , 2.
  • Each of encoding levels L1 -L3 corresponds to a distinct combination of an encoding bitrate (Rate), a video resolution (Res), and a video frame rate (FR).
  • encoding levels L1 , L2, L3 correspond to encoder settings Rate1/Res1/FR1 , Rate2/Res2/FR2, Rate3/Res3/FR3, respectively.
  • the encoding bitrate Rate3 and the video frame rate FR3 used to encode the trick play stream are less than the encoding bitrates Ratel , Rate2 and the frame rates FR1 , FR2, respectively, used to encode adaptive bitrate streams 1 , 2.
  • FIG. 2 includes only two encoding levels for the
  • an encoded video program typically includes many more than two levels of encoding for ABR streaming, such as 8 to 15 levels of encoding.
  • Each of streams 1 -3 includes a distinct, time-ordered, sequence of container files CF (i.e., successive container files CF), where time is depicted in FIG. 2 as increasing in a downward vertical direction.
  • Each of the successive container files CF, of each of streams 1 -3 includes (i.e., encodes) a block or segment of video (also referred to herein as an encoded video block or segment) so that the successive container files encode successive contiguous encoded video blocks.
  • Each of container files CF includes a time code TC to indicate a duration of the video encoded in the block of the container file, and/or a position of the container file in the succession of container files comprising the corresponding stream.
  • the time code TC may include a start time and end time for the corresponding encoded video block.
  • time codes TC1 , TC2, and TC3 may represents start and end times of 0s (seconds) and 2s, 2s and 4s, and 4s and 6s, respectively, and so down the chain of remaining successive container files.
  • the encoded blocks of the container files CF in a given stream may encode the same content (e.g., video content) as corresponding blocks in the other streams.
  • the stream 1 block corresponding to time code TC1 has encoded therein the same video as that in the stream 2 block corresponding to TC1 .
  • Such corresponding blocks encode the same content and share the same time code TC, i.e., they are aligned or coincide in time.
  • a program stream index 204 may be associated with encoded video program 200 to identify each of the streams therein (e.g., the ABR streams 1 , 2, and the trick play stream).
  • RTS 1 14 may create (and store) program stream index 204 based on the information collected from encoder 1 10 and CDN 1 12, as described above in connection with FIG. 1 . Then, during a live streaming session, for example, RTS 1 14 may provide information from program stream index 204 to client device 104 so as to identify appropriate container file addresses to the client device.
  • Program stream index 204 may include:
  • a. address pointers e.g., network addresses, such as Uniform Resource Locators (URLs)
  • URLs Uniform Resource Locators
  • encoder parameters/settings associated with the encoded streams including, but not limited to, encoding levels L1 , L2, L3 (also referred to as "Video ID" in FIG. 2, and including the encoding bitrates and resolutions Rate1/Res1 , Rate2/Res2, Rate3/Res3), encoding techniques/standards, and file types and sizes of the container files CF; and
  • TP flag a trick play flag associated with URL 210-3 that, when set, indicates the associated stream is a trick play stream.
  • Address pointers 210-1 , 210-2, 210-3 may point to respective lists of addresses A1 , A2, A3 of the container files CF comprising each of streams 1 , 2, 3.
  • Address lists A1 , A2, A3 may each be represented as an array or linked list of container file network addresses, e.g., URLs. Accordingly, access to the information in program stream index 204 results in possible access to all of the container files associated with streams 1 , 2, 3.
  • each of container files CF depicted in FIG. 2 represents a relatively small and simple container structure, larger and more complicated container structures are possible.
  • each container file may be expanded to include multiple clusters of encoded media, each cluster including multiple blocks of encoded media, to thereby form a larger container file also suitable for embodiments described herein.
  • the larger container files encode an equivalent amount of content as a collection of many smaller container files.
  • Container files may encode a single stream, such as a video stream (as depicted in FIG. 2), an audio stream, or a text stream (e.g., subtitles).
  • each container file may encode multiple multiplexed streams, such as a mix of video, audio, and text streams.
  • a container file may encode only a metadata stream at a relatively low bitrate.
  • the container files may be Matroska (MKV) containers based on Extensible Binary Meta Language (EBML), which is a derivative of Extensible Binary Meta Language (XML), or files encoded in accordance with the Moving Picture Experts Group (MPEG) standard;
  • the program stream index may be provided in a Synchronized Multimedia Integration Language (SMIL) format;
  • client device 104 may download container files from CDN 1 14 over networks 106 using the HTTP protocol.
  • the container file formats may include OGG, flash video (FLV), Windows Media Video (WMV), or any other format.
  • Exemplary, non-limiting, encoding bitrates for different levels may range from below 125 kilo-bits-per-second (kbps) up to 15,000 kbps, or even higher, depending on the type of encoded media (i.e., content).
  • Video resolutions Res 1 - Res 4 may be equal to or different from each other.
  • the container files may support adaptive streaming of encoded video programs across an available spectrum bandwidth that is divided into multiple, i.e., n, levels.
  • Video having a predetermined video resolution for each level may be encoded at a bitrate corresponding to the bandwidth associated with the given level.
  • n the number of bandwidth levels is eleven (1 1 ).
  • Each bandwidth level encodes a corresponding video stream, where the maximum encoded bitrate of the video stream (according to a hypothetical reference decoder model of the video coding standard H.264) is set equal to the bandwidth/bitrate of the given level.
  • the 1 1 levels are encoded according to 4 different video resolution levels, in the following way: mobile (2 levels), standard definition (4 levels), 720p (2 levels), and 1080p (3 levels).
  • FIG. 3A is an illustration of an example frame structure 300 of an encoded video block for container files from adaptive bitrate streams 1 and 2 of FIG. 2.
  • Video encoding by encoder 1 10 includes capturing a number of successive picture frames, i.e., a GOP, at a predetermined video frame rate, and encoding each of the captured frames, in accordance with an encoding standard/technique, into a corresponding encoded video frame.
  • Exemplary encoding standards include, but are not limited to, block encoding standards, such as H.264 and Moving Picture Experts Group (MPEG) standards.
  • MPEG Moving Picture Experts Group
  • Collectively, the encoded video frames form an encoded video block, such as an encoded video block in one of container files CF. The process repeats to produce contiguous encoded video blocks.
  • the encoding process may encode a video frame independent of, i.e., without reference to, any other video frames, such as preceding frames, to produce an encoded video frame referred to herein as a key frame.
  • the video frame may be intra-encoded, or intra-predicted.
  • key frames are referred to as l-Frames in the H.264/MPEG standard set. Since the key frame was encoded independent of other encoded video frames, it may be decoded to recover the original video content therein independent of, i.e., without reference to, any other encoded video frames.
  • the key frame may be downloaded from CDN 1 12 to client device 104, decoded independent of other encoded frames, and the recovered (decoded) video played back, i.e., presented, on the client device.
  • the encoding process may encode a video frame based on, or with reference to, other video frames, such as one or more previous frames, to produce an encoded video frame referred to herein as a non-key frame.
  • the video frame may be inter-encoded, i.e., inter-predicted, to produce the non-key frame.
  • Such non-key frames include P-Frames and B-frames in the H.264/MPEG standard set.
  • the non-key frame is decoded based on one or more other encoded video frames, e.g., key-frames, reference frames, etc.
  • the non-key frame may be downloaded from CDN 1 12 to client device 104, decoded based on other encoded frames, and the recovered video played back.
  • frame structure 300 of the encoded video block for container files in the adaptive bitrate streams includes, in a time-ordered sequence, a first set of successive non-key frames 304, a key frame 306, and a second set of successive non-key frames 308.
  • key frame 306 is interspersed among the encoded video frames of the encoded video block.
  • the position of key frame 306 relative to the non-key frames in block 300 may vary, e.g., the position may be at the top, the middle, the bottom, or elsewhere in the block.
  • multiple key frames may be interspersed among the encoded video frames of the encoded video block, and separated from each other by multiple non-key frames.
  • a key/non-key (K/NK) flag associated with each of the frames 304, 306, and 308 indicates whether the associated frame is a key-frame or a non-key frame.
  • Each of the key and the non-key frames may include a predetermined number of bytes of encoded video.
  • the frame structure includes 60 encoded video frames, which may include N (i.e., one or more) interspersed key frames, and 60-N non-key frames. Typically, the number of non-key frames exceeds the number of key frames.
  • FIG. 3B is an illustration of an example frame structure 320 of an encoded video block for container files from the trick play stream of FIG. 2.
  • Trick play frame structure 320 includes, in a time-ordered sequence, key frames 322.
  • trick play frame structure 320 includes only key frames, i.e., key frames without non-key frames.
  • the encoded video block represented by frame structure 300 encodes 2 seconds of video captured at a video frame rate of 30 frames per second (fps)
  • the encoded video block represented by frame structure 320 also encodes 2 seconds of video.
  • the video frame rate for structure 320 is reduced to 5 fps, which yields 10 encoded video frames (key frames) every 2 seconds.
  • FIG. 4 is a sequence diagram of example high-level interactions 400 between network services 102 and client device 104 used to initiate, i.e.., start-up, streaming, implement normal streaming and playback, and implement trick play features in on-demand, live, and real-time streaming embodiments. Interactions 400 progress in time from top-to-bottom in FIG. 4, and are now described in that order. It is assumed that prior to startup, encoder 1 10 is in the process of, or has finished, encoding video content into multiple adaptive bitrate streams and a corresponding trick play stream, and storing the resulting container files in CDN 1 12 for subsequent download to client device 104. 3.1 Start-up
  • a user of client device 104 selects content, such as a video program, to be streamed using the client device GUI.
  • client device 104 sends a "Start" message (also referred to as a "begin playback” message) to RTS 1 14 to start a streaming session.
  • the Start message includes an identifier (ID) of the content to be streamed and a current time stamp.
  • ID identifies content from a content source that is to be streamed to client 104, and may indicate, e.g., a channel, program name, and/or source originating the content to be streamed.
  • the current time stamp (also referred to as "current time”) indicates a current time, such as a Universal Time Code (UTC).
  • UTC Universal Time Code
  • RTS 1 14 sends an encoding profile message (referred to as a "Profile" message) to client 104.
  • the Profile message lists different encoding profiles used to encode the identified content, e.g., as available from the program stream index for the identified content.
  • Each of the profiles specifies encoding parameters/settings, including, but not limited to: content type (e.g., audio, video, or subtitle); an encoding level corresponding to an encoding bitrate, resolution, and video frame rate (e.g., levels L1 , L2, L3); and a container file type, e.g., a Multipurpose Internet Mail Extensions (MIME) type.
  • the Profile message also indicates which encoding level among the multiple encoding levels e.g., encoding level L3, represents or corresponds to a trick play stream.
  • client device 104 selects an appropriate encoding level (e.g., an appropriate combination of an encoding bitrate and a resolution) among the levels indicated in the Profile message (not including the level indicating the trick play stream) for normal streaming and playback of the identified content.
  • Client device 104 may determine the appropriate encoding level based on a communication bandwidth at the client device.
  • the client device sends a GetPlaylist message to RTS 1 14 to request a list of any new container files that have been uploaded since the client device last downloaded container files (if any) from CDN 1 12.
  • the GetPlaylist message includes selection criteria for uploaded container files, namely, a current time and the selected encoding level.
  • the current time represents a time code associated with the last container file downloaded by client device 104 (if any) in the current streaming session.
  • RTS 1 14 In response to the GetPlaylist message, RTS 1 14: a. selects the uploaded container files, as identified to the RTS that meet the criteria specified in the GetPlaylist message.
  • the selected, uploaded container files are those container files that have (i) a time code greater than the current time, and (ii) an encoding level that matches the level specified in the GetPlaylist message from the client device; b. generates a Playlist message identifying the selected container files; and c. at 433, sends the Playlist message to client device 104.
  • the Playlist message includes the following information: the type of content encoded in the container file (e.g., video, audio, or subtitle); an address (e.g., URL) of the container file in CDN 1 12 (e.g., a subset of the addresses A1 or A2); a time code, e.g., a start time and an end time, associated with the content block encoded in the container file; and a file size of the container file.
  • the type of content encoded in the container file e.g., video, audio, or subtitle
  • an address e.g., URL
  • CDN 1 12 e.g., a subset of the addresses A1 or A2
  • time code e.g., a start time and an end time
  • client device 104 downloads container files from addresses in CDN 1 12 based on, i.e., as identified in, the Playlist message.
  • client device 104 decodes all of the key frames and the non-key frames of the encoded content block from each of the downloaded container files to recover the original content therein, and then presents the recovered content, whether in audio, visual, or in other form, on client device 104.
  • the process of decoding the encoded content from the key and non-key frames and then presenting the recovered content on client device 104 is referred to as "normal playback" on the client device.
  • normal playback the content recovered from successive downloaded container files is played back on client device 104 in a forward (play) direction, i.e., in an order of increasing time code.
  • play forward
  • the content is played back from container files CF in the time code order of 0s-2s, 2s-4s, 4s-6s, and so on.
  • the decoded video frames are presented at a frame rate equal to the frame rate at which the video was original captured and encoded, e.g., at a rate of 30 fps.
  • the normal streaming and playback sequence repeats. Therefore, in summary, in the streaming and playback sequence, client device 104 periodically requests and downloads Playlist messages, downloads container files indicated in the Playlist messages, and plays back the content from the downloaded container files in the forward direction.
  • Trick play features include, but are not limited to, rewind and fast forward, in which client device 104 rewinds and fast forwards through previously played back content.
  • client device 104 sends a GetPlaylist message to RTS 1 14 to solicit appropriate trick play video (container files) from network services 102. Therefore, in this case, the GetPlaylist message may also be referred to as a "GetTrickPlayPlaylist" message.
  • the GetPlaylist message sent at 442 includes the following trick play file selection criteria:
  • RTS 1 14 in response to the GetPlaylist message sent at 442, RTS 1 14 generates and sends a trick play Playlist message to client device 104.
  • the trick play Playlist message identifies those container files from the trick play stream (e.g., the stream associated with encoding level L3 in the example of FIG. 2) that meet the selection criteria, namely, that are associated with (i) successive time code less than the trick play time because the trick play direction is RWD, and (ii) an encoding level that matches the specified level (e.g., encoding level L3).
  • the Playlist message lists URLs of the appropriate trick play container files.
  • client device 104 downloads the trick play container files identified in the Playlist message from 444. For example, client device 104 downloads the trick play container files from their corresponding URLs.
  • client device 104 plays back video from the downloaded trick play container files, i.e., the client device decodes the key frames from each of the trick play container files and then presents the decoded video in a rewind play direction, i.e., in an order of decreasing time codes beginning with the trick play time.
  • the video from the key frames may be played back at a reduced video frame rate relative to that used for normal playback.
  • the trick play playback video frame rate may be 5 fps, instead of 30 fps.
  • key frames may be skipped, e.g., every other key frame may be played back.
  • key frames in each of the downloaded trick play container files may be used in trick play playback.
  • the above described trick play sequence results when the user selects RWD at 440.
  • the user may select fast forward (FFWD) at 440.
  • the trick play sequence that results when the user selects FFWD is similar to that for RWD, except that the GetPlaylist message at 442 indicates FFWD instead of RWD.
  • RTS 1 14 returns a Playlist message identifying trick play files associated with successive time codes greater than (not less than) the trick play time. Then, at 448, client device 104 plays back the downloaded trick play files in the forward direction. 4 Profile and Playlist Messages
  • FIG. 5 is an example Profile message 500.
  • the user is a user
  • Profile message format is in accordance with the World Wide Web Consortium (W3C) recommended Extensible Markup Language (XML) markup language, Synchronized Multimedia Integration Language (SMIL) 3.0 Tiny profile. This profile is well-suited to descriptions of web-based multimedia. However, other protocols may be used to format the Profile message.
  • W3C World Wide Web Consortium
  • XML Extensible Markup Language
  • SMIL Synchronized Multimedia Integration Language
  • Profile message 500 includes a header 501 to specify the base profile as SMIL 3.0 (Tiny), and a body including video encoding (VE) profiles 502, 504, 505 and an audio encoding (AE) profile 506.
  • Profile message 500 corresponds to a requested program ID, such as encoded program 200 of FIG. 2, and includes information from the associated index, e.g., index 204.
  • VE profiles 502, 504, 505 specifies the following encoding settings or parameters:
  • a content type e.g., video
  • bitrate 400000 bps, 600000 bps, or 150000 bps
  • ii. video resolution e.g., Res1 , Res2, or Res3 in terms of, e.g., pixel width and height dimensions (e.g., 768 x 432);
  • AE profile 506 specifies:
  • a a content type e .g., audio
  • b an encoding bitrate/reserved bandwidth value (e.g., 192000); and c a MIME type.
  • the Profile message may also include a video frame rate at which each level was encoded.
  • Profile message 500 also includes a field 510 to indicate which of encoding profiles 502-505, if any, represents a trick play stream. In the example of FIG. 5, the stream associated with level 3 (similar to FIG. 2) is indicated as the trick play stream.
  • FIG. 6 is an example Playlist message 600 generated in response to a GetPlaylist message selection criteria including a current time of 40 (seconds) and specifying a level 1 encoding level.
  • the example Playlist message is formatted in accordance with SMIL 3.0.
  • Playlist message 600 includes a header 601 to specify the base profile as 3.0, and a body that includes sequential records or elements 602-610, each of which is defined as a seq element ⁇ seq>.
  • each seq element 602-610 corresponds to an uploaded container file.
  • RTS 1 14 is able to specify a sequence of real-time media streams for playback.
  • a sequence tag is used with each element to indicate one of ⁇ video>, ⁇ audio> or ⁇ subtitle/text> encoded content for streaming.
  • Elements 602-610 identify respective uploaded elements (e.g., container files) that meet the Playlist message criteria (i.e., encoding level 1 and a time code equal to or greater than 40).
  • elements 602-608 identify three container files containing successive or time-ordered two second blocks of encoded video.
  • Element 610 identifies a container file containing a two second segment of encoded audio.
  • Each of the Playlist message records 602-610 includes:
  • a content type identifier e.g., video or audio
  • the URLs correspond to container file addresses from the list of addresses A1 or A2 from FIG. 2;
  • a time code in seconds e.g., a start time and an end time, referred to as "ClipBegin” and "ClipEnd,” respectively, associated with the segment encoded in the identified container file.
  • the example time codes for each of the container files are 40-42, 42-44, and 46-48); and d. a file size of the identified container file (e.g., 3200 kilobits).
  • FIG. 7 is a flowchart of an example network-side method 700 of multimedia content streaming with trick play support based on trick play files, which may be implemented in network services 102.
  • Method 700 may be executed in accordance with sequence 400 of FIG. 4.
  • the multimedia content includes video, and may also include audio and/or text (e.g., subtitles).
  • Method 700 may be implemented in any of the contexts of on-demand, live, and real-time streaming.
  • [0083] 715 includes encoding video into (i) multiple adaptive bitrate streams, and (ii) a corresponding trick play stream in accordance with corresponding distinct sets of encoder settings or levels, such as an encoding bitrate, a resolution, and a video frame rate.
  • Each of the streams comprises container files of encoded video associated with successive time codes.
  • [0084] 720 includes storing (i) the container files for each stream at corresponding addresses, such as network addresses, e.g., URLs, in a download server, e.g., in CDN 1 14, and (ii) an index identifying the container files of each stream in RTS 1 14.
  • addresses such as network addresses, e.g., URLs
  • [0085] 725 includes receiving a playlist request (e.g., a GetPlaylist message) from a client device, e.g., over a communication network, for a selected one of the adaptive bitrate streams.
  • the playlist request includes container file selection criteria, including a current time, an encoding level.
  • [0086] 730 includes sending, to the client device over the communication network, a playlist (e.g., a Playlist message) identifying the stored files of the selected stream that meet the selection criteria, i.e., that are associated with time codes greater than the current time.
  • the playlist may list URLs where the identified container files are stored and sizes of the files.
  • 735 includes receiving, from the client device, a playlist request (e.g., another GetPlaylist message) for the trick play stream corresponding to the selected stream.
  • the trick play playlist request includes a trick play time code, a trick play encoding level, and a trick play direction, e.g., fast forward or rewind.
  • [0088] 740 includes sending, to the client device, a trick play playlist (e.g., another Playlist message) identifying the stored files (e.g., URLs of the stored files) of the trick play stream that are associated with successive time codes that are (i) less than the trick play time if the trick play direction is rewind, and (ii) greater than the trick play time if the trick play direction is fast forward.
  • a trick play playlist e.g., another Playlist message
  • the stored files e.g., URLs of the stored files
  • FIG. 8 is a flowchart of an example client-side method 800 of multimedia content streaming with trick play support based on trick play files, which may be implemented in client device 104.
  • Method 800 is a client side method complementary to network side method 700.
  • Method 800 may be executed in accordance with sequence 400 of FIG. 4.
  • the multimedia content includes video, and may also include audio and/or text (e.g., subtitles).
  • Method 700 may be implemented in any of the contexts of on-demand, live, and real-time streaming.
  • operations 802-815 described below are considered precursor, or initialization, operations that lead to subsequent downloading of an adaptive bitrate stream.
  • 802 includes requesting to stream a video program from network services over a communication network and, in response, receiving a Profile message over the communication network identifying multiple adaptive bitrate streams of encoded video and a trick play stream of encoded video that are stored in, and available for streaming from, network services.
  • the streams may be identified according to their respective encoding levels (e.g., encoding bitrate, resolution, frame rate, etc.).
  • Each of the streams comprises container files of the encoded video.
  • the container files of each stream are associated with successive time codes.
  • 805 includes selecting an adaptive bitrate stream from among the multiple adaptive bitrate streams.
  • a client device may select an adaptive bitrate stream based an available communication bandwidth.
  • [0093] 810 includes sending, to the network services over the communication network, a playlist request (e.g., a GetPlaylist message) for (container) files from the selected stream.
  • the playlist request includes file selection criteria that includes a current time and specifies an encoding level corresponding to, e.g., an encoding bitrate and a resolution, of the selected stream.
  • [0094] 815 includes receiving, from the network services over the communication network, a playlist (e.g., a Playlist message) identifying the files from the selected stream that meet the file selection criteria, i.e., that are associated with successive time codes greater than the current time.
  • a playlist e.g., a Playlist message
  • [0095] 820 includes downloading, from the network services over the communication network, files of encoded video from the selected stream as identified in the playlist, e.g., from URLs listed in the playlist.
  • [0096] 825 includes playing back video from the downloaded files in an order of increasing time codes. This includes playing back video from both key and non-key frames at a normal video frame rate, such as 30 fps.
  • [0097] 830 includes receiving a trick play feature request, such as a video rewind request, from a user of the client device. Next operations 835-850 are performed in response to the trick play request received at 830.
  • a trick play feature request such as a video rewind request
  • [0098] 835 includes sending, to the network services over the communication network, a trick play playlist request (e.g., a GetTrickPlayPlayist message) for appropriate trick play files from the trick play stream corresponding to the selected stream.
  • the request includes a trick play time (corresponding to a time when the user selected the trick play feature), a trick play encoding level as indicated in the Profile message received earlier by the client device at 802 (e.g., level L3), and a trick play direction (e.g., rewind or fast forward).
  • [0099] 840 includes receiving, from the network services over the communication network, a trick play playlist (e.g., a Playlist message) identifying files from the trick play stream that meet the file selection criteria, i.e., that are associated with successive time codes (i) less than the trick play time if the direction is rewind, and (ii) greater than the trick play time if the direction is fast forward.
  • a trick play playlist e.g., a Playlist message
  • [00100] 845 includes downloading the trick play files identified in the playlist from 840, e.g., from URLs listed in the playlist.
  • [00101] 850 includes playing back video from the downloaded files in either the rewind direction, i.e., in an order of decreasing time codes, or in the forward direction, as appropriate. This includes playing back video only from key frames at a trick play video frame rate, such as 5 fps, which is reduced relative to the normal frame rate.
  • FIG. 9A is a block diagram of a computer system 900 configured to support/perform streaming and trick play features as described herein.
  • Computer system 900 includes one or more computer instruction processing units and/or processor cores, illustrated here as processor 902, to execute computer readable instructions, also referred to herein as computer program logic.
  • Computer system 900 may include memory, cache, registers, and/or storage, illustrated here as memory 904, which may include a non-transitory computer readable medium encoded with computer programs, illustrated here as computer program 906.
  • Memory 904 may include data 908 to be used by processor 902 in executing computer program 906, and/or generated by processor 902 during execution of computer program 906.
  • Data 908 may include container files 908a from adaptive bitrate streams and trick play streams, and message definitions 908b for GetPlaylist, Playlist, and Profile messages, such as used in the methods described herein.
  • Computer program 906 may include: [00107] Client application instructions 910 to cause processor 902 to perform client device functions as described herein. Instructions 910 include:
  • GUI instructions 912 to implement a GUI through which a user may select to stream a program and select trick play features
  • streaming and playback instructions 914 to download, decode, and playback streamed video content
  • trick play instructions 916 to implement trick play features
  • message protocol instructions 918 to implement client side message exchange protocols/sequences (sending and receiving of messages) as described in one or more examples above.
  • Instructions 910-918 cause processor 902 to perform functions such as described in one or more examples above.
  • FIG. 9B is a block diagram of network/server-side application instructions 960 which may execute in a processing environment similar to that of computer system 900, and which may be hosted in encoder 1 10, RTS 1 14, and/or CDN 1 12, as appropriate.
  • Network/server-side application instructions 960 cause a processor to perform network-side (network services) functions as described herein. Instructions 960 have access to adaptive bitrate streams, trick play streams, indexes identifying the streams, and message definitions as described in one or more example above. Instructions 960 include:
  • encoder instructions 962 to encode multimedia content into adaptive bitrate streams and trick play streams, as described in one or more example above;
  • message protocol instructions 964 including RTS instructions, to implement network side message exchange protocols/sequences (sending and receiving of messages) in support of adaptive bitrate streaming and trick play streaming, e.g., between RTS 1 14, client device 104, encoder 1 10, and CDN 1 12, as described in one or more examples above.
  • instructions 964 include instructions to create and send Profile and Playlist messages, and to respond to GetPlaylist messages.
  • Methods and systems disclosed herein may be implemented with respect to one or more of a variety of systems including one or more consumer systems, such as described below with reference to FIGs. 10 and 1 1 . Methods and systems disclosed herein are not, however, limited to the examples of FIGs. 10 and 1 1 .
  • FIG. 10 is a block diagram of an example computer system 1000 corresponding to any of network services 102, including encoder 1 10, CDN 1 12, and RTS 1 14.
  • Computer system 1000 which may be, e.g., a server, includes one or more processors 1005, a memory 1010 in which instruction sets and databases for computer program applications are stored, a mass storage 1020 for storing, e.g., encoded programs, and an input/output (I/O) module 1015 through which components of computer system 1 100 may communicate with communication network 106.
  • processors 1005 includes one or more processors 1005, a memory 1010 in which instruction sets and databases for computer program applications are stored, a mass storage 1020 for storing, e.g., encoded programs, and an input/output (I/O) module 1015 through which components of computer system 1 100 may communicate with communication network 106.
  • I/O input/output
  • FIG. 1 1 is a block diagram of an example system 1 100 representing, e.g., client device 104, and may be implemented, and configured to operate, as described in one or more examples herein.
  • System 1 100 or portions thereof may be implemented within one or more integrated circuit dies, and may be implemented as a system-on-a-chip (SoC).
  • SoC system-on-a-chip
  • System 1 100 may include one or more processors 1 104 to execute client- side application programs stored in memory 1 105.
  • System 1 100 may include a communication system 1 106 to interface between processors 1 104 and communication networks, such as networks 106.
  • Communication system 1 106 may include a wired and/or wireless communication system.
  • System 1 100 may include a stream processor 1 107 to process program (i.e., content) streams, received over communication channel 1 108 and through communication system 1 106, for presentation at system 1 100.
  • Stream processor 1 107 includes a buffer 1 107a to buffer portions of received, streamed programs, and a decoder 1 107b to decode and decrypt the buffered programs in accordance with encoding and encryption standards, and using decryption keys.
  • decoder 1 107b may be integrated with a display and graphics platform of system 1 100.
  • Stream processor 1 107 together with processors 1 104 and memory 1 105 represent a controller of system 1 100. This controller includes modules to perform the functions of one or more examples described herein, such as a streaming module to stream programs through communication system 1 106.
  • System 1 100 may include a user interface system 1 1 10.
  • User interface system 1 1 10 may include a monitor or display 1 132 to display information from processor 1 104, such as a client-side GUI.
  • User interface system 1 1 10 may include a human interface device (HID) 1 134 to provide user input to processor 1 104.
  • HID 1 134 may include, for example and without limitation, one or more of a key board, a cursor device, a touch-sensitive device, and or a motion and/or image sensor.
  • HID 1 134 may include a physical device and/or a virtual device, such as a monitor-displayed or virtual keyboard.
  • User interface system 1 1 10 may include an audio system 1 136 to receive and/or output audible sound.
  • System 1 100 may correspond to, for example, a computer system, a personal communication device, and/or a television set-top box.
  • System 1 100 may include a housing, and one or more of communication system 1 106, processors 1 104, memory 1 105, user interface system 1 1 10, or portions thereof may be positioned within the housing.
  • the housing may include, without limitation, a rack-mountable housing, a desk-top housing, a lap-top housing, a notebook housing, a net-book housing, a set-top box housing, a portable housing, and/or other conventional electronic housing and/or future-developed housing.
  • communication system 1 102 may be implemented to receive a digital television broadcast signal
  • system 1 100 may include a set-top box housing or a portable housing, such as a mobile telephone housing.
  • Methods and systems disclosed herein may be implemented in circuitry and/or a machine, such as a computer system, and combinations thereof, including discrete and integrated circuitry, application specific integrated circuitry (ASIC), a processor and memory, and/or a computer-readable medium encoded with instructions executable by a processor, and may be implemented as part of a domain-specific integrated circuit package, a system-on-a-chip (SOC), and/or a combination of integrated circuit packages.
  • ASIC application specific integrated circuitry
  • SOC system-on-a-chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Network services encode multimedia content, such as video, into multiple adaptive bitrate streams of encoded video and a separate trick play stream of encoded video to support trick play features. The trick play stream is encoded at a lower encoding bitrate and frame rate than each of the adaptive bitrate streams. The adaptive bitrate streams and the trick play stream are stored in the network services. During normal content streaming and playback, a client device downloads a selected one of the adaptive bitrate streams from network serviced for playback at the client device. To implement a trick play feature, the client device downloads the trick play stream from the network services for trick play playback.

Description

NETWORK VIDEO STREAMING WITH TRICK PLAY BASED ON
SEPARATE TRICK PLAY FILES
BACKGROUND
[0001] Distribution of multimedia video (also referred to herein as "media" and/or "program(s)"), such as movies and the like, from network services to a client device, may be achieved through adaptive bitrate streaming of the video. Prior to streaming, the video may be encoded at different bitrates and resolutions into multiple bitrate streams that are stored in the network services. Typically, each of the bitstreams includes time-ordered segments of encoded video.
[0002] Adaptive bitrate streaming includes determining an available streaming bandwidth at the client device, and then downloading a selected one of the different bitrate streams from the network services to the client device based on the determined available bandwidth. While streaming, the client device downloads and buffers the successive encoded video segments associated with the selected bitstream. The client device decodes the buffered encoded video segments to recover the video therein, and then plays back the recovered video on the client device, e.g., in audio-visual form.
[0003] In normal playback, the client device plays back the video recovered from each of the buffered segments in the order in which the video was originally encoded, i.e., in a forward direction. The client device may offer playback modes or features in addition to normal playback. Such additional playback features may include rewind, fast forward, skip, and so on, as is known.
[0004] The additional playback features are referred to herein as trick play features. In order to implement trick play features, such as rewind, the client device requires access to video that has already been played. Therefore, the client device may be required to store large amounts of already downloaded and played video in order to meet the demands of a selected trick play feature. However, many client devices, especially small, hand-held devices, have limited memory capacity and, therefore, may be unable to store the requisite amount of video. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] FIG. 1 is a block diagram of an example network environment that supports adaptive bitrate streaming of multimedia content, such as video, with trick play features.
[0006] FIG. 2 is an illustration of an example encoded multimedia video program generated by and stored in network services of FIG. 1 .
[0007] FIG. 3A is an illustration of an example adaptive bitrate frame structure of an encoded video block of FIG. 2.
[0008] FIG. 3B is an illustration of an example trick play frame structure of an encoded video block of FIG. 2.
[0009] FIG. 4 is a sequence diagram of example high-level interactions between network services and a client device used to initiate streaming, implement normal streaming and playback, and implement trick play features in streaming embodiments.
[0010] FIG. 5 is an example Profile message used in streaming.
[0011] FIG. 6 is an example Playlist message used in streaming.
[0012] FIG. 7 is a flowchart of an example network-side method of multimedia content streaming with trick play support based on trick play files, which may be implemented in the network services of FIG. 1 .
[0013] FIG. 8 is a flowchart of an example client-side method of multimedia content streaming with trick play support based on trick play files, which may be implemented in the client device of FIG. 1 .
[0014] FIG. 9A is a block diagram of an example computer system.
[0015] FIG. 9B is a block diagram of network/server-side application instructions which may execute in on a processor system similar to that of FIG. 9A.
[0016] FIG. 10 is a block diagram of an example computer system corresponding to any of the network servers in the environment of FIG. 1 .
[0017] FIG. 1 1 is a block diagram of an example system representing a client device of FIG. 1 . [0018] In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.
DETAILED DESCRIPTION
Table of Contents
1 Network Environment 4
2 Container Files - Streaming Sources 8
2.1 Encoded Video Frame Structure 2
3 Sequence Diagram 14
3.1 Start-up 15
3.2 Normal Streaming and Playback 16
3.3 Trick Play 18
4 Profile and Playlist Messages 20
4.1 Profile Message 20
4.2 Playlist Message 21
5 Method Flowcharts 22
5.1 Network Side 22
5.2 Client Side 23
6 Systems 25
1 Network Environment
[0019] FIG. 1 is a block diagram of an example network environment 100 that supports adaptive bitrate streaming of multimedia content with trick play features. Network services 102 encode multimedia content, such as video, into multiple adaptive bitrate streams of encoded video and a separate trick play stream of encoded video to support trick play features. The trick play stream may be encoded at a lower encoding bitrate and a lower frame than each of the adaptive bitrate streams. The adaptive bitrate and trick play streams are stored in network services 102. For normal content streaming and playback, a client device 104 downloads a selected one of the adaptive bitrate streams from network services 102 for playback at the client device. When a user of client device 104 selects a trick play feature, such as rewind, the client device 104 downloads the trick play stream from network services 102 for trick play playback.
[0020] Environment 100 supports trick play features in different adaptive bitrate streaming embodiments, including on-demand streaming, live streaming, and real-time streaming embodiments. On-demand streaming includes encoding the content of a program from start to end in its entirety and then, after the entire program has been encoded, streaming, i.e., downloading, the encoded program to a client device. An example of on-demand streaming includes streaming a movie from a Video-on-Demand (VOD) service to a client device.
[0021] Live streaming includes encoding successive blocks of live content, i.e., a live program, as they are received from a content source, and then streaming each encoded block as it becomes available for download. Live streaming may include streaming live scenes, i.e., video, captured with a video camera.
[0022] Real-time streaming is similar in most aspects to live streaming, except that the input to real-time streaming is not a live video feed. Rather, the input, or source, may include successive encoded blocks, or input blocks, that have a format not suitable for streaming (e.g., for a given system) and must, therefore, be decoded and re-encoded (i.e., transcoded) into an encoded format that is suitable for streaming (in the given system). Real-time streaming handles the successive incompatible input blocks similar to the way live streaming handles the successive blocks of live content. [0023] Network environment 100 is now described in detail. Network environment 100 includes server-side or network services 102 (also referred to simply as "services 102") and client-side device 104. Network services 102 may be implemented as Internet cloud-based services. Network services 102 interact and cooperate with each other, and with client device 104, to manage and distribute, e.g., stream, multimedia content from content sources 108 to the client devices, over one or more communication network 106, such as the Internet. Network services 102 communicate with each other and with client devices 104 using any suitable communication protocol, such as an Internet protocol, which may include Transmission Control Protocol/Internet Protocol (TCP/IP), Hypertext Transfer Protocol (HTTP), etc., and other non-limiting protocols described herein.
[0024] Content sources 108 may include any number of multimedia content sources or providers that originate live and/or pre-recorded multimedia content (also referred to herein simply as "content"), and provide the content to services 102, directly, or indirectly through communication network 106. Content sources 108, such as Netflix®, HBO®, cable and television networks, and so on, may provide their content in the form of programs, including, but not limited to, entertainment programs (e.g., television shows, movies, cartoons, news programs, etc.), educational programs (e.g., classroom video, adult education video, learning programs, etc.), and advertising programs (e.g., commercials, infomercials, or marketing content). Content sources 108, such as, e.g., video cameras, may capture live scenes provide the resulting real-time video to services 102. Content sources may also include live broadcast feeds deployed using protocols such as Real-time Transport Protocol (RTP), and Real-time Messaging Protocol (RTMP).
[0025] Network services 102 include, but are not limited to: an encoder 1 10 to encode content from content sources 108; a content delivery network (CDN) 1 12 (also referred to as a "download server 1 12") to store the encoded content, and from which the stored, encoded content may be streamed or downloaded to client device 104; and a real-time service (RTS) 1 14 (also referred to as a "real-time server (RTS) 1 14") to (i) control services 102, and (ii) implement an RTS streaming control interface through which client device 104 may initiate and then monitor both on-demand, live, and realtime streaming sessions. Each of services 102 may be implemented as one or more distinct computer servers that execute one or more associated server-side computer program applications suited to the given service.
[0026] Encoder 1 10 may be implemented as a cloud encoder accessible over communication network 106. Encoder 1 10 encodes content provided thereto into a number of alternative bitstreams 120 (also referred to as encoded content) to support adaptive bitrate streaming of the content. For increased efficiency, encoder 1 10 may be implemented as a parallel encoder that includes multiple parallel encoders. In such an embodiment, encoder 1 10 divides the content into successive blocks or clips each of a limited duration in time. Each block may include a number of successive picture frames, referred to collectively as a group of pictures (GOPs). Encoder 1 10 encodes the divided blocks or GOPs in parallel to produce alternative bitstreams 120. Encoder 1 10 may also include transcoders to transcode input files from one encoded format to another, as necessary.
[0027] Alternative bitstreams 120 encode the same content in accordance with different encoding parameters/settings, such as at different encoding bitrates, resolutions, frame rates, and so on. In an embodiment, each of bitstreams 120 comprises a large number of sequential (i.e., time-ordered) files of encoded content, referred to herein as container files (CFs), as will be described further in connection with FIG. 2. [0028] After encoder 1 10 has finished encoding content, e.g., after each of the content blocks is encoded, the encoder uploads the encoded content to CDN 1 12 for storage therein. CDN 1 12 includes one or more download servers (DSs) to store the uploaded container files at corresponding network addresses, so as to be accessible to client device 104 over communication network 106.
[0029] RTS 1 14 acts as a contact/control point in network services 102 for client device 104, through which the client device may initiate and then monitor its respective on-demand, live, and real-time streaming sessions. To this end, RTS 1 14 collects information from services 102, e.g., from encoder 1 10 and CDN 1 12, that client device 104 may use to manage its respective streaming sessions, and provides the collected information to the client device via messages (described below) when appropriate during streaming sessions, thus enabling the client device to manage its streaming sessions. The information collected by RTS 1 14 (and provided to client device 104) identifies the encoded content, e.g., the container files, stored in CDN 1 12, and may include, but is not limited to, network addresses of the container files stored in the CDN, encoding parameters use to encode the container files, such as their encoding bitrates, resolutions, and video frame rates, and file information, such as file sizes, and file types.
[0030] Client device 104 may be capable of wireless and/or wired communication with network services 102 over communication network 106, and includes processing, storage, communication, and user interface capabilities sufficient to provide all of the client device functionality described herein. Such functionality may be provided, at least in part, by one or more client applications 107, such as computer programs, that execute on client device 104. Client applications 107 may include:
a. a Graphical User Interface (GUI) through which a user of the client device may interact with and request services from corresponding server-side applications hosted in services 102. The GUI may also present trick play feature selections to the user, such as rewind and fast forward. Under user control through the GUI, client device 104 may request/select (i) programs to be streamed from services 102, and (ii) trick play features to control trick play playback of the streamed programs; b. streaming and playback applications to stream/download the selected programs from the services, and playback, i.e., present, the streamed programs on client device 104, under user control, through the GUI; and c. a trick play application, integrated with the GUI and the streaming and playback applications, to implement the trick play features as described herein.
2 Container Files - Streaming Sources
[0031] As described above, encoder 1 10 encodes multimedia content from content sources 108, and CDN 1 12 stores the encoded content. To support adaptive bitrate streaming and trick play features, encoder 1 10 encodes the content at multiple encoding levels, where each level represents a distinct combination of an encoding bitrate, a video resolution (for video content), and a video frame rate, to produce (i) multiple adaptive bitrate streams for the content, and (ii) a trick play stream for the content. The multiple streams may be indexed according to their respective encoding levels. While streaming the encoded program from CDN 1 12, client device 104 may switch between streams, i.e., levels (and thus encoded bitrates and resolutions), according to conditions at the client device. Also, while streaming the encoded program, client device 104 may download portions of the trick play stream from CDN 1 12 to implement trick play features in the client device.
[0032] FIG. 2 is an illustration of an example encoded multimedia video program 200 generated by encoder 1 10 and stored in CDN 1 12. Encoded video program 200 includes:
a. two encoded adaptive bitrate (ABR) video streams 1 , 2 encoded at corresponding encoding levels L1 , L2 and available for adaptive bitrate streaming; and
b. a trick play stream encoded at an encoding level L3. The trick play stream corresponds to, i.e., encodes the same video as, the two ABR streams 1 , 2. [0033] Each of encoding levels L1 -L3 corresponds to a distinct combination of an encoding bitrate (Rate), a video resolution (Res), and a video frame rate (FR). In the example, encoding levels L1 , L2, L3 correspond to encoder settings Rate1/Res1/FR1 , Rate2/Res2/FR2, Rate3/Res3/FR3, respectively. In an embodiment, the encoding bitrate Rate3 and the video frame rate FR3 used to encode the trick play stream are less than the encoding bitrates Ratel , Rate2 and the frame rates FR1 , FR2, respectively, used to encode adaptive bitrate streams 1 , 2.
[0034] Although the example of FIG. 2 includes only two encoding levels for the
ABR streams, in practice, an encoded video program typically includes many more than two levels of encoding for ABR streaming, such as 8 to 15 levels of encoding.
[0035] Each of streams 1 -3 includes a distinct, time-ordered, sequence of container files CF (i.e., successive container files CF), where time is depicted in FIG. 2 as increasing in a downward vertical direction. Each of the successive container files CF, of each of streams 1 -3, includes (i.e., encodes) a block or segment of video (also referred to herein as an encoded video block or segment) so that the successive container files encode successive contiguous encoded video blocks. Each of container files CF includes a time code TC to indicate a duration of the video encoded in the block of the container file, and/or a position of the container file in the succession of container files comprising the corresponding stream. The time code TC may include a start time and end time for the corresponding encoded video block. In an example in which each of container files CF encodes two seconds of video, time codes TC1 , TC2, and TC3 may represents start and end times of 0s (seconds) and 2s, 2s and 4s, and 4s and 6s, respectively, and so down the chain of remaining successive container files.
[0036] The encoded blocks of the container files CF in a given stream may encode the same content (e.g., video content) as corresponding blocks in the other streams. For example, the stream 1 block corresponding to time code TC1 has encoded therein the same video as that in the stream 2 block corresponding to TC1 . Such corresponding blocks encode the same content and share the same time code TC, i.e., they are aligned or coincide in time. [0037] In an embodiment, a program stream index 204 may be associated with encoded video program 200 to identify each of the streams therein (e.g., the ABR streams 1 , 2, and the trick play stream). RTS 1 14 may create (and store) program stream index 204 based on the information collected from encoder 1 10 and CDN 1 12, as described above in connection with FIG. 1 . Then, during a live streaming session, for example, RTS 1 14 may provide information from program stream index 204 to client device 104 so as to identify appropriate container file addresses to the client device. Program stream index 204 may include:
a. address pointers (e.g., network addresses, such as Uniform Resource Locators (URLs)) 210-1 , 210-2, 210-3 to corresponding streams 1 , 2, and the trick play stream;
b. encoder parameters/settings associated with the encoded streams including, but not limited to, encoding levels L1 , L2, L3 (also referred to as "Video ID" in FIG. 2, and including the encoding bitrates and resolutions Rate1/Res1 , Rate2/Res2, Rate3/Res3), encoding techniques/standards, and file types and sizes of the container files CF; and
c. a trick play flag (TP flag) associated with URL 210-3 that, when set, indicates the associated stream is a trick play stream.
[0038] Address pointers 210-1 , 210-2, 210-3 may point to respective lists of addresses A1 , A2, A3 of the container files CF comprising each of streams 1 , 2, 3. Address lists A1 , A2, A3 may each be represented as an array or linked list of container file network addresses, e.g., URLs. Accordingly, access to the information in program stream index 204 results in possible access to all of the container files associated with streams 1 , 2, 3.
[0039] Although each of container files CF depicted in FIG. 2 represents a relatively small and simple container structure, larger and more complicated container structures are possible. For example, each container file may be expanded to include multiple clusters of encoded media, each cluster including multiple blocks of encoded media, to thereby form a larger container file also suitable for embodiments described herein. The larger container files encode an equivalent amount of content as a collection of many smaller container files.
[0040] Container files may encode a single stream, such as a video stream (as depicted in FIG. 2), an audio stream, or a text stream (e.g., subtitles). Alternatively, each container file may encode multiple multiplexed streams, such as a mix of video, audio, and text streams. In addition, a container file may encode only a metadata stream at a relatively low bitrate.
[0041] In embodiments: the container files may be Matroska (MKV) containers based on Extensible Binary Meta Language (EBML), which is a derivative of Extensible Binary Meta Language (XML), or files encoded in accordance with the Moving Picture Experts Group (MPEG) standard; the program stream index may be provided in a Synchronized Multimedia Integration Language (SMIL) format; and client device 104 may download container files from CDN 1 14 over networks 106 using the HTTP protocol. In other embodiments, the container file formats may include OGG, flash video (FLV), Windows Media Video (WMV), or any other format.
[0042] Exemplary, non-limiting, encoding bitrates for different levels, e.g., levels L1 , L2, L3 may range from below 125 kilo-bits-per-second (kbps) up to 15,000 kbps, or even higher, depending on the type of encoded media (i.e., content). Video resolutions Res 1 - Res 4 may be equal to or different from each other.
[0043] The container files may support adaptive streaming of encoded video programs across an available spectrum bandwidth that is divided into multiple, i.e., n, levels. Video having a predetermined video resolution for each level may be encoded at a bitrate corresponding to the bandwidth associated with the given level. For example, in DivX® Plus Streaming, by Rovi Corporation, the starting bandwidth is 125 kbps and the ending bandwidth is 8400 kbps, and the number n of bandwidth levels is eleven (1 1 ). Each bandwidth level encodes a corresponding video stream, where the maximum encoded bitrate of the video stream (according to a hypothetical reference decoder model of the video coding standard H.264) is set equal to the bandwidth/bitrate of the given level. In DivX® Plus Streaming, the 1 1 levels are encoded according to 4 different video resolution levels, in the following way: mobile (2 levels), standard definition (4 levels), 720p (2 levels), and 1080p (3 levels).
2.1 Encoded Video Frame Structure
[0044] FIG. 3A is an illustration of an example frame structure 300 of an encoded video block for container files from adaptive bitrate streams 1 and 2 of FIG. 2. Video encoding by encoder 1 10 includes capturing a number of successive picture frames, i.e., a GOP, at a predetermined video frame rate, and encoding each of the captured frames, in accordance with an encoding standard/technique, into a corresponding encoded video frame. Exemplary encoding standards include, but are not limited to, block encoding standards, such as H.264 and Moving Picture Experts Group (MPEG) standards. Collectively, the encoded video frames form an encoded video block, such as an encoded video block in one of container files CF. The process repeats to produce contiguous encoded video blocks. [0045] The encoding process may encode a video frame independent of, i.e., without reference to, any other video frames, such as preceding frames, to produce an encoded video frame referred to herein as a key frame. For example, the video frame may be intra-encoded, or intra-predicted. Such key frames are referred to as l-Frames in the H.264/MPEG standard set. Since the key frame was encoded independent of other encoded video frames, it may be decoded to recover the original video content therein independent of, i.e., without reference to, any other encoded video frames. In the context of streaming, the key frame may be downloaded from CDN 1 12 to client device 104, decoded independent of other encoded frames, and the recovered (decoded) video played back, i.e., presented, on the client device.
[0046] Alternatively, the encoding process may encode a video frame based on, or with reference to, other video frames, such as one or more previous frames, to produce an encoded video frame referred to herein as a non-key frame. For example, the video frame may be inter-encoded, i.e., inter-predicted, to produce the non-key frame. Such non-key frames include P-Frames and B-frames in the H.264/MPEG standard set. The non-key frame is decoded based on one or more other encoded video frames, e.g., key-frames, reference frames, etc. In the context of streaming, the non-key frame may be downloaded from CDN 1 12 to client device 104, decoded based on other encoded frames, and the recovered video played back.
[0047] With reference again to FIG. 3A, frame structure 300 of the encoded video block for container files in the adaptive bitrate streams includes, in a time-ordered sequence, a first set of successive non-key frames 304, a key frame 306, and a second set of successive non-key frames 308. Accordingly, key frame 306 is interspersed among the encoded video frames of the encoded video block. The position of key frame 306 relative to the non-key frames in block 300 may vary, e.g., the position may be at the top, the middle, the bottom, or elsewhere in the block. Moreover, multiple key frames may be interspersed among the encoded video frames of the encoded video block, and separated from each other by multiple non-key frames. [0048] A key/non-key (K/NK) flag associated with each of the frames 304, 306, and 308 indicates whether the associated frame is a key-frame or a non-key frame. Each of the key and the non-key frames may include a predetermined number of bytes of encoded video.
[0049] In an example in which the encoded video block represented by frame structure 300 encodes 2 seconds of video captured at a video frame rate of 30 frames per second (fps), the frame structure includes 60 encoded video frames, which may include N (i.e., one or more) interspersed key frames, and 60-N non-key frames. Typically, the number of non-key frames exceeds the number of key frames.
[0050] FIG. 3B is an illustration of an example frame structure 320 of an encoded video block for container files from the trick play stream of FIG. 2. Trick play frame structure 320 includes, in a time-ordered sequence, key frames 322. In other words, trick play frame structure 320 includes only key frames, i.e., key frames without non-key frames.
[0051] In the example in which the encoded video block represented by frame structure 300 encodes 2 seconds of video captured at a video frame rate of 30 frames per second (fps), the encoded video block represented by frame structure 320 also encodes 2 seconds of video. However the video frame rate for structure 320 is reduced to 5 fps, which yields 10 encoded video frames (key frames) every 2 seconds.
3 Sequence Diagram
[0052] FIG. 4 is a sequence diagram of example high-level interactions 400 between network services 102 and client device 104 used to initiate, i.e.., start-up, streaming, implement normal streaming and playback, and implement trick play features in on-demand, live, and real-time streaming embodiments. Interactions 400 progress in time from top-to-bottom in FIG. 4, and are now described in that order. It is assumed that prior to startup, encoder 1 10 is in the process of, or has finished, encoding video content into multiple adaptive bitrate streams and a corresponding trick play stream, and storing the resulting container files in CDN 1 12 for subsequent download to client device 104. 3.1 Start-up
[0053] At 410, a user of client device 104 selects content, such as a video program, to be streamed using the client device GUI.
[0054] At 422, client device 104 sends a "Start" message (also referred to as a "begin playback" message) to RTS 1 14 to start a streaming session. The Start message includes an identifier (ID) of the content to be streamed and a current time stamp. The ID identifies content from a content source that is to be streamed to client 104, and may indicate, e.g., a channel, program name, and/or source originating the content to be streamed. The current time stamp (also referred to as "current time") indicates a current time, such as a Universal Time Code (UTC). The UTC may be acquired from any available UTC time service, as would be appreciated by those or ordinary skill in the relevant arts.
[0055] As mentioned above, it is assumed that at the time the Start message is issued, the content identified therein has already been encoded and is available for streaming, e.g., for video-on-demand streaming, or will begin to be encoded shortly after the time of the Start message, e.g., for live and real-time streaming. It is also assumed that RTS 1 14 has collected, or will be collecting, the information related to the encoded program from encoder 1 10 or CDN 1 15, such as a program stream index, e.g., program stream index 204, sufficient to identify the identified content in network services 102.
[0056] At 424, in response to the Start message, RTS 1 14 sends an encoding profile message (referred to as a "Profile" message) to client 104. The Profile message lists different encoding profiles used to encode the identified content, e.g., as available from the program stream index for the identified content. Each of the profiles specifies encoding parameters/settings, including, but not limited to: content type (e.g., audio, video, or subtitle); an encoding level corresponding to an encoding bitrate, resolution, and video frame rate (e.g., levels L1 , L2, L3); and a container file type, e.g., a Multipurpose Internet Mail Extensions (MIME) type. The Profile message also indicates which encoding level among the multiple encoding levels e.g., encoding level L3, represents or corresponds to a trick play stream.
[0057] In response to the Profile message, client device 104 selects an appropriate encoding level (e.g., an appropriate combination of an encoding bitrate and a resolution) among the levels indicated in the Profile message (not including the level indicating the trick play stream) for normal streaming and playback of the identified content. Client device 104 may determine the appropriate encoding level based on a communication bandwidth at the client device.
3.2 Normal Streaming and Playback
[0058] After startup, normal streaming and playback begins, as follows.
[0059] At 432, after client device 104 has selected the encoding level, the client device sends a GetPlaylist message to RTS 1 14 to request a list of any new container files that have been uploaded since the client device last downloaded container files (if any) from CDN 1 12. The GetPlaylist message includes selection criteria for uploaded container files, namely, a current time and the selected encoding level. The current time represents a time code associated with the last container file downloaded by client device 104 (if any) in the current streaming session.
[0060] In response to the GetPlaylist message, RTS 1 14: a. selects the uploaded container files, as identified to the RTS that meet the criteria specified in the GetPlaylist message. The selected, uploaded container files are those container files that have (i) a time code greater than the current time, and (ii) an encoding level that matches the level specified in the GetPlaylist message from the client device; b. generates a Playlist message identifying the selected container files; and c. at 433, sends the Playlist message to client device 104.
[0061] For each of the selected container files, the Playlist message includes the following information: the type of content encoded in the container file (e.g., video, audio, or subtitle); an address (e.g., URL) of the container file in CDN 1 12 (e.g., a subset of the addresses A1 or A2); a time code, e.g., a start time and an end time, associated with the content block encoded in the container file; and a file size of the container file.
[0062] At 434, in response to the Playlist message, client device 104 downloads container files from addresses in CDN 1 12 based on, i.e., as identified in, the Playlist message.
[0063] At 436, client device 104 decodes all of the key frames and the non-key frames of the encoded content block from each of the downloaded container files to recover the original content therein, and then presents the recovered content, whether in audio, visual, or in other form, on client device 104. The process of decoding the encoded content from the key and non-key frames and then presenting the recovered content on client device 104 is referred to as "normal playback" on the client device. In normal playback, the content recovered from successive downloaded container files is played back on client device 104 in a forward (play) direction, i.e., in an order of increasing time code. For example, with reference again to FIG. 2, the content is played back from container files CF in the time code order of 0s-2s, 2s-4s, 4s-6s, and so on. For normal playback, the decoded video frames are presented at a frame rate equal to the frame rate at which the video was original captured and encoded, e.g., at a rate of 30 fps. [0064] The normal streaming and playback sequence repeats. Therefore, in summary, in the streaming and playback sequence, client device 104 periodically requests and downloads Playlist messages, downloads container files indicated in the Playlist messages, and plays back the content from the downloaded container files in the forward direction.
3.3 Trick Play
[0065] At any time during the normal streaming and playback sequence, the user may select a trick play (TP) feature through the GUI. Trick play features include, but are not limited to, rewind and fast forward, in which client device 104 rewinds and fast forwards through previously played back content.
[0066] At 440, assume the user selects the rewind trick play feature while client device 104 is performing the normal playback of content.
[0067] At 442, in response to the rewind request, client device 104 sends a GetPlaylist message to RTS 1 14 to solicit appropriate trick play video (container files) from network services 102. Therefore, in this case, the GetPlaylist message may also be referred to as a "GetTrickPlayPlaylist" message. The GetPlaylist message sent at 442 includes the following trick play file selection criteria:
a. a time (referred to as a "trick play time") when the user selected the trick play feature;
b. the encoding level that was indicated in the Profile message (at 424) as corresponding to the trick play video (e.g., level 3 in the example of FIG. 2); and
c. a trick play direction (depicted as "Dir" in FIG. 4) indicating rewind (RWD). [0068] At 444, in response to the GetPlaylist message sent at 442, RTS 1 14 generates and sends a trick play Playlist message to client device 104. The trick play Playlist message identifies those container files from the trick play stream (e.g., the stream associated with encoding level L3 in the example of FIG. 2) that meet the selection criteria, namely, that are associated with (i) successive time code less than the trick play time because the trick play direction is RWD, and (ii) an encoding level that matches the specified level (e.g., encoding level L3). The Playlist message lists URLs of the appropriate trick play container files.
[0069] At 446, client device 104 downloads the trick play container files identified in the Playlist message from 444. For example, client device 104 downloads the trick play container files from their corresponding URLs.
[0070] At 448, client device 104 plays back video from the downloaded trick play container files, i.e., the client device decodes the key frames from each of the trick play container files and then presents the decoded video in a rewind play direction, i.e., in an order of decreasing time codes beginning with the trick play time.
[0071] The trick play sequence 442-448 repeats.
[0072] During trick play, the video from the key frames may be played back at a reduced video frame rate relative to that used for normal playback. For example, the trick play playback video frame rate may be 5 fps, instead of 30 fps.
[0073] Also, to implement a faster rewind, key frames may be skipped, e.g., every other key frame may be played back. In other words, only a subset of key frames in each of the downloaded trick play container files may be used in trick play playback.
[0074] The above described trick play sequence results when the user selects RWD at 440. Alternatively, the user may select fast forward (FFWD) at 440. The trick play sequence that results when the user selects FFWD is similar to that for RWD, except that the GetPlaylist message at 442 indicates FFWD instead of RWD. In response to the FFWD indication in the GetPlaylist message, at 444, RTS 1 14 returns a Playlist message identifying trick play files associated with successive time codes greater than (not less than) the trick play time. Then, at 448, client device 104 plays back the downloaded trick play files in the forward direction. 4 Profile and Playlist Messages
4.1 Profile Message
[0075] FIG. 5 is an example Profile message 500. In an embodiment, the
Profile message format is in accordance with the World Wide Web Consortium (W3C) recommended Extensible Markup Language (XML) markup language, Synchronized Multimedia Integration Language (SMIL) 3.0 Tiny profile. This profile is well-suited to descriptions of web-based multimedia. However, other protocols may be used to format the Profile message.
[0076] Profile message 500 includes a header 501 to specify the base profile as SMIL 3.0 (Tiny), and a body including video encoding (VE) profiles 502, 504, 505 and an audio encoding (AE) profile 506. Profile message 500 corresponds to a requested program ID, such as encoded program 200 of FIG. 2, and includes information from the associated index, e.g., index 204. Each of VE profiles 502, 504, 505 specifies the following encoding settings or parameters:
a. a content type, e.g., video;
b. an encoding level "Video ID" (e.g., level 1 = L2, level 2 = L2, level 3 = L3) with its corresponding
i. encoding bitrate (e.g., Ratel , Rate2, or Rate3, such as a bitrate = 400000 bps, 600000 bps, or 150000 bps), and
ii. video resolution (e.g., Res1 , Res2, or Res3) in terms of, e.g., pixel width and height dimensions (e.g., 768 x 432); and
c. MIME type.
[0077] Similarly, AE profile 506 specifies:
a a content type, e .g., audio;
b an encoding bitrate/reserved bandwidth value (e.g., 192000); and c a MIME type.
[0078] The Profile message may also include a video frame rate at which each level was encoded. [0079] As mentioned above in connection with FIG. 4, Profile message 500 also includes a field 510 to indicate which of encoding profiles 502-505, if any, represents a trick play stream. In the example of FIG. 5, the stream associated with level 3 (similar to FIG. 2) is indicated as the trick play stream.
4.2 Playlist Message
[0080] FIG. 6 is an example Playlist message 600 generated in response to a GetPlaylist message selection criteria including a current time of 40 (seconds) and specifying a level 1 encoding level. Like the Profile message, the example Playlist message is formatted in accordance with SMIL 3.0.
[0081] Playlist message 600 includes a header 601 to specify the base profile as 3.0, and a body that includes sequential records or elements 602-610, each of which is defined as a seq element <seq>. In an embodiment, each seq element 602-610 corresponds to an uploaded container file. Using seq elements, RTS 1 14 is able to specify a sequence of real-time media streams for playback. A sequence tag is used with each element to indicate one of <video>, <audio> or <subtitle/text> encoded content for streaming. Elements 602-610 identify respective uploaded elements (e.g., container files) that meet the Playlist message criteria (i.e., encoding level 1 and a time code equal to or greater than 40). In the example of FIG. 6, elements 602-608 identify three container files containing successive or time-ordered two second blocks of encoded video. Element 610 identifies a container file containing a two second segment of encoded audio. Each of the Playlist message records 602-610 includes:
a. a content type identifier (e.g., video or audio);
b. a URL of the identified container file (e.g., src = http://10.180.14.232/l140.mkv). For example, the URLs correspond to container file addresses from the list of addresses A1 or A2 from FIG. 2; c. a time code in seconds (e.g., a start time and an end time, referred to as "ClipBegin" and "ClipEnd," respectively,) associated with the segment encoded in the identified container file. The example time codes for each of the container files are 40-42, 42-44, and 46-48); and d. a file size of the identified container file (e.g., 3200 kilobits).
5 Method Flowcharts
5.1 Network Side
[0082] FIG. 7 is a flowchart of an example network-side method 700 of multimedia content streaming with trick play support based on trick play files, which may be implemented in network services 102. Method 700 may be executed in accordance with sequence 400 of FIG. 4. The multimedia content includes video, and may also include audio and/or text (e.g., subtitles). Method 700 may be implemented in any of the contexts of on-demand, live, and real-time streaming.
[0083] 715 includes encoding video into (i) multiple adaptive bitrate streams, and (ii) a corresponding trick play stream in accordance with corresponding distinct sets of encoder settings or levels, such as an encoding bitrate, a resolution, and a video frame rate. Each of the streams comprises container files of encoded video associated with successive time codes.
[0084] 720 includes storing (i) the container files for each stream at corresponding addresses, such as network addresses, e.g., URLs, in a download server, e.g., in CDN 1 14, and (ii) an index identifying the container files of each stream in RTS 1 14.
[0085] 725 includes receiving a playlist request (e.g., a GetPlaylist message) from a client device, e.g., over a communication network, for a selected one of the adaptive bitrate streams. The playlist request includes container file selection criteria, including a current time, an encoding level.
[0086] 730 includes sending, to the client device over the communication network, a playlist (e.g., a Playlist message) identifying the stored files of the selected stream that meet the selection criteria, i.e., that are associated with time codes greater than the current time. The playlist may list URLs where the identified container files are stored and sizes of the files. [0087] 735 includes receiving, from the client device, a playlist request (e.g., another GetPlaylist message) for the trick play stream corresponding to the selected stream. The trick play playlist request includes a trick play time code, a trick play encoding level, and a trick play direction, e.g., fast forward or rewind.
[0088] 740 includes sending, to the client device, a trick play playlist (e.g., another Playlist message) identifying the stored files (e.g., URLs of the stored files) of the trick play stream that are associated with successive time codes that are (i) less than the trick play time if the trick play direction is rewind, and (ii) greater than the trick play time if the trick play direction is fast forward.
5.2 Client Side
[0089] FIG. 8 is a flowchart of an example client-side method 800 of multimedia content streaming with trick play support based on trick play files, which may be implemented in client device 104. Method 800 is a client side method complementary to network side method 700. Method 800 may be executed in accordance with sequence 400 of FIG. 4. The multimedia content includes video, and may also include audio and/or text (e.g., subtitles). Method 700 may be implemented in any of the contexts of on-demand, live, and real-time streaming.
[0090] Together, operations 802-815 described below are considered precursor, or initialization, operations that lead to subsequent downloading of an adaptive bitrate stream.
[0091] 802 includes requesting to stream a video program from network services over a communication network and, in response, receiving a Profile message over the communication network identifying multiple adaptive bitrate streams of encoded video and a trick play stream of encoded video that are stored in, and available for streaming from, network services. The streams may be identified according to their respective encoding levels (e.g., encoding bitrate, resolution, frame rate, etc.). Each of the streams comprises container files of the encoded video. The container files of each stream are associated with successive time codes. [0092] 805 includes selecting an adaptive bitrate stream from among the multiple adaptive bitrate streams. A client device may select an adaptive bitrate stream based an available communication bandwidth.
[0093] 810 includes sending, to the network services over the communication network, a playlist request (e.g., a GetPlaylist message) for (container) files from the selected stream. The playlist request includes file selection criteria that includes a current time and specifies an encoding level corresponding to, e.g., an encoding bitrate and a resolution, of the selected stream.
[0094] 815 includes receiving, from the network services over the communication network, a playlist (e.g., a Playlist message) identifying the files from the selected stream that meet the file selection criteria, i.e., that are associated with successive time codes greater than the current time.
[0095] 820 includes downloading, from the network services over the communication network, files of encoded video from the selected stream as identified in the playlist, e.g., from URLs listed in the playlist.
[0096] 825 includes playing back video from the downloaded files in an order of increasing time codes. This includes playing back video from both key and non-key frames at a normal video frame rate, such as 30 fps.
[0097] 830 includes receiving a trick play feature request, such as a video rewind request, from a user of the client device. Next operations 835-850 are performed in response to the trick play request received at 830.
[0098] 835 includes sending, to the network services over the communication network, a trick play playlist request (e.g., a GetTrickPlayPlayist message) for appropriate trick play files from the trick play stream corresponding to the selected stream. The request includes a trick play time (corresponding to a time when the user selected the trick play feature), a trick play encoding level as indicated in the Profile message received earlier by the client device at 802 (e.g., level L3), and a trick play direction (e.g., rewind or fast forward). [0099] 840 includes receiving, from the network services over the communication network, a trick play playlist (e.g., a Playlist message) identifying files from the trick play stream that meet the file selection criteria, i.e., that are associated with successive time codes (i) less than the trick play time if the direction is rewind, and (ii) greater than the trick play time if the direction is fast forward.
[00100] 845 includes downloading the trick play files identified in the playlist from 840, e.g., from URLs listed in the playlist.
[00101] 850 includes playing back video from the downloaded files in either the rewind direction, i.e., in an order of decreasing time codes, or in the forward direction, as appropriate. This includes playing back video only from key frames at a trick play video frame rate, such as 5 fps, which is reduced relative to the normal frame rate.
6 Systems
[00102] FIG. 9A is a block diagram of a computer system 900 configured to support/perform streaming and trick play features as described herein.
[00103] Computer system 900 includes one or more computer instruction processing units and/or processor cores, illustrated here as processor 902, to execute computer readable instructions, also referred to herein as computer program logic.
[00104] Computer system 900 may include memory, cache, registers, and/or storage, illustrated here as memory 904, which may include a non-transitory computer readable medium encoded with computer programs, illustrated here as computer program 906.
[00105] Memory 904 may include data 908 to be used by processor 902 in executing computer program 906, and/or generated by processor 902 during execution of computer program 906. Data 908 may include container files 908a from adaptive bitrate streams and trick play streams, and message definitions 908b for GetPlaylist, Playlist, and Profile messages, such as used in the methods described herein.
[00106] Computer program 906 may include: [00107] Client application instructions 910 to cause processor 902 to perform client device functions as described herein. Instructions 910 include:
[00108] GUI instructions 912 to implement a GUI through which a user may select to stream a program and select trick play features;
[00109] streaming and playback instructions 914 to download, decode, and playback streamed video content;
[00110] trick play instructions 916 to implement trick play features; and
[00111] message protocol instructions 918 to implement client side message exchange protocols/sequences (sending and receiving of messages) as described in one or more examples above.
[00112] Instructions 910-918 cause processor 902 to perform functions such as described in one or more examples above.
[00113] FIG. 9B is a block diagram of network/server-side application instructions 960 which may execute in a processing environment similar to that of computer system 900, and which may be hosted in encoder 1 10, RTS 1 14, and/or CDN 1 12, as appropriate.
[00114] Network/server-side application instructions 960 cause a processor to perform network-side (network services) functions as described herein. Instructions 960 have access to adaptive bitrate streams, trick play streams, indexes identifying the streams, and message definitions as described in one or more example above. Instructions 960 include:
[00115] encoder instructions 962 to encode multimedia content into adaptive bitrate streams and trick play streams, as described in one or more example above; and
[00116] message protocol instructions 964, including RTS instructions, to implement network side message exchange protocols/sequences (sending and receiving of messages) in support of adaptive bitrate streaming and trick play streaming, e.g., between RTS 1 14, client device 104, encoder 1 10, and CDN 1 12, as described in one or more examples above. For example, instructions 964 include instructions to create and send Profile and Playlist messages, and to respond to GetPlaylist messages. [00117] Methods and systems disclosed herein may be implemented with respect to one or more of a variety of systems including one or more consumer systems, such as described below with reference to FIGs. 10 and 1 1 . Methods and systems disclosed herein are not, however, limited to the examples of FIGs. 10 and 1 1 .
[00118] FIG. 10 is a block diagram of an example computer system 1000 corresponding to any of network services 102, including encoder 1 10, CDN 1 12, and RTS 1 14. Computer system 1000, which may be, e.g., a server, includes one or more processors 1005, a memory 1010 in which instruction sets and databases for computer program applications are stored, a mass storage 1020 for storing, e.g., encoded programs, and an input/output (I/O) module 1015 through which components of computer system 1 100 may communicate with communication network 106.
[00119] FIG. 1 1 is a block diagram of an example system 1 100 representing, e.g., client device 104, and may be implemented, and configured to operate, as described in one or more examples herein.
[00120] System 1 100 or portions thereof may be implemented within one or more integrated circuit dies, and may be implemented as a system-on-a-chip (SoC).
[00121] System 1 100 may include one or more processors 1 104 to execute client- side application programs stored in memory 1 105.
[00122] System 1 100 may include a communication system 1 106 to interface between processors 1 104 and communication networks, such as networks 106. Communication system 1 106 may include a wired and/or wireless communication system.
[00123] System 1 100 may include a stream processor 1 107 to process program (i.e., content) streams, received over communication channel 1 108 and through communication system 1 106, for presentation at system 1 100. Stream processor 1 107 includes a buffer 1 107a to buffer portions of received, streamed programs, and a decoder 1 107b to decode and decrypt the buffered programs in accordance with encoding and encryption standards, and using decryption keys. In an alternative embodiment, decoder 1 107b may be integrated with a display and graphics platform of system 1 100. Stream processor 1 107 together with processors 1 104 and memory 1 105 represent a controller of system 1 100. This controller includes modules to perform the functions of one or more examples described herein, such as a streaming module to stream programs through communication system 1 106.
[00124] System 1 100 may include a user interface system 1 1 10.
[00125] User interface system 1 1 10 may include a monitor or display 1 132 to display information from processor 1 104, such as a client-side GUI.
[00126] User interface system 1 1 10 may include a human interface device (HID) 1 134 to provide user input to processor 1 104. HID 1 134 may include, for example and without limitation, one or more of a key board, a cursor device, a touch-sensitive device, and or a motion and/or image sensor. HID 1 134 may include a physical device and/or a virtual device, such as a monitor-displayed or virtual keyboard.
[00127] User interface system 1 1 10 may include an audio system 1 136 to receive and/or output audible sound.
[00128] System 1 100 may correspond to, for example, a computer system, a personal communication device, and/or a television set-top box.
[00129] System 1 100 may include a housing, and one or more of communication system 1 106, processors 1 104, memory 1 105, user interface system 1 1 10, or portions thereof may be positioned within the housing. The housing may include, without limitation, a rack-mountable housing, a desk-top housing, a lap-top housing, a notebook housing, a net-book housing, a set-top box housing, a portable housing, and/or other conventional electronic housing and/or future-developed housing. For example, communication system 1 102 may be implemented to receive a digital television broadcast signal, and system 1 100 may include a set-top box housing or a portable housing, such as a mobile telephone housing.
[00130] Methods and systems disclosed herein may be implemented in circuitry and/or a machine, such as a computer system, and combinations thereof, including discrete and integrated circuitry, application specific integrated circuitry (ASIC), a processor and memory, and/or a computer-readable medium encoded with instructions executable by a processor, and may be implemented as part of a domain-specific integrated circuit package, a system-on-a-chip (SOC), and/or a combination of integrated circuit packages.
[00131] Methods and systems are disclosed herein with the aid of functional building blocks illustrating functions, features, and relationships thereof. At least some of the boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed. While various embodiments are disclosed herein, it should be understood that they are presented as examples. The scope of the claims should not be limited by any of the example embodiments disclosed herein.

Claims

WHAT IS CLAIMED IS:
1 . A method of supporting video streaming with trick play, comprising:
encoding video into multiple adaptive bitrate streams and a corresponding trick play stream, each of the streams comprising files of encoded video;
storing the files for each stream;
receiving a playlist request for a selected one of the adaptive bitrate streams;
sending a playlist identifying the stored files of the selected stream;
receiving a playlist request for the trick play stream; and
sending a playlist identifying the stored files of the trick play stream.
2. The method of claim 1 , wherein:
the encoded video in the files corresponding to the adaptive bitrate streams comprises encoded video frames, including
non-key frames each encoded based on video from one or more previous video frames, and
key frames interspersed among the non-key frames, each of the key frames encoded independent of previous video frames; and
the encoded video in the files for the trick play stream comprises key frames without non-key frames.
3. The method of claim 1 , wherein:
the files in each stream are associated with successive time codes;
the playlist request for the selected stream specifies a current time code; and
the playlist for the selected stream identifies files in the selected stream that are associated with successive time codes greater than the current time code.
4. The method of claim 3, wherein:
the playlist request for the trick play stream includes a trick play time code that is greater than the current time code; and the trick play playlist identifies files in the trick play stream associated with successively decreasing time codes that are each less than the trick play time code.
5. The method of claim 1 , wherein:
the encoding includes encoding the video based on a distinct combination of an encoding bitrate and a video frame rate for each stream; and
the encoding bit rate and video frame rate for the trick play stream are less than the encoding bitrates and video frame rates, respectively, for the adaptive bitrate streams.
6. The method of claim 1 , wherein:
the storing includes storing the files at corresponding network addresses; the playlist identifying the stored files of the selected stream includes a list of the network addresses of the stored files therein; and
the playlist identifying the stored files of the trick play stream includes a list of the network addresses of the stored files therein.
7. A system for supporting video streaming with trick play, comprising:
an encoder to encode video into multiple adaptive bitrate streams and a corresponding trick play stream, each of the streams comprising files of encoded video;
a download server to store the files for each stream; and
a management server to:
receive a playlist request for a selected one of the adaptive bitrate streams;
send a playlist identifying the stored files of the selected stream; receive a playlist request for the trick play stream; and
send a playlist identifying the stored files of the trick play stream.
8. The system of claim 7, wherein:
the encoded video in the files corresponding to the adaptive bitrate streams comprises encoded video frames, including
non-key frames each encoded based on video from one or more previous video frames, and
key frames interspersed among the non-key frames, each of the key frames encoded independent of previous video frames; and
the encoded video in the files for the trick play stream comprises key frames without non-key frames.
9. The system of claim 7, wherein:
the files in each stream are associated with successive time codes;
the playlist request for the selected stream specifies a current time code; and
the playlist for the selected stream identifies files in the selected stream that are associated with successive time codes greater than the current time code.
10. The system of claim 9, wherein:
the playlist request for the trick play stream includes a trick play time code that is greater than the current time code; and
the trick play playlist identifies files in the trick play stream associated with successively decreasing time codes that are each less than the trick play time code.
1 1 . The system of claim 7, wherein:
the encoder is further configured to encode the video based on a distinct combination of an encoding bitrate and a video frame rate for each stream; and
the encoding bit rate and video frame rate for the trick play stream are less than the encoding bitrates and video frame rates, respectively, for the adaptive bitrate streams.
12. The system of claim 7, wherein:
the download server is configured to store the files at corresponding network addresses;
the playlist identifying the stored files of the selected stream includes a list of the network addresses of the stored files therein; and
the playlist identifying the stored files of the trick play stream includes a list of the network addresses of the stored files therein.
13. A non-transitory computer readable medium encoded with a computer program including instructions to cause a processor to:
encode video into multiple adaptive bitrate streams and a corresponding trick play stream, each of the streams comprising files of encoded video;
store the files for each stream;
receive a playlist request for a selected one of the adaptive bitrate streams;
send a playlist identifying the stored files of the selected stream;
receive a playlist request for the trick play stream; and
send a playlist identifying the stored files of the trick play stream.
14. The computer readable medium of claim 13, wherein:
the encoded video in the files corresponding to the adaptive bitrate streams comprises encoded video frames, including
non-key frames each encoded based on video from one or more previous video frames, and
key frames interspersed among the non-key frames, each of the key frames encoded independent of previous video frames; and
the encoded video in the files for the trick play stream comprises key frames without non-key frames.
15. The computer readable medium of claim 13, wherein:
the files in each stream are associated with successive time codes;
the playlist request for the selected stream specifies a current time code; and
the playlist for the selected stream identifies files in the selected stream that are associated with successive time codes greater than the current time code.
16. The computer readable medium of claim 15, wherein:
the playlist request for the trick play stream includes a trick play time code that is greater than the current time code; and
the trick play playlist identifies files in the trick play stream associated with successively decreasing time codes that are each less than the trick play time code.
17. The computer readable medium of claim 13, wherein:
the instruction to cause the processor to encode include instructions to cause the processor to encode the video based on a distinct combination of an encoding bitrate and a video frame rate for each stream; and
the encoding bit rate and video frame rate for the trick play stream are less than the encoding bitrates and video frame rates, respectively, for the adaptive bitrate streams.
18. The computer readable medium of claim 13, wherein:
the instruction to cause the processor to store include instructions to cause the processor to store the files at corresponding network addresses;
the playlist identifying the stored files of the selected stream includes a list of the network addresses of the stored files therein; and
the playlist identifying the stored files of the trick play stream includes a list of the network addresses of the stored files therein.
19. A method of video playback with trick play, comprising:
downloading files of encoded video from a selected stream of encoded video;
playing back video from the downloaded selected stream files; and receiving a trick play request, and in response thereto:
sending a trick play playlist request corresponding to the selected stream;
receiving a trick play playlist identifying files of encoded video from a trick play stream of encoded video corresponding to the selected stream;
downloading the trick play files based on the playlist; and
playing back video from the downloaded trick play files.
20. The method of claim 19, wherein:
the encoded video in the downloaded selected stream files comprises encoded video frames, including
non-key frames each encoded based on video from one or more previous video frames, and
key frames interspersed among the non-key frames, each of the key frames encoded independent of previous video frames; and
the encoded video in the downloaded trick play files comprises encoded video frames, including key frames without non-key frames.
21 . The method of claim 20, wherein:
the playing back video from the downloaded selected stream files includes playing back video from the non-key frames and the key frames at a normal video frame rate; and
the playing back video from the downloaded trick play files includes playing back video from the key frames at a trick play video frame rate that is less than the normal frame rate.
22. The method of claim 21 , wherein the playing back video at the trick play video frame rate includes, selectively:
playing back all of the video from each trick play file to achieve a normal trick play playback rate; and
playing back a subset of the video in each trick play file to achieve an accelerated trick play playback rate.
23. The method of claim 19, wherein:
the downloaded selected stream files are associated with successive time codes;
the playing back video from the downloaded selected stream files includes playing back the video in a forward direction of increasing time codes;
the downloaded trick play files are associated with successive time codes; and
the playing back video from the downloaded trick play files includes playing back the video in a rewind direction of decreasing time codes.
24. The method of claim 19, further comprising, prior to downloading of the selected stream files:
sending a playlist request for selected stream files associated with time codes greater than a current time specified in the playlist request; and
receiving a playlist listing network addresses where the selected stream files associated with successive time codes greater than the current time are stored, wherein
the downloading includes downloading the selected stream files from the network addresses, and
the playing back video from the downloaded selected stream files includes playing back video from the downloaded selected stream files in an order of increasing time codes.
25. The method of claim 19, wherein:
the trick play playlist request is a request for trick play files associated with time codes less than a trick play time when the trick play request was received;
the trick play playlist lists network addresses of the trick play files associated with time codes less than the trick play time;
the downloading the trick play files include downloading the trick play files from their network addresses; and
the playing back video from the downloaded trick play files includes playing back video in an order of decreasing time codes.
26. An apparatus for video playback with trick play, comprising:
a processor system configured to:
download files of encoded video from a selected stream of encoded video;
playback video from the downloaded selected stream files; and receive a trick play request, and in response thereto:
send a trick play playlist request corresponding to the selected stream;
receive a trick play playlist identifying files of encoded video from a trick play stream of encoded video corresponding to the selected stream;
download the trick play files based on the playlist; and
playback video from the downloaded trick play files.
27. The apparatus of claim 26, wherein:
the encoded video in the downloaded selected stream files comprises encoded video frames, including
non-key frames each encoded based on video from one or more previous video frames, and
key frames interspersed among the non-key frames, each of the key frames encoded independent of previous video frames; and the encoded video in the downloaded trick play files comprises encoded video frames, including key frames without non-key frames.
28. The apparatus of claim 27, wherein:
the processor system configured to playback video from the downloaded selected stream files is further configured to playback video from the non-key frames and the key frames at a normal video frame rate; and
the processor system configured to playback video from the downloaded trick play files is further configured to playback video from the key frames at a trick play video frame rate that is less than the normal frame rate.
29. The apparatus of claim 28, wherein the processor system configured to playback video at the trick play video frame rate is further configured to, selectively:
playback all of the video from each trick play file to achieve a normal trick play playback rate; and
playback a subset of the video in each trick play file to achieve an accelerated trick play playback rate.
30. The apparatus of claim 26, wherein:
the downloaded selected stream files are associated with successive time codes;
the processor system configured to playback video from the downloaded selected stream files is further configured to playback the video in a forward direction of increasing time codes;
the downloaded trick play files are associated with successive time codes; and
the processor system configured to playback video from the downloaded trick play files is further configured to playback the video in a rewind direction of decreasing time codes.
31 . The apparatus of claim 26, wherein the processor system is further configured to, prior to downloading of the selected stream files:
send a playlist request for selected stream files associated with time codes greater than a current time specified in the playlist request; and
receive a playlist listing network addresses where the selected stream files associated with successive time codes greater than the current time are stored, wherein the processor system configured to download is further configured to download the selected stream files from the network addresses, and
the processor system configured to playback video from the downloaded selected stream files is further configured to playback video from the downloaded selected stream files in an order of increasing time codes.
32. The apparatus of claim 26, wherein:
the trick play playlist request is a request for trick play files associated with time codes less than a trick play time when the trick play request was received;
the trick play playlist lists network addresses of the trick play files associated with time codes less than the trick play time;
the processor system configured to download the trick play files is further configured to download the trick play files from their network addresses; and
the processor system configured to playback video from the downloaded trick play files is further configured to playback video in an order of decreasing time codes.
33. The apparatus of claim 26, further comprising:
a communication system to communicate with a communication network; a user interface system; and
a housing to house the processor system, the communication system, and the user the interface system.
34. The apparatus of claim 33, wherein:
the communication system includes a wireless communication system; and
the housing includes a mobile hand-held housing to house the processor system, the communication system, the user interface system, and a battery.
35. A non-transitory computer readable medium encoded with a computer program including instructions to cause a processor to:
download files of encoded video from a selected stream of encoded video; playback video from the downloaded selected stream files; and receive a trick play request, and in response thereto:
send a trick play playlist request corresponding to the selected stream;
receive a trick play playlist identifying files of encoded video from a trick play stream of encoded video corresponding to the selected stream;
download the trick play files based on the playlist; and
playback video from the downloaded trick play files.
36. The computer readable medium of claim 35, wherein:
the encoded video in the downloaded selected stream files comprises encoded video frames, including
non-key frames each encoded based on video from one or more previous video frames, and
key frames interspersed among the non-key frames, each of the key frames encoded independent of previous video frames; and
the encoded video in the downloaded trick play files comprises encoded video frames, including key frames without non-key frames.
37. The computer readable medium of claim 36, wherein:
the instruction to cause the processor to playback video from the downloaded selected stream files include instructions to cause the processor to playback video from the non-key frames and the key frames at a normal video frame rate; and
the instruction to cause the processor to playback video from the downloaded trick play files include instructions to cause the processor to playback video from the key frames at a trick play video frame rate that is less than the normal frame rate.
38. The computer readable medium of claim 37, wherein the instructions to cause the processor to playback video at the trick play video frame rate include instructions to cause the processor to, selectively:
playback all of the video from each trick play file to achieve a normal trick play playback rate; and
playback a subset of the video in each trick play file to achieve an accelerated trick play playback rate.
39. The computer readable medium of claim 35, wherein:
the downloaded selected stream files are associated with successive time codes;
the instructions to cause the processor to playback video from the downloaded selected stream files include instructions to cause the processor to playback the video in a forward direction of increasing time codes;
the downloaded trick play files are associated with successive time codes; and
the instructions to cause the processor to playback video from the downloaded trick play files include instructions to cause the processor to playback the video in a rewind direction of decreasing time codes.
40. The computer readable medium of claim 35, wherein the instructions include further instructions to cause the processor to, prior to downloading of the selected stream files:
send a playlist request for selected stream files associated with time codes greater than a current time specified in the playlist request; and
receive a playlist listing network addresses where the selected stream files associated with successive time codes greater than the current time are stored, wherein the instruction to cause the processor download include instructions to cause the processor to download the selected stream files from the network addresses, and
the instructions to cause the processor to playback video from the downloaded selected stream files include instructions to cause the processor to playback video from the downloaded selected stream files in an order of increasing time codes.
41 . The computer readable medium of claim 35, wherein:
the trick play playlist request is a request for trick play files associated with time codes less than a trick play time when the trick play request was received;
the trick play playlist lists network addresses of the trick play files associated with time codes less than the trick play time;
the instructions to cause the processor to download the trick play files include instructions to cause the processor to download the trick play files from their network addresses; and
the instructions to cause the processor to playback video from the downloaded trick play files include instructions to cause the processor to play back video in an order of decreasing time codes.
PCT/US2014/039852 2013-05-30 2014-05-28 Network video streaming with trick play based on separate trick play files WO2014193996A2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/905,867 2013-05-30
US13/905,867 US20140359678A1 (en) 2013-05-30 2013-05-30 Device video streaming with trick play based on separate trick play files
US13/905,852 US9094737B2 (en) 2013-05-30 2013-05-30 Network video streaming with trick play based on separate trick play files
US13/905,852 2013-05-30

Publications (2)

Publication Number Publication Date
WO2014193996A2 true WO2014193996A2 (en) 2014-12-04
WO2014193996A3 WO2014193996A3 (en) 2015-02-19

Family

ID=51989522

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/039852 WO2014193996A2 (en) 2013-05-30 2014-05-28 Network video streaming with trick play based on separate trick play files

Country Status (1)

Country Link
WO (1) WO2014193996A2 (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9621522B2 (en) 2011-09-01 2017-04-11 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
US9712890B2 (en) 2013-05-30 2017-07-18 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US9866878B2 (en) 2014-04-05 2018-01-09 Sonic Ip, Inc. Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US9883204B2 (en) 2011-01-05 2018-01-30 Sonic Ip, Inc. Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
US9967305B2 (en) 2013-06-28 2018-05-08 Divx, Llc Systems, methods, and media for streaming media content
US10212486B2 (en) 2009-12-04 2019-02-19 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
US10225299B2 (en) 2012-12-31 2019-03-05 Divx, Llc Systems, methods, and media for controlling delivery of content
US10264255B2 (en) 2013-03-15 2019-04-16 Divx, Llc Systems, methods, and media for transcoding video data
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US10437896B2 (en) 2009-01-07 2019-10-08 Divx, Llc Singular, collective, and automated creation of a media guide for online content
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
US10687095B2 (en) 2011-09-01 2020-06-16 Divx, Llc Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US10878065B2 (en) 2006-03-14 2020-12-29 Divx, Llc Federated digital rights management scheme including trusted systems
USRE48761E1 (en) 2012-12-31 2021-09-28 Divx, Llc Use of objective quality measures of streamed content to reduce streaming bandwidth
US11457054B2 (en) 2011-08-30 2022-09-27 Divx, Llc Selection of resolutions for seamless resolution switching of multimedia content
CN116781951A (en) * 2023-08-24 2023-09-19 湖南快乐阳光互动娱乐传媒有限公司 Definition adjusting method, device and server

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914534B2 (en) * 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
US8451905B1 (en) * 2011-02-25 2013-05-28 Adobe Systems Incorporated Efficient encoding of video frames in a distributed video coding environment
US8856283B2 (en) * 2011-06-03 2014-10-07 Apple Inc. Playlists for real-time or near real-time streaming
US8925021B2 (en) * 2011-07-11 2014-12-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for trick play in over-the-top video delivery

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886545B2 (en) 2006-03-14 2024-01-30 Divx, Llc Federated digital rights management scheme including trusted systems
US10878065B2 (en) 2006-03-14 2020-12-29 Divx, Llc Federated digital rights management scheme including trusted systems
US10437896B2 (en) 2009-01-07 2019-10-08 Divx, Llc Singular, collective, and automated creation of a media guide for online content
US10212486B2 (en) 2009-12-04 2019-02-19 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
US11102553B2 (en) 2009-12-04 2021-08-24 Divx, Llc Systems and methods for secure playback of encrypted elementary bitstreams
US10484749B2 (en) 2009-12-04 2019-11-19 Divx, Llc Systems and methods for secure playback of encrypted elementary bitstreams
US10368096B2 (en) 2011-01-05 2019-07-30 Divx, Llc Adaptive streaming systems and methods for performing trick play
US11638033B2 (en) 2011-01-05 2023-04-25 Divx, Llc Systems and methods for performing adaptive bitrate streaming
US9883204B2 (en) 2011-01-05 2018-01-30 Sonic Ip, Inc. Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
US10382785B2 (en) 2011-01-05 2019-08-13 Divx, Llc Systems and methods of encoding trick play streams for use in adaptive streaming
US11457054B2 (en) 2011-08-30 2022-09-27 Divx, Llc Selection of resolutions for seamless resolution switching of multimedia content
US10244272B2 (en) 2011-09-01 2019-03-26 Divx, Llc Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
US10687095B2 (en) 2011-09-01 2020-06-16 Divx, Llc Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US11683542B2 (en) 2011-09-01 2023-06-20 Divx, Llc Systems and methods for distributing content using a common set of encryption keys
US10341698B2 (en) 2011-09-01 2019-07-02 Divx, Llc Systems and methods for distributing content using a common set of encryption keys
US11178435B2 (en) 2011-09-01 2021-11-16 Divx, Llc Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US10225588B2 (en) 2011-09-01 2019-03-05 Divx, Llc Playback devices and methods for playing back alternative streams of content protected using a common set of cryptographic keys
US10856020B2 (en) 2011-09-01 2020-12-01 Divx, Llc Systems and methods for distributing content using a common set of encryption keys
US9621522B2 (en) 2011-09-01 2017-04-11 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
USRE49990E1 (en) 2012-12-31 2024-05-28 Divx, Llc Use of objective quality measures of streamed content to reduce streaming bandwidth
USRE48761E1 (en) 2012-12-31 2021-09-28 Divx, Llc Use of objective quality measures of streamed content to reduce streaming bandwidth
US10805368B2 (en) 2012-12-31 2020-10-13 Divx, Llc Systems, methods, and media for controlling delivery of content
US11785066B2 (en) 2012-12-31 2023-10-10 Divx, Llc Systems, methods, and media for controlling delivery of content
US10225299B2 (en) 2012-12-31 2019-03-05 Divx, Llc Systems, methods, and media for controlling delivery of content
US11438394B2 (en) 2012-12-31 2022-09-06 Divx, Llc Systems, methods, and media for controlling delivery of content
US10264255B2 (en) 2013-03-15 2019-04-16 Divx, Llc Systems, methods, and media for transcoding video data
US10715806B2 (en) 2013-03-15 2020-07-14 Divx, Llc Systems, methods, and media for transcoding video data
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US11849112B2 (en) 2013-03-15 2023-12-19 Divx, Llc Systems, methods, and media for distributed transcoding video data
US10462537B2 (en) 2013-05-30 2019-10-29 Divx, Llc Network video streaming with trick play based on separate trick play files
US9712890B2 (en) 2013-05-30 2017-07-18 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US9967305B2 (en) 2013-06-28 2018-05-08 Divx, Llc Systems, methods, and media for streaming media content
US9866878B2 (en) 2014-04-05 2018-01-09 Sonic Ip, Inc. Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US10321168B2 (en) 2014-04-05 2019-06-11 Divx, Llc Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US11711552B2 (en) 2014-04-05 2023-07-25 Divx, Llc Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
US11343300B2 (en) 2017-02-17 2022-05-24 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
CN116781951B (en) * 2023-08-24 2023-12-05 湖南快乐阳光互动娱乐传媒有限公司 Definition adjusting method, device and server
CN116781951A (en) * 2023-08-24 2023-09-19 湖南快乐阳光互动娱乐传媒有限公司 Definition adjusting method, device and server

Also Published As

Publication number Publication date
WO2014193996A3 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
US11470405B2 (en) Network video streaming with trick play based on separate trick play files
US9247317B2 (en) Content streaming with client device trick play index
US20140359678A1 (en) Device video streaming with trick play based on separate trick play files
WO2014193996A2 (en) Network video streaming with trick play based on separate trick play files
US20140297804A1 (en) Control of multimedia content streaming through client-server interactions
RU2652099C2 (en) Transmission device, transmission method, reception device and reception method
KR102190364B1 (en) System and method for encoding video content
Sodagar The mpeg-dash standard for multimedia streaming over the internet
US9351020B2 (en) On the fly transcoding of video on demand content for adaptive streaming
EP2577486B1 (en) Method and apparatus for adaptive streaming based on plurality of elements for determining quality of content
US9462024B2 (en) System and method of media content streaming with a multiplexed representation
US20180063590A1 (en) Systems and Methods for Encoding and Playing Back 360° View Video Content
CN107634930B (en) Method and device for acquiring media data
EP2754301A1 (en) Streaming of multimedia data from multiple sources
US11647252B2 (en) Identification of elements in a group for dynamic element replacement
CN106789976A (en) The player method of media file, service end, client and system
KR102137858B1 (en) Transmission device, transmission method, reception device, reception method, and program
US12015805B2 (en) Method, an apparatus and a computer program product for video streaming
KR101690153B1 (en) Live streaming system using http-based non-buffering video transmission method
KR101568317B1 (en) System for supporting hls protocol in ip cameras and the method thereof
Sodagar et al. Reinventing multimedia delivery with MPEG-DASH
US20230107615A1 (en) Dynamic creation of low latency video streams in a live event
Sodagar Industry and standards
WO2015064384A1 (en) Transmission apparatus, transmission method, reception apparatus, and reception method
Bechqito High Definition Video Streaming Using H. 264 Video Compression

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14804692

Country of ref document: EP

Kind code of ref document: A2

WWE Wipo information: entry into national phase

Ref document number: 2014804692

Country of ref document: EP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14804692

Country of ref document: EP

Kind code of ref document: A2