Video player with assisted seek

A computer-implemented method provides a user interface for users to navigate through a video content item with various navigation options including the ability to navigate through portions of the video content item not buffered at the user's viewer. The navigation method receives gestures from users that result in navigation.

BACKGROUND

1. Field of the Invention

The present invention relates generally to web-based video display and specifically to an improved method for navigation within video content.

2. Description of the Related Art

Various web sites exist that provide hosted video content to viewers. One such site is the YOUTUBE™ site, provided by Google Inc. of Mountain View, Calif. Typically, videos are supplied to the video hosting website by content providers, and are then made available for viewing by the public at large.

Conventionally, when a video is provided for online viewing, instead of requiring the client device to obtain the entire video before beginning to play the video, the video starts to play after a pre-determined amount of the video has been received by the client device. As the video plays, additional content is provided and buffered locally. Consequently, if a user chooses to fast forward through a portion of the video, images are only available for the portion of the video that is buffered locally at the client device. Beyond that point, the users are fast forwarding blindly, not knowing where they are in the video unless they happen to know the precise time stamp of where they want to go. Some users fast forward to get past a portion that is not of interest, although the users do not know how long that portion will last.

Additionally, navigating forward or backward through a video often requires clicking on a relatively small icon in the user interface. A small icon can be difficult to click on accurately and as video resolution improves, icons can be made even smaller and thus even more difficult to click on. More televisions are internet enabled and thus users will be farther away from the display device on which they are viewing video content and this adds to the difficulty of accurately clicking on a small icon.

SUMMARY

Embodiments of the present invention provide methods for navigation through video content. A video is played to a user with a set of thumbnails associated with time points before and after the time point in the video currently being displayed. The thumbnails update as the video plays. To move fast forward or rewind through the video, the user interacts with the user interface by making a gesture. The magnitude and direction of the gesture correspond to the speed and direction, respectively, of the desired video playback. Even if a user fast-forwards past the portion of the video file buffered locally, the thumbnails are available and provide guideposts to the user as the user navigates through the content.

DETAILED DESCRIPTION

Introduction

A user requests a webpage with an embedded multimedia file using a browser and the browser receives a container file as part of the webpage. The container file is internally linked to the multimedia server and causes the browser to download the multimedia file to the browser. The multimedia content being downloaded is displayed on the multimedia player within the webpage as the content becomes available. The user navigates through the video, moving backwards or forwards at a plurality of speeds with the assistance of thumbnails that act as guideposts to the video.

Architecture

FIG. 1is a block diagram of the overall architecture of one embodiment. The video hosting site100communicates, usually via the network interface102, with a client125via the network150. The network150is typically the Internet, but may also be any network, including but not limited to a LAN, a MAN, a WAN, a mobile, wired or wireless network, a private network, or a virtual private network, or any combination thereof. For simplicity only one client125is shown. In practice a very large numbers (e.g., millions) of clients125, or as many as can be supported by the hardware and software implementation, can be in communication with the video hosting site100at any time. Other conventional features, such as firewalls, load balancers, authentication servers, application servers, failover servers, site management tools, and so forth are not shown so as to more clearly illustrate the features of the video hosting site100. An example of a suitable video hosting site100is the YOUTUBE™ website, found at www.youtube.com. Other video hosting sites are known as well, and can be adapted to operate according to the teachings disclosed herein. The illustrated components of the video hosting site100can be implemented as single pieces of software or hardware or as multiple pieces of software or hardware. In general, functions described in one embodiment as being performed by one component, can also be performed by other components in other embodiments, or by a combination of components. Furthermore, functions described in one embodiment as being performed by components of the video hosting site100can also be performed by one or more clients125in other embodiments if appropriate.

In addition to the network interface102, the video hosting site100comprises a front end server103, video server105, video database110and thumbnail module115. The front end server103receives the users' requests for a video file and forwards the request for the video file to the video server105. The front end server103may be, for example, a web server providing web content including a user interface to client125.

