U.S. patent application number 15/837812 was filed with the patent office on 2018-04-12 for methods, systems, and media for presenting interstitial animations.
The applicant listed for this patent is Google LLC. Invention is credited to Kevin Greene, Justin Lewis.
Application Number | 20180101976 15/837812 |
Document ID | / |
Family ID | 60516533 |
Filed Date | 2018-04-12 |
United States Patent
Application |
20180101976 |
Kind Code |
A1 |
Lewis; Justin ; et
al. |
April 12, 2018 |
METHODS, SYSTEMS, AND MEDIA FOR PRESENTING INTERSTITIAL
ANIMATIONS
Abstract
Methods, systems, and media for presenting interstitial
animations are provided. In some embodiments, the method comprises:
receiving metadata associated with a video; receiving a request to
present the video; causing the video to begin buffering;
generating, using a hardware processor, an animation based on the
metadata; causing the animation to be presented until a
predetermined amount of the video has been buffered; and causing
the video to be presented upon buffering the predetermined amount
of the video.
Inventors: |
Lewis; Justin; (South San
Francisco, CA) ; Greene; Kevin; (San Francisco,
CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Google LLC |
Mountain View |
CA |
US |
|
|
Family ID: |
60516533 |
Appl. No.: |
15/837812 |
Filed: |
December 11, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14182887 |
Feb 18, 2014 |
9842422 |
|
|
15837812 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G09G 2350/00 20130101;
H04N 21/8146 20130101; G06F 3/1454 20130101; G09G 2340/04 20130101;
G09G 5/393 20130101; G09G 2360/127 20130101; G09G 5/395 20130101;
G09G 5/34 20130101; H04N 21/812 20130101; G09G 5/373 20130101 |
International
Class: |
G06T 13/80 20060101
G06T013/80; G09G 5/373 20060101 G09G005/373; G09G 5/34 20060101
G09G005/34 |
Claims
1. A method for presenting an interstitial animation, the method
comprising: receiving, at a first time point at a user device,
metadata associated with a video; receiving, at a second time point
from the user device, a request to present the video; causing the
video to begin buffering; determining an expected duration of time
required for a predetermined amount of the video to be buffered;
determining animation parameters for generating an animation that
include at least a number of frames of the animation and a frame
rate of the animation based on a duration of the animation having
the number of frames rendered at the frame rate and the expected
duration of time required for the predetermined amount of the video
to be buffered; generating the animation based on the metadata by
generating the number of frames of the animation; causing the
animation to be presented until the predetermined amount of the
video has been buffered; and causing the video to be presented upon
buffering the predetermined amount of the video.
2. The method of claim 1, further comprising storing the metadata
associated with the video in a storage device associated with the
user device.
3. The method of claim 1, wherein the expected duration of time is
determined based at least on information related to the user
device.
4. The method of claim 1, wherein the animation parameters for
generating the animation includes a minimum number of frames of the
animation and wherein the animation having the minimum number of
frames that are rendered at the frame rate has a duration that
exceeds the expected duration of time required for the
predetermined amount of video to be buffered.
5. The method of claim 1, further comprising identifying one or
more elements indicated by the media that is stored in the user
device, wherein the one or more elements corresponds to at least a
title of the video and a thumbnail image associated with the video
and wherein the generated animation each includes at least the
identified one or more elements.
6. The method of claim 5, wherein a position of the identified one
or more elements are different across each of the frames.
7. The method of claim 1, wherein generating the animation further
comprises: identifying one or more pieces of content to be
presented by scrolling across a user interface; determining a speed
at which to scroll the one or more pieces of content; and causing
the one or more pieces of content to scroll at the determined
speed.
8. The method of claim 1, wherein generating the animation further
comprises: identifying one or more pieces of content which should
change in size; determining a speed at which the pieces of content
should change in size; and causing the one or more pieces of
content to change in size at the determined speed.
9. The method of claim 1, further comprising setting a speed of the
animation at a proportional rate based on the expected duration of
time required for the predetermined amount of the video to be
buffered.
10. The method of claim 1, further comprising setting a speed of
the animation at a constant rate based on the expected duration of
time required for the predetermined amount of the video to be
buffered.
11. A system for presenting interstitial animations, the system
comprising: a hardware processor that is configured to: receive, at
a first time point at a user device, metadata associated with a
video, wherein the metadata is stored in a memory; receive, at a
second time point from the user device, a request to present the
video; cause the video to begin buffering; determine an expected
duration of time required for a predetermined amount of the video
to be buffered; determine animation parameters for generating an
animation that include at least a number of frames of the animation
and a frame rate of the animation based on a duration of the
animation having the number of frames rendered at the frame rate
and the expected duration of time required for the predetermined
amount of the video to be buffered; generate the animation based on
the metadata stored in the memory by generating the number of
frames of the animation; cause the animation to be presented until
the predetermined amount of the video has been buffered; and cause
the video to be presented upon buffering the predetermined amount
of the video.
12. The system of claim 11, wherein the hardware processor is
further configured to store the metadata associated with the video
in a storage device associated with the user device.
13. The system of claim 11, wherein the expected duration of time
is determined based at least on information related to the user
device.
14. The system of claim 11, wherein the animation parameters for
generating the animation includes a minimum number of frames of the
animation and wherein the animation having the minimum number of
frames that are rendered at the frame rate has a duration that
exceeds the expected duration of time required for the
predetermined amount of video to be buffered.
15. The system of claim 11, wherein the hardware processor is
further configured to identify one or more elements indicated by
the media that is stored in the user device, wherein the one or
more elements corresponds to at least a title of the video and a
thumbnail image associated with the video and wherein the generated
animation each includes at least the identified one or more
elements.
16. The system of claim 15, wherein a position of the identified
one or more elements are different across each of the frames.
17. The system of claim 11, wherein generating the animation
further comprises: identifying one or more pieces of content to be
presented by scrolling across a user interface; determining a speed
at which to scroll the one or more pieces of content; and causing
the one or more pieces of content to scroll at the determined
speed.
18. The system of claim 11, wherein generating the animation
further comprises: identifying one or more pieces of content which
should change in size; determining a speed at which the pieces of
content should change in size; and causing the one or more pieces
of content to change in size at the determined speed.
19. The system of claim 11, wherein the hardware processor is
further configured to set a speed of the animation at a
proportional rate based on the expected duration of time required
for the predetermined amount of the video to be buffered.
20. The system of claim 11, wherein the hardware processor is
further configured to set a speed of the animation at a constant
rate based on the expected duration of time required for the
predetermined amount of the video to be buffered.
21. A non-transitory computer-readable medium containing computer
executable instructions that, when executed by a processor, cause
the processor to perform a method for presenting interstitial
animations, the method comprising: receiving, at a first time point
at a user device, metadata associated with a video; receiving, at a
second time point from the user device, a request to present the
video; causing the video to begin buffering; determining an
expected duration of time required for a predetermined amount of
the video to be buffered; determining animation parameters for
generating an animation that include at least a number of frames of
the animation and a frame rate of the animation based on a duration
of the animation having the number of frames rendered at the frame
rate and the expected duration of time required for the
predetermined amount of the video to be buffered; generating the
animation based on the metadata by generating the number of frames
of the animation; causing the animation to be presented until the
predetermined amount of the video has been buffered; and causing
the video to be presented upon buffering the predetermined amount
of the video.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 14/182,887, filed Feb. 18, 2014, which is
hereby incorporated by reference herein in its entirety.
TECHNICAL FIELD
[0002] The disclosed subject matter relates to methods, systems,
and media for presenting interstitial animations.
BACKGROUND
[0003] Many users enjoy watching streaming media content on their
devices. For example, a user can request that a video from a video
hosting service be played back on a mobile device. However, for
some devices and/or for some types of connections, the time
required to load and begin playing an item of media content can be
slow. This can lead to frustration for the user. For example, this
may cause the user to abort the request when the user cannot
determine if the video has encountered an error during the loading
process.
[0004] Accordingly, it is desirable to provide new methods,
systems, and media for presenting interstitial animations.
SUMMARY
[0005] Methods, systems, and media for presenting interstitial
animations are provided. In accordance with some embodiments of the
disclosed subject matter, methods for presenting interstitial
animations are provided, the methods comprising: receiving metadata
associated with a video; receiving a request to present the video;
causing the video to begin buffering; generating, using a hardware
processor, an animation based on the metadata; causing the
animation to be presented until a predetermined amount of the video
has been buffered; and causing the video to be presented upon
buffering the predetermined amount of the video.
[0006] In accordance with some embodiments of the disclosed subject
matter, systems for presenting interstitial animations are
provided, the systems comprising: a hardware processor that is
configured to: receive metadata associated with a video; receive a
request to present the video; cause the video to begin buffering;
generate, using a hardware processor, an animation based on the
metadata; cause the animation to be presented until a predetermined
amount of the video has been buffered; and cause the video to be
presented upon buffering the predetermined amount of the video.
[0007] In accordance with some embodiments of the disclosed subject
matter, non-transitory computer-readable media containing computer
executable instructions that, when executed by a processor, cause
the processor to perform a method for presenting interstitial
animations are provided, the method comprising: receiving metadata
associated with a video; receiving a request to present the video;
causing the video to begin buffering; generating, using a hardware
processor, an animation based on the metadata; causing the
animation to be presented until a predetermined amount of the video
has been buffered; and causing the video to be presented upon
buffering the predetermined amount of the video.
[0008] In accordance with some embodiments of the disclosed subject
matter, a system for presenting interstitial animations is
provided, the system comprising: means for receiving metadata
associated with a video; means for receiving a request to present
the video; means for causing the video to begin buffering; means
for generating an animation based on the metadata; means for
causing the animation to be presented until a predetermined amount
of the video has been buffered; and means for causing the video to
be presented upon buffering the predetermined amount of the
video.
[0009] In some embodiments, the metadata comprises a title of the
video.
[0010] In some embodiments, the metadata comprises a thumbnail
associated with the video.
[0011] In some embodiments, means for generating the animation
further comprises: means for identifying one or more pieces of
content to be presented by scrolling across a user interface; means
for determining a speed at which to scroll the one or more pieces
of content; and means for causing the one or more pieces of content
to scroll at the determined speed.
[0012] In some embodiments, means for generating the animation
further comprises: means for identifying one or more pieces of
content which should change in size; means for determining a speed
at which the pieces of content should change in size; and means for
causing the one or more pieces of content to change in size at the
determined speed.
[0013] In some embodiments, the system further comprises: means for
estimating an amount of time until the predetermined amount of
video has been buffered; and means for setting a speed of animation
at a proportional rate based on the amount of time.
[0014] In some embodiments, the system further comprises: means for
estimating an amount of time until the predetermined amount of
video has been loaded; and means for setting a speed of the
animation at a constant rate based on the amount of time.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Various objects, features, and advantages of the disclosed
subject matter can be more fully appreciated with reference to the
following detailed description of the disclosed subject matter when
considered in connection with the following drawings, in which like
reference numerals identify like elements.
[0016] FIG. 1 shows an example of a process for presenting
interstitial animations in accordance with some embodiments of the
disclosed subject matter.
[0017] FIG. 2 shows an example of a process for generating frames
of an animation based on metadata in accordance with some
embodiments of the disclosed subject matter.
[0018] FIG. 3 shows an example of a process for dynamically
generating an animation in accordance with some embodiments of the
disclosed subject matter.
[0019] FIG. 4 shows an example of a user interface for presenting
video search results that include metadata pertaining to the videos
in accordance with some embodiments of the disclosed subject
matter.
[0020] FIGS. 5A-5B show examples of a user interface for presenting
interstitial animations in accordance with some embodiments of the
disclosed subject matter.
[0021] FIG. 6 shows a schematic diagram of an illustrative system
suitable for implementation of mechanisms described herein for
presenting interstitial animations in accordance with some
embodiments of the disclosed subject matter.
[0022] FIG. 7 shows an example of a server and a user device of
FIG. 6 that can be used in accordance with some embodiments of the
disclosed subject matter.
DETAILED DESCRIPTION
[0023] In accordance with various embodiments, mechanisms (which
can include methods, systems, and media) for presenting
interstitial animations are provided.
[0024] In accordance with some embodiments, the mechanisms
described herein can generate and present animations within a video
player during a time that a video is being buffered and before
initial presentation of the video. In some such embodiments, the
mechanisms described herein can generate the animations based on
metadata associated with the video.
[0025] In some embodiments, the mechanisms described herein can
generate animations, which can include content which scrolls across
a user interface, content which grows in size, and/or content which
shrinks in size. In some such embodiments, the mechanisms described
herein can cause the content to move and/or change in size at a
constant rate. Alternatively, in some embodiments, the mechanisms
described herein can cause the content to move and/or change in
size at a proportional rate. Such a proportional rate can cause a
speed at which the animation is presented to decrease as the
content approaches a particular position and/or size.
[0026] In some embodiments, the mechanisms described herein can
generate all of the frames of an animation before the animation is
initially presented. Alternatively, in some embodiments, the
mechanisms described herein can generate one or more frames of an
animation dynamically (e.g., as the animation is being
presented).
[0027] Turning to FIG. 1, an example 100 of a process for
presenting interstitial animations in accordance with some
embodiments is shown.
[0028] Process 100 can begin by receiving metadata associated with
one or more videos at 102. The received metadata can include any
suitable information. For example, the received metadata can
include a title corresponding to the video. As another example, the
received metadata can include a thumbnail image corresponding to
the video. Process 100 can additionally or alternatively receive
any other suitable metadata, such as the number of views of the
video, contacts (e.g., friends and/or acquaintances) of a user who
have watched and/or liked the video, and/or any other suitable
information. In some embodiments, process 100 can receive metadata
from any suitable device, for example, a server that stores and/or
transmits media content. Additionally or alternatively, process 100
can receive the metadata using any suitable technique or
combination of techniques. For example, metadata corresponding to
all of the videos presented as results of a search query can be
received.
[0029] In instances where information associated with a user's
activity on a social network and/or information associated with
contacts of the user on a social network are received by process
100, process 100 can obtain consent from the user indicating that
such information can be received and/or used. Consent can be
obtained in any suitable manner and using any suitable technique.
For example, in some embodiments, a dialog box can be presented
that asks whether a particular type of information relating to the
user or from the user device can be used to generate an
interstitial animation.
[0030] Process 100 can receive a request to present a video at 104.
The request can be generated by any suitable source and/or using
any suitable technique or combination of techniques. For example,
process 100 can receive a request in response to a user selecting a
particular video for presentation. As a more particular example, a
user can select a particular video from a list of videos presented
in response to a search query as described in connection with FIG.
4. As another more particular example, a user can select a link to
a video from a web page and/or an application.
[0031] Process 100 can begin buffering the requested video at 106.
In some embodiments, process 100 can buffer the video using any
suitable technique or combination of techniques. For example, in
some embodiments, process 100 can receive the video from a server
transmitting media content via a communication network, and process
100 can then cause the received video to be stored in memory on a
user device executing process 100 and/or on any other suitable user
device. Any suitable amount of buffered video can be stored (e.g.,
based on memory available to the user device).
[0032] Process 100 can generate an animation based on the received
metadata at 108. Process 100 can generate the animation using any
suitable technique or combination of techniques. For example, in
some embodiments, all of the frames for the animation can be
generated before the animation is initially presented, for example,
as described below in connection with FIG. 2. As another example,
in some embodiments, the frames of the animation can be dynamically
generated as the animation is presented, as described below in
connection with FIG. 3. In some embodiments, a user device that is
to present the animation and/or the requested video (e.g., a user
device executing process 100) can receive instructions for
generating the animation, for example, from a server. In such
embodiments, the user device can execute the received instructions
to generate and present the animation. Process 100 can determine
whether all of the frames of the animation are to be generated
before the animation is initially presented or whether the frames
are to be dynamically generated using any suitable information,
such as a device type associated with the user device executing
process 100, a connection speed being used by the user device
executing process 100, and/or any other suitable information.
[0033] It should be noted that, although the embodiments described
herein generally relate to generating an interstitial animation
prior to the presentation of video content, this is merely
illustrative. Alternatively, an interstitial animation can be
generated and presented while a video conference between users is
being initiated. In such an embodiment, the metadata received by
process 100 can include names of the participants of the video
conference, images associated with the participants of the video
conference, a name of the service hosting the video conference,
and/or any other suitable metadata.
[0034] Process 100 can present the animation at 110. Process 100
can present the animation in any suitable manner and/or using any
suitable technique or combination of techniques. For example, in
some embodiments, process 100 can cause the animation to be
presented using the video player window to be used to present the
selected video. In some embodiments, process 100 can cause video
player controls (e.g., a volume control, a pause control, an input
to change the player window size, and/or any other suitable
controls) to be presented and/or enabled during presentation of the
animation. Additionally or alternatively, in some embodiments,
process 100 can cause video player controls to be hidden and/or
disabled during presentation of the animation. In some embodiments,
any suitable audio can be presented in association with the
animation, including no audio.
[0035] In some embodiments, where process 100 generates the frames
of the animation before the animation is initially presented, the
animation can be presented at a constant frame rate, at a frame
rate which varies based on an estimate of how much time remains for
the predetermined amount of video to be buffered, and/or any
suitable combination thereof. In some embodiments, where the frame
rate of the animation is varied, process 100 can additionally
estimate an amount of time for the predetermined amount of video to
finish buffering at 110, and can adjust the frame rate based on the
estimated amount of time. As a more particular example, if the
current frame rate is 30 frames per second, and process 100
estimates that an additional one second will be required to buffer
the predetermined amount of video beyond an initial estimate,
process 100 can cause the animation to be presented at a lower
frame rate, for example, 20 frames per second. In some embodiments,
process 100 can cause a change between two frame rates to be made
gradually, for example, by using any suitable acceleration and/or
deceleration functions. Process 100 can estimate the amount of time
for the predetermined amount of video to finish buffering using any
suitable information and using any suitable technique or
combination of techniques. For example, in some embodiments,
process 100 can estimate the amount of time by comparing a video
file size amount (e.g., an amount of video and/or an amount of
video corresponding to the predetermined amount of video to be
buffered) by a rate at which the video is being transferred (e.g.,
from a server to a user device). As a more particular example, in
some embodiments, process 100 can estimate the amount of time by
dividing a number of bits remaining to be buffered by a bitrate of
the connection.
[0036] Process 100 can determine if a predetermined amount of video
has been buffered at 112. The predetermined amount of video can be
any suitable amount. For example, in some embodiments, the
predetermined amount can be a fixed amount, regardless of any
factors such as a type of device presenting the video, the duration
of the video, a connection speed of the device to a network, and/or
any other factors. As a more particular example, in some
embodiments, the predetermined amount can correspond to a fixed
amount (e.g., in kilobytes, and/or any other suitable metric) of
video stored in memory, for example, in a buffer. As another more
particular example, in some embodiments, the predetermined amount
can correspond to a fixed duration (e.g., 3 seconds, 5 seconds, 10
seconds, and/or any other suitable duration) of the video and/or of
a fixed number (e.g., 10, 20, 50, and/or any other suitable number)
of frames of the video. As another example, in some embodiments,
process 100 can determine the predetermined amount based on one or
more factors. These factors can include, for example:
characteristics of a user device executing process 100 (e.g.,
whether the user device is a mobile phone, whether the user device
is a particular type of mobile phone, whether the user device is a
tablet computer, whether the user device is using a particular
operating system, and/or any other suitable characteristics); a
type of data connection (e.g., a WiFi connection, a mobile
broadband connection such as LTE, 3G, and/or any other mobile
broadband connection, a DSL connection, a dial-up connection,
and/or any other type of data connection) being used by the device
executing process 100 to buffer the video; the time of day (e.g.,
morning, evening, and/or any other suitable time); and/or any other
suitable factors. As a more particular example, in some
embodiments, process 100 can determine the predetermined amount of
video to be buffered based on a connection speed of the user device
such that the predetermined amount of video to be buffered for
higher speed connections is smaller than a predetermined amount of
video to be buffered for slower speed connections.
[0037] If, at 112, process 100 determines that the predetermined
amount of video has not completed buffering ("No" at 112), in some
embodiments, process 100 can return to 110 and can continue
presenting the animation. Additionally or alternatively, in some
embodiments (e.g., in cases where the animation is generated
dynamically as it is being presented), process 100 can return to
108 (as shown by the dashed line in FIG. 1) and can continue
generating the animation.
[0038] If, at 112, process 100 determines that the predetermined
amount of video has completed buffering ("Yes" at 112), process 100
can cause the video to be presented at 114. The video can be
presented using any suitable technique or combination of
techniques. For example, in some embodiments, process 100 can cause
the animation to terminate at any suitable point (e.g., an endpoint
of the animation, a mid-point of the animation, and/or any other
suitable point) and can cause the video to begin being presented
with any suitable time between presentation of the animation ending
and presentation of the video beginning (including no time). As a
more particular example, if the animation contains a block of text
which repeatedly scrolls across a user interface, process 100 can
cause the video to begin being presented at a point in time when
the block of text has fully scrolled off of the user interface. As
another example, process 100 can cause the video to be presented
using the video player that was used to present the animation.
[0039] Turning to FIG. 2, an example 200 of a process for
generating all of the frames of an animation before the animation
is initially presented is shown in accordance with some
embodiments.
[0040] Process 200 can begin by receiving a request to generate an
animation at 202. The request can be received from any suitable
source, for example, process 100, as described above in connection
with FIG. 1.
[0041] Process 200 can receive metadata associated with a video at
204. As described above in connection with FIG. 1, the metadata can
include any suitable information, such as a title, a thumbnail, a
number of views, a name of the creator and/or owner of the video,
and/or any other suitable information. The metadata can be received
using any suitable technique or combination of techniques. For
example, in some embodiments, metadata can be stored in memory on a
user device (e.g., when a web page including search results
corresponding to a search query is loaded, when an application
which provides links to videos is opened, and/or in response to any
other event), and the metadata can be received when a hardware
processor on the user device accesses the corresponding location in
memory.
[0042] Process 200 can identify one or more elements to be included
in the animation based at least in part on the received metadata at
206. Process 200 can make this determination using any suitable
technique or combination of techniques. For example, in some
embodiments, each item of metadata (e.g., title of a video, creator
of a video, thumbnail image associated with a video, and/or any
other suitable type of metadata) can be associated with a graphical
element. As a more particular example, a title of a video can be
associated with an image which displays the title of the video and
any associated icons and/or images. Process 200 can then determine
the one or more elements to include in the animation by identifying
the graphical elements associated with the metadata. In some
embodiments, process 200 can determine that only a subset of the
metadata is to be used to create the animation. As a more
particular example, process 200 can determine that the animation is
to include only a title of the video and a thumbnail image
associated with the video, even if other metadata and/or graphical
elements exist.
[0043] Additionally or alternatively, in some embodiments, process
200 can identify one or more elements to be included in the
animation which are based on information other than the metadata.
For example, in some embodiments, process 200 can identify one or
more elements based on information related to social interactions,
for example, on a social network. As a more particular example, in
some embodiments, one or more elements of the animation can
correspond to a name of a person and/or entity who posted, shared
and/or liked the video on a social network. As another particular
example, in some embodiments, one or more elements of the animation
can correspond to comments related to the video which were posted
in association with the video.
[0044] Process 200 can determine a frame rate at which the
animation is to be presented at 208. Process 200 can make this
determination based on any suitable information and using any
suitable technique or combination of techniques. For example, in
some embodiments, the frame rate can be set to a fixed rate (e.g.,
15 frames per second, 30 frames per second, and/or any other
suitable frame rate) for all animations. As another example, in
some embodiments, the frame rate can be set to different rates
depending on one or more factors (e.g., a device type, a speed of a
data connection, a frame rate of the video to be loaded, and/or any
other suitable factors). In some embodiments, process 200 can
access a table and/or a matrix which can associate different frame
rates with particular values and/or value ranges of the one or more
factors to determine the frame rate.
[0045] Process 200 can determine how many frames of the animation
to generate at 210. In some embodiments, the frame rate at which
the animation is presented can be fixed, for example, as described
above in connection with block 110 of process 100. Additionally, in
some embodiments, process 200 can determine the number of frames,
such that, when presented at a constant frame rate, the animation
runs longer than an expected time for the predetermined amount of
video to buffer. More particularly, process 200 can determine the
number of frames such that the animation will not reach the last
frame before the predetermined amount of video has been buffered
based on an expected amount of time. As a more particular example,
if the fixed frame rate is 30 frames per second, and the expected
amount of time required for the predetermined amount of video to be
buffered is 5 seconds, process 200 can determine that the number of
frames of the animation is to be greater than 150 frames (e.g., 170
frames, 180 frames, 200 frames, and/or any other suitable number of
frames).
[0046] Alternatively, in some embodiments, the frame rate at which
the animation is presented can be varied, for example, as described
above in connection with block 110 of process 100. Process 200 can
determine how many frames of animation to generate based on
information indicating that the frame rate can be varied during
animation presentation. For example, process 200 can determine that
the number of frames of animation is to be the number of frames
corresponding to an average amount of time required to buffer the
predetermined amount of video and/or a typical frame rate.
[0047] Process 200 can determine if one or more elements of the
animation should move and/or scale at a constant rate and/or at a
proportional rate at 212. Process 200 can make this determination
based on any suitable information, for example, the type of content
associated with each element. As a more particular example, if the
animation contains a block of text which is to scroll across a user
interface, process 200 can determine that the block of text should
scroll at a constant rate. As another particular example, if the
animation contains an image (e.g., a thumbnail image associated
with the video) which is to grow in size until the video has
buffered a predetermined amount, process 200 can determine that the
image should progress a predetermined amount (e.g., ten percent,
twenty percent, fifty percent, and/or any other suitable amount) to
the target size for a given time step in the animation (e.g., every
second, every ten frames, and/or any other suitable time step
metric), and therefore, the image should change in size at a
proportional rate.
[0048] Process 200 can generate the animation at 214. Process 200
can generate the animation using any suitable technique or
combination of techniques. For example, in some embodiments,
process 200 can generate an animation composed of the number of
frames determined at block 210, such that the frames include the
elements (e.g., the elements identified at 206) moved in position,
scaled, and/or any other suitable change. As a more particular
example, for elements which are moved at a constant rate, process
200 can generate the predetermined number of frames wherein the
elements move a fixed amount between successive frames or groups of
frames. As another more particular example, for elements to be
moved and/or changed in size at a proportional rate, process 200
can generate the predetermined number of frames such that the
elements move and/or scale by a fixed percentage toward a target
position and/or size across successive frames or groups of frames.
In some embodiments, process 200 can apply any suitable video
and/or graphics editing techniques to one or more frames of the
animation. For example, process 200 can cause any elements of the
animation to fade in, fade out, slide in, slide out, and/or any
other suitable techniques.
[0049] In some embodiments, the animation can be dynamically
generated during presentation of the animation. FIG. 3 shows an
example 300 of a process for dynamically generating the animation
in accordance with some embodiments.
[0050] Process 300 can begin by receiving a request to generate an
animation at 302. The request can be received from any suitable
source, for example, from process 100 described above in connection
with FIG. 1.
[0051] Process 300 can receive metadata associated with a video at
304. As described above in connection with FIGS. 1 and 2, the
metadata can include any suitable information, such as a title, a
thumbnail, a number of views, a name of the creator and/or owner of
the video, and/or any other suitable information. The metadata can
be received using any suitable technique or combination of
techniques, for example, those described above in connection with
block 204 of FIG. 2.
[0052] Process 300 can identify one or more elements to be included
in the animation based on the metadata at 306. Similarly to process
200, process 300 can make this determination using any suitable
technique or combination of techniques, such as techniques
described above in connection with block 206 of FIG. 2.
[0053] Process 300 can estimate an amount of time for which the
animation is to be presented at 308. Process 300 can estimate the
time based on any suitable information and using any suitable
technique or combination of techniques. For example, in some
embodiments, process 300 can estimate the amount of time the
animation is to be presented based on one or more factors
associated with a user device to be used to buffer the video (e.g.,
the user device executing process 300), such as a device type, an
operating system of the device, a speed of a data connection, a
location of the device, a connection speed and/or strength of a
connection to a network (e.g., the Internet), a time of day, a
system associated with the device, and/or any other suitable
factors.
[0054] Process 300 can determine if the amount of time estimated is
zero at 310. If process 300 determines that the animation is to be
presented for zero time ("Yes" at 310), process 300 can terminate
at 316. The amount of time can be estimated to be zero based on any
suitable information. For example, in some embodiments, the amount
of time can be estimated to be zero when the amount of video that
has been buffered is within a particular range (e.g., one percent,
five percent, and/or any other suitable range) of the predetermined
amount of video to be buffered.
[0055] If process 300 determines that the amount of time estimated
is not zero ("No" at 310), process 300 can determine whether each
element of the animation is to move at a constant rate and/or at a
proportional rate at 312. Similarly to block 212 as described above
in connection with FIG. 2, process 300 can make this determination
based on any suitable information and using any suitable technique
or combination of techniques.
[0056] Process 300 can generate one or more frames of animation at
314. In some embodiments, process 300 can generate these one or
more frames based at least in part on the frame rate at which the
animation is to be presented. For example, if process 300 is
generating frames at a particular frame rate, process 300 can
generate the one or more frames such that an element (e.g., of the
elements identified at block 306) moves and/or is scaled at a
predetermined constant or proportional rate. As a more particular
example, if process 300 is generating frames to be presented at a
rate of 30 frames per second, and a particular block of text is to
move at 90 pixels per second, process 300 can generate one or more
frames such that the block of text moves 3 pixels relative to the
previously generated frame or group of frames. In some embodiments,
an amount that an element is to move can be specified with any
suitable unit, such as pixels, a percentage of a screen size,
and/or any other suitable unit. As another particular example, if
process 300 is generating frames to be presented at a rate of 30
frames per second, and a particular image is to progress in size by
a predetermined amount (e.g., ten percent, twenty percent, or fifty
percent) to a target image size each second, process 300 can
generate one or more frames such that the image is enlarged the
appropriate amount relative to the previously generated frame or
group of frames. In some embodiments, process 300 can use any
suitable computer graphics techniques to populate a frame with the
one or more elements identified at 306.
[0057] Process 300 can then return to 308 and determine a new
estimate of time to present the animation. Process 300 can return
at any suitable frequency (e.g., 20 times per second, 30 times per
second, 40 times per second, and/or any other suitable frequency)
and/or after any suitable criterion or criteria are met (e.g., a
frame is generated, five frames are generated, a connection speed
of the device executing process 300 changes, and/or any other
suitable criteria).
[0058] Turning to FIG. 4, an example 400 of a user interface for
presenting video search results wherein each search result is
associated with metadata corresponding to the video is shown in
accordance with some embodiments. As illustrated, user interface
400 can include a title 402, and one or more search results
404.
[0059] In some embodiments, title 402 can indicate content
presented in user interface 400. For example, as shown in FIG. 4,
title 402 can be a block of text. In some embodiments, title 402
can include any suitable text, images, icons, graphics, animations,
and/or any other suitable content. The position of title 402 in
user interface 400 is merely an example, and title 402 can be
presented in any suitable position. In some embodiments, title 402
can be omitted.
[0060] In some embodiments, search results 404 can indicate results
presented in response to a search query. For example, as shown in
FIG. 4, search results 404 can include video search results 410,
420, and 430. Search results 404 can include any suitable number of
results, and the results can be presented in any suitable manner
and/or using any suitable technique or combination of techniques.
For example, as shown in FIG. 4, search results 404 can be
presented such that the results are stacked one on top of the
other. As another example, in some embodiments, the search results
can be presented horizontally, in a grid, and/or in any other
configuration.
[0061] In some embodiments, video search results 410, 420, and 430
can be associated with metadata, for example, thumbnails 412, 422,
and 432, video titles 414, 424, and 434, and/or dates 416, 426, and
436 can correspond to metadata associated with search results 410,
420, and 430, respectively. Any additional types of metadata can be
included with each search result. For example, in some embodiments,
the metadata can include identifying information of users other
than the user who made the request who have watched and/or liked
the video, such as contacts of the user on a social network. As
another example, in some embodiments, the metadata can include the
name of the creator and/or publisher of the video. As yet another
example, in some embodiments, the metadata can include the number
of times the video has been viewed. The metadata associated with
each search result can be loaded in any suitable manner. For
example, in some embodiments, the metadata can be stored in memory
on a user device when a web page presenting the search results is
first loaded. In some embodiments, only a subset of the metadata
can be presented in user interface 400. For example, in some
embodiments, metadata such as a number of views associated with a
video, and/or any other suitable data can be associated with a
search result but may not be presented in user interface 400.
[0062] In some embodiments, thumbnails 412, 422, and 432 can be any
suitable content corresponding to an associated video. For example,
as shown in FIG. 4, thumbnails 412, 422, and/or 432 can be an image
associated with the video. In some embodiments, any icons,
animations, graphics, text, and/or any other suitable content can
be included in thumbnails 412, 422, and/or 432. The positions of
thumbnails 412, 422, and 432 in user interface 400 are shown merely
as examples and the thumbnails can be presented at any suitable
positions. In some embodiments, thumbnails 412, 422, and/or 432 can
be omitted.
[0063] In some embodiments, video titles 414, 424, and 434 can be
any suitable titles corresponding to associated videos. For
example, as shown in FIG. 4, video titles 414, 424 and/or 434 can
include a text block stating the title of the video. In some
embodiments, any suitable information (e.g., creator of the video,
place of video creation and/or any other suitable information) can
additionally or alternatively be included in video titles 414, 424,
and/or 434. The positions of video titles 412, 422, and 432 in user
interface 400 are shown merely as examples, and the titles can be
presented at any suitable positions. In some embodiments, video
titles 412, 422, and/or 432 can be omitted.
[0064] In some embodiments, dates 416, 426, and 436 can indicate a
date corresponding to an associated video. For example, in some
embodiments, dates 416, 426, and/or 436 can indicate the date of
creation of the video. As another example, in some embodiments,
dates 416, 426, and/or 436 can indicate the date the video was
uploaded to the site hosting the video. The positions of dates 416,
426, and 436 in user interface 400 are shown merely as examples and
the dates can be presented in any suitable positions. In some
embodiments, dates 416, 426, and/or 436 can be omitted.
[0065] Turning to FIGS. 5A-5B, an example 500 of a user interface
for presenting an interstitial animation is shown in accordance
with some embodiments. In some embodiments, the interstitial
animation can be presented during the period when a selected video
is being buffered, for example, as described above in connection
with FIGS. 1, 2, and 3. In some embodiments, the interstitial
animation can be comprised of elements based on metadata associated
with the selected video, such as a title and/or thumbnail
associated with the selected video. As illustrated, an interstitial
animation presented in user interface 500 can include a logo 502,
titles 504 and 514, and thumbnails 506 and 516.
[0066] In some embodiments, logo 502 can be any suitable logo
corresponding to the provider of user interface 500. As shown in
FIGS. 5A and 5B, logo 502 can include a block of text. In some
embodiments, any suitable images, icons, graphics, animations,
videos, and/or any other suitable content can be included in logo
502. The position of logo 502 in user interface 500 is shown merely
as an example, and the logo 502 can be located at any suitable
position. In some embodiments, logo 502 can be omitted.
[0067] Titles 504 and/or 514 can be any suitable title
corresponding to the selected video. As shown in FIGS. 5A and 5B,
titles 504 and 514 can be the same title (e.g., the title of the
selected video), where a portion of title 504 presented in FIG. 5A
is different than a portion of title 514 presented in FIG. 5B, for
example, due to movement of the title within user interface 500.
Titles 504 and/or 514 can move in any suitable manner. For example,
as shown in FIGS. 5A and 5B, titles 504 and 514 can scroll across
user interface 500. In some embodiments, titles 504 and 514 can
scroll across user interface 500 in any suitable direction (e.g.,
horizontally, vertically, diagonally, and/or any other suitable
direction). As another example, in some embodiments, titles 504 and
514 can blink on and off. As yet another example, in some
embodiments, titles 504 and 514 can move in a random or
pseudo-random pattern across user interface 500. Additionally or
alternatively, in some embodiments, text, such as titles 504 and
514 can be scaled. In some embodiments, titles 504 and/or 514 can
be omitted.
[0068] Thumbnails 506 and/or 516 can be any suitable image or
images corresponding to the selected video. As shown in FIGS. 5A
and 5B, thumbnails 506 and 516 can be the same thumbnail (e.g., a
thumbnail associated with the selected video), where thumbnail 516
is scaled to a different size in FIG. 5B relative to thumbnail 506
in FIG. 5A. Thumbnails 506 and/or 516 can move and/or scale in any
suitable manner. For example, as shown in FIGS. 5A and 5B,
thumbnails 506 and/or 516 can grow in size, such that the thumbnail
fills the entire player window just before the selected video
begins playing. In some embodiments, thumbnails 506 and/or 516 can
grow at a proportional rate, such that the thumbnail image reaches
a predetermined amount (e.g., ten percent, twenty percent, fifty
percent, and/or any other size) to a target size (for example, the
size of the video player window) within a set time step (e.g.,
every half second, every second, and/or any other suitable time
step). As another example, thumbnail 506 and/or 516 can shrink in
size such that the thumbnail appears to disappear or reach any
other suitable size (e.g., ten percent of the window, five percent
of the window, and/or any other suitable size) at the moment the
predetermined amount of video is loaded and/or just prior to a time
when presentation of the video begins. As yet another example, in
some embodiments, a portion of thumbnails 506 and/or 516 can be
selected for presentation by zooming in and/or zooming out on the
thumbnail image at any suitable constant and/or proportional rate.
As still another example, thumbnails 506 and/or 516 can move in any
suitable manner within user interface 500 (e.g., scroll
horizontally, scroll vertically, move in a random pattern, and/or
any other suitable movement).
[0069] FIG. 6 shows an example 600 of a generalized schematic
diagram of an illustrative system on which the mechanisms for
presenting interstitial animations can be implemented in accordance
with some embodiments of the disclosed subject matter. As
illustrated, system 600 can include one or more user devices 608.
User devices 608 can be local to each other or remote from each
other. User devices 608 can be connected by one or more
communication links 610 to a communications network 606 that can be
linked via a communications link 604 to a server 602.
[0070] System 600 can include one or more servers 602. Server(s)
602 can be any suitable server(s) for providing access to the
mechanisms described herein for presenting interstitial animations,
such as a processor, a computer, a data processing device, or any
suitable combination of such devices. For example, the mechanisms
for presenting interstitial animations can be distributed into
multiple backend components and multiple frontend components and/or
interfaces. In a more particular example, backend components, such
as responding to a request to present a video and/or delivering a
video and associated metadata can be performed on one or more
servers 602.
[0071] In some embodiments, each of the user devices 608 and server
602 can be any of a general purpose device such as a computer or a
special purpose device such as a client, a server, and/or any other
suitable device. Any of these general or special purpose devices
can include any suitable components such as a hardware processor
(which can be a microprocessor, digital signal processor, a
controller, and/or any other type of hardware processor), memory,
communication interfaces, display controllers, input devices,
and/or any other suitable components. For example, user device 608
can be implemented as a smartphone, a tablet computer, a wearable
computer, a personal computer, a laptop computer, a digital media
receiver, a personal data assistant (PDA), a set-top box, a smart
television, a home entertainment system, a game console, any other
suitable user device, or any suitable combination thereof.
[0072] Communications network 606 can be any suitable computer
network or combination of such networks including the Internet, an
intranet, a wide-area network (WAN), a local-area network (LAN), a
wireless network, a digital subscriber line (DSL) network, a frame
relay network, an asynchronous transfer mode (ATM) network, a
virtual private network (VPN), and/or any other suitable type of
network. Communications links 604 and 610 can be any communications
links suitable for communicating data among user devices 608 and
server 602, such as network links, dial-up links, wireless links,
hard-wired links, any other suitable communications links, or any
suitable combination of such links. User devices 608 can enable use
of the techniques described herein that can allow the features of
the mechanisms to be used. User devices 608 and server 602 can be
located at any suitable location.
[0073] FIG. 7 illustrates an example 700 of hardware that can be
used to implement server 602 and one of user devices 608 depicted
in FIG. 6 in accordance with some embodiments. Referring to FIG. 7,
user device 608 can include a hardware processor 712, a display
714, an input device 716, and memory 718, which can be
interconnected. In some embodiments, memory 718 can include a
storage device (such as a non-transitory computer-readable medium)
for storing a computer program for controlling hardware processor
712.
[0074] Hardware processor 712 can use the computer program to
present on display 714 content and/or an interface that allows a
user to interact with the mechanisms described herein for
presenting interstitial animations and to send and receive data
through communications link 610. For example, hardware processor
712 can be programmed to perform any of processes 100, 200, and/or
300. As a more particular example, hardware processor 712 can be
programmed to determine how many frames of an animation are to be
generated. As another more particular example, hardware processor
712 can be programmed to generate an animation such that elements
of the animation move and/or scale at a constant and/or
proportional rate. It should also be noted that data received
through communications link 610 or any other communications links
can be received from any suitable source. In some embodiments,
hardware processor 712 can send and receive data through
communications link 608 or any other communication links using, for
example, a transmitter, a receiver, a transmitter/receiver, a
transceiver, or any other suitable communication device. Input
device 716 can be a computer keyboard, a mouse, a touchscreen, a
microphone, and/or any other suitable input device. Display 714 can
be a touchscreen, a flat-panel display, a cathode ray tube display,
a projector, a speaker or speakers, and/or any other suitable
display and/or presentation devices on which videos and/or
animations can be presented.
[0075] Server 602 can include a hardware processor 722, a display
724, an input device 726, and memory 728, which can be
interconnected. In some embodiments, memory 728 can include a
storage device for storing data received through communications
link 604 or through other links, and can also receive commands and
values transmitted by one or more users. The storage device can
further include a server program for controlling hardware processor
722. For example, the server program can specify one or more
techniques by which videos, metadata, search results, and/or any
other suitable information are to be determined and/or
presented.
[0076] The mechanisms described herein for presenting interstitial
animations can be implemented in user devices 608 as software,
firmware, hardware, or any suitable combination thereof.
[0077] In some embodiments, server 602 can be implemented in one
server or can be distributed as any suitable number of servers. For
example, multiple servers 602 can be implemented in various
locations to increase reliability and/or increase the speed at
which the server can communicate with user devices 608.
[0078] It should be understood that at least some of the above
described blocks of the processes of FIGS. 1, 2, and 3 can be
executed or performed in any order or sequence not limited to the
order and sequence shown in and described in the figures. Also,
some of the above blocks of FIGS. 1, 2, and 3 can be executed or
performed substantially simultaneously where appropriate or in
parallel to reduce latency and processing times. Additionally or
alternatively, some of the above described blocks of processes of
FIGS. 1, 2, and 3 can be omitted.
[0079] In some embodiments, any suitable computer readable media
can be used for storing instructions for performing the functions
and/or processes herein. For example, in some embodiments, computer
readable media can be transitory or non-transitory. For example,
non-transitory computer readable media can include media such as
magnetic media (such as hard disks, floppy disks, and/or any other
suitable magnetic media), optical media (such as compact discs,
digital video discs, Blu-ray discs, and/or any other suitable
optical media), semiconductor media (such as flash memory,
electrically programmable read-only memory (EPROM), electrically
erasable programmable read-only memory (EEPROM), and/or any other
suitable semiconductor media), any suitable media that is not
fleeting or devoid of any semblance of permanence during
transmission, and/or any suitable tangible media. As another
example, transitory computer readable media can include signals on
networks, in wires, conductors, optical fibers, circuits, any
suitable media that is fleeting and devoid of any semblance of
permanence during transmission, and/or any suitable intangible
media.
[0080] In situations in which the systems described here collect
personal information about users, or make use of personal
information, the users may be provided with an opportunity to
control whether programs or features collect user information
(e.g., information about a user's social network, social actions or
activities, profession, a user's preferences, or a user's current
location). In addition, certain data may be treated in one or more
ways before it is stored or used, so that personally identifiable
information is removed. For example, a user's identity may be
treated so that no personally identifiable information can be
determined for the user, or a user's geographic location may be
generalized where location information is obtained (such as to a
city, ZIP code, or state level), so that a particular location of a
user cannot be determined. Thus, the user may have control over how
information is collected about the user and used by a content
server.
[0081] Accordingly, methods, systems, and media for presenting
interstitial animations are provided.
[0082] Although the invention has been described and illustrated in
the foregoing illustrative embodiments, it is understood that the
present disclosure has been made only by way of example, and that
numerous changes in the details of implementation of the invention
can be made without departing from the spirit and scope of the
invention, which is limited only by the claims that follow.
Features of the disclosed embodiments can be combined and
rearranged in various ways.
* * * * *