The video server105retrieves the video file and associated thumbnails from the video database110and transmits the data to the client125. The video server105also receives uploaded videos from content providers. Content may be uploaded to video server105via the Internet from a personal computer, through a cellular network from a telephone or PDA, or by other means for transferring data over network150known to those of ordinary skill in the art. Content may be transmitted or downloaded from video server105in a similar manner. In one embodiment a video is transmitted as a file download to a client125, and in an alternative embodiment, the video is streamed to client125. The means by which the video is received by video server105need not match the means by which it is delivered to client125. For example, a content provider may upload a video file via a browser on a personal computer, whereas client125may receive that content as a data stream.

The video database110is used to store uploaded videos. Video database110stores video content and associated metadata provided by source of the video content, by the operator of video hosting site100, or by third parties. The videos have metadata associated with each file to describe characteristics of the video file or its content. For example, metadata stored may include a video ID, an ID of the user who provided the video, artist, video title, label, genre, time length, and geo-restrictions that can be used for data collection or content blocking on a geographic basis. Additionally, thumbnails generated by the thumbnail module115from a video are stored in the video database110.

The thumbnail module115creates thumbnails for videos in the video database110. In one embodiment thumbnails are still images of the video at predetermined time points. For example, a thumbnail is created at every one second mark in the video, every half second mark, or every two second mark. More frequent or less frequent thumbnails are possible as well. In one embodiment, thumbnails are created whenever there is a scene change in the video. Such points in the video can be determined manually or by a scene-detection algorithm. In an alternate embodiment, a thumbnail is a slice of video content of predetermined length. The thumbnail module115takes slices of video content at predetermined intervals or at scene changes. In yet another embodiment, thumbnails can include both still images and video content. For example, scene changes could have video content as the thumbnail while other thumbnails for the video are still images.

Each of the various servers described inFIG. 1is implemented as a server program executing on server-class computer comprising a CPU, memory, network interface, peripheral interfaces, and other well-known components. The computers themselves in various embodiments run an operating system such as LINUX, Microsoft Windows, or Apple OS X, have generally high performance CPUs, 1 GB or more of memory, and 100 GB or more of disk storage. Of course, other types of computers can be used, and as more powerful computers are developed in the future, they can be configured in accordance with the teachings here. The functionality implemented by any of the elements can be provided from computer program products that are stored in tangible computer accessible storage mediums (e.g., RAM, hard disk, or optical/magnetic media) and accessed by the computer(s). Generally, functions described in one embodiment as being performed on the server side can also be performed on the client side in other embodiments if appropriate. Additionally, the functionality attributed to a particular component can be performed by different or multiple components operating together.

The client125is any device capable of accessing the network. Examples include, but are not limited to, general purpose computers, handheld mobile devices, gaming consoles, internet-enabled televisions and cable or satellite set top boxes. The client125includes a browser127with an embedded player130. The client125views videos from video hosting site100using software suited for that purpose. Typically that software is the browser127such as Microsoft Internet Explorer, Mozilla Firefox, Apple Safari, etc. Alternatively, client-specific or site-specific software may be used. The embedded player130may be a video player (e.g., Flash™ from Adobe Systems, Inc.), or any other player adapted for the video file formats used in the video hosting site100. The embedded player130may be supplied by the video hosting site's100website or by a third-party website. The client125further includes a means for accepting input from a user. That means includes, but is not limited to, a pointing device such as a mouse, a keyboard or a touch-screen. In some embodiments, the browser127is displayed to the user on the touch-screen. In another embodiment, the input from the user is input to a remote control which relays the input to the client125.

A user can access a set of videos directly from the video hosting site100by visiting the video hosting site100and browsing a catalog of videos, conducting searches on keywords, reviewing play lists from other users or the system administrator (e.g., collections of videos forming channels), viewing videos associated with particular user group (e.g., communities), or by directly accessing the video resource, e.g., via a URL.

FIG. 2illustrates an embedded player130capable of communicating with a content hosting server and displaying the requested content and corresponding graphical user interface according to one embodiment of the invention. The embedded player130comprises a controller202, video decoder204, audio decoder206, and player graphic user interface (GUI) module208.

The controller202implements the state machine of embedded player130and directs the video decoder204, audio decoder206and player GUI module208to execute their respective tasks at appropriate times. The controller202also communicates with the video hosting site100to request and receive videos to be displayed on the embedded player130.

The video decoder204decodes encoded video files received from the video hosting site100. The video decoder204can support a variety of video compression standards like MPEG 1, MPEG 2, MPEG 4, etc. The video decoder204also provides thumbnails for display at the direction of the controller202.

The audio decoder206decodes encoded audio files received from the video hosting site100. The audio decoder206can support a variety of audio compression standards like GSM-AMR, AC3, MPEG-1, MPEG-2, MPEG-3, etc.

The player GUI module208determines and displays the graphical user interface for the embedded player130. Additionally, the player GUI module208receives gestures and conveys the user selections to appropriate modules. For example, when a user wants to pause, skip ahead or move backwards in a video file being played, the player GUI module208relays the user's selection to appropriate modules like video decoder204and audio decoder206.

FIGS. 3, 4 and 5illustrate how a user requests a video and navigates through the video, moving backwards or forwards at a plurality of speeds with the assistance of thumbnails that act as guideposts to the video. The system updates the display of the video in response to the user's input as to the direction and speed desired for the playback.FIG. 3is a data flow chart andFIGS. 4A-4G and 5A-5Bare illustrations of the user interface as displayed to the user.

A user at a client125selects a video to watch and that request is received305by the embedded player130. An identifier (“ID”) identifying the requested video is transmitted310to the video server105at the video hosting site100. The video server105requests315the video and associated thumbnails from the video database110which returns320the video and associated thumbnails. The video server105in turn provides325the video and associated thumbnails to the embedded player130at the client125. In one embodiment, the video server105provides the entire video file to the embedded player130. Alternatively, the video file is streamed to the embedded player130. In an embodiment where the video file is streamed to the embedded player130, an initial portion of the video file is provided to the embedded player130to be loaded into the buffer to start playing. As the video starts to play, additional portions of the video file are provided to the buffer. In a preferred embodiment, the video file is streamed to the embedded player130and substantially all of the associated thumbnails are provided to the embedded player130when the video stream is started.

The video is displayed327at the client125in the embedded player130. Referring toFIG. 4a, the embedded player130comprises a viewing window405and various controls. Example controls include a play/pause button410, a volume control button415, a viewing progress bar420, a time indicator425and a go-to-full-screen button430. Such controls are known in the art of embedded players and any known control buttons may be used with the embedded player130. A user interacts with the controls using means for accepting input at the client125. In one embodiment the user uses a mouse or keyboard to interact with the controls. Alternatively, the user's input is received via a remote control. In another embodiment, the embedded player130is displayed to the user on a touch screen and the user interacts with the controls by touching them directly on the touch screen.

The play/pause button410toggles between a play mode and pause mode of the video in the viewing window405. The volume control button415allows the user to control the audio volume of the video. In one embodiment, selecting the volume control button415causes a slider control to appear with which the user can increase or decrease the volume. Additionally, such a slider control may also include a button which mutes the audio for the video.

When selected, the go-to-full-screen button430causes the size of the viewing window to increase. In one embodiment, the viewing window becomes the size of the display at the client125.

The viewing progress bar420indicates how far along in the playback of the video the video is. That information is also presented digitally in the form of elapsed time in the time indicator425which shows where in time the video is in playback and the total time of the video. The viewing progress bar420further comprises a download progress bar435indicating the portion of the video that has been downloaded and is therefore available locally at the client.

Referring toFIG. 4B, upon a user mousing over the viewing window405as indicated by a pointer icon440, instructions445for how to navigate the video are displayed to the user. A single click in the viewing window405toggles the video between playing and pausing. If the user clicks and holds in the viewing window445, the user can navigate through the video by dragging to the left or the right to “fast forward” or “rewind” the video. In an alternative embodiment, instructions445are not displayed, or are controlled by a switch or other preference setting. For example, as users become more familiar with the navigation feature, instructions become less useful.

Referring toFIG. 4C, upon clicking and holding the mouse, a plurality of frames450displaying the thumbnails associated with the video are displayed to user. Additionally, playback of the video is paused by the controller202in the embedded player130. The images are arranged in chronological order with those images associated with places in the video prior to the current place in playback to the left of the plurality of frames450. Those images associated with places in the video coming after the current place in playback are to the right side of the plurality of frames450. The larger frame455is the image closest in time to the current spot in time of the video's playback. Alternatively, the larger frame455displays the image currently being displayed to the user in the viewing window405. Additionally, there are arrows460and465indicating that the video can be fast forwarded or rewound. Arrow460points to the right and towards the thumbnails that are the bookmarks for the video after the current place in playback. Arrow465points to the left and towards the thumbnails that are the bookmarks for the video prior to the current place in the playback.

Referring toFIG. 4D, when the user drags the clicked mouse to the left or the right, the corresponding arrow extends indicating that the video's playback is being accelerated in that direction. The extension of arrow460is the visual representation in the user interface of the embedded player of the clicking and dragging of the mouse by the user. The action of clicking and dragging is a gesture that is received330by the player GUI module208. The gesture comprises not only a direction but also a magnitude. The direction indicates whether the user wishes to rewind for fast forward the video's playback. The magnitude of the gesture is how far to the left or to the right the user has dragged the mouse from the center of viewing window405. The magnitude is represented visually by how far the arrow460is extended. The magnitude and direction of gesture are received330at the player GUI module208. Using the magnitude and direction of the gesture, the player GUI module208transmits335instructions implementing the gesture to the video decoder204and audio decoder206. In turn, the video decoder204and audio decoder206provide340the video and associated thumbnails at the speed and direction as requested by the magnitude and direction of the received gesture. The larger the magnitude of the gesture, the more quickly the video's playback moves ahead. In the case of rewinding, the magnitude of arrow465is the visual representation of how quickly the video is being requested to rewind by the user. The speed at which the video is being provided to the user is indicated by the display470. In the example embodiment, the speed is two times normal playback speed in this case. In one embodiment, if the video is being rewound by the user, the speed is identified as negative. In another embodiment, the reverse direction is identified in an alternative manner such as for example red numbers. A text display475indicates to the viewer that the video is fast forwarding.

In another embodiment, instead of clicking and dragging in the viewing window405, there is a control, such as for example, a jog stick that the user uses to fast forward or rewind the video. In yet another alternative, the user clicks and drags the viewing progress bar420.

In addition to the playback of the video being altered, the subset of thumbnails displayed to the user also updates. The display of the thumbnails in the plurality of frames450is a visual table of contents that scrolls along the bottom of the viewing window405. As illustrated inFIG. 4E, the video fast forwards or rewinds, the thumbnails fast forward and rewind as well with the thumbnail closest in time to the current time point in the video being displayed in the larger frame455. The more quickly the video is being fast forwarded or rewound, the more quickly the thumbnails scroll by.

In an alternative embodiment, rather than playing the video at a higher rate of speed, the viewing window405displays the thumbnail currently displayed in the larger frame455. As the user navigates, the thumbnails in the plurality of frames450update and each time the thumbnail in the larger frame455updates, the same thumbnail is displayed in the viewing window405. If the video is being fast-forwarded or rewound at a high rate of speed, displaying the thumbnails in the viewing window405is more efficient.

Referring toFIG. 4F, when the user reaches the desired time point in the video, the user releases the click and drag, the video resumes playing at the normal speed.

In one embodiment, thumbnails for a chosen video are provided to the client125by the video hosting site100. If however, not all of the video is provided to the client125and is instead streamed to the client125, it is possible that when fast forwarding, the user will move through the portion of the video stored in the buffer and be attempting to fast forward through portions of the video not yet streamed to the client125. In such an example, because all of the images were provided, the user is still able to navigate through the video. Referring toFIG. 5A, upon moving past the portion of video stored locally, the viewing window405no longer displays the video. The plurality of frames450continue to display and update thumbnails for the video as the user fast forwards through the video. In another embodiment, the viewing window405displays the thumbnail currently displayed in the larger frame455.

Referring toFIG. 5B, after fast forwarding past the portion of the video file stored in the buffer, when the user releases the click and drag, the client125requests the video content from the video hosting site100. The video hosting site100provides the content starting at the requested point and the viewing of the video continues as before, with the video hosting site100streaming the content to the client125and the client125storing some amount of content ahead of where the user is watching in a local buffer. Should the user then move backwards through the video to watch content that was previously skipped over, the client125requests that content from the video hosting site100if that content was not previously stored in the buffer.

It should be noted that the process steps and instructions of the present invention could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by real time network operating systems.