1. Technical Field
This disclosure generally relates to streaming media to a user device, and more specifically relates to automatically caching streaming media to multiple user devices in response to a bookmark event.
2. Background Art
Consumer use of local networks such as home networks continues to increase. The consumer increasingly desires constant availability of media content on these networks. There are typically multiple devices within the same home that are capable of playing/displaying the same type of content. For example, one can watch an online video on a desktop computer, laptop, tablet computer, a phone or on the TV using a game console, DVD player or other media device. Similarly, one can listen to music either on the computer, a media player or on a dedicated internet-radio box. Each of these devices is capable of downloading content from the interact and playing it, often through a home Wi-Fi network. The content may also be played from in-home devices (e.g., a Digital Living Network Alliance (DLNA) media-player or an MP3 repository).
Generally, when a user device such as described above plays or displays content, the content is downloaded from a service provider over the Internet to that specific device. The media may be cached ahead to some extent to insure uninterrupted play. When the user pauses or interrupts the stream in some way, some services will create a bookmark for the user to come back to the media at the bookmarked location.
The disclosure and claims herein provide a content streaming system that automatically caches media simultaneously to multiple user devices in response to a bookmark event to allow a user to subsequently play the automatically stored media on any of the multiple user devices. The content streaming system includes a streaming agent at the content provider that stores a bookmark. The content streaming system provides media content to multiple user devices that have a streaming client to accept the media content over a network.
The foregoing and other features and advantages will be apparent from the following more particular description, as illustrated in the accompanying drawings.
The disclosure will be described in conjunction with the appended drawings, where like designations denote like elements, and:
The disclosure and claims herein relate to a content streaming system that automatically caches media simultaneously to multiple user devices in response to a bookmark event to allow a user to subsequently play the automatically stored media on any of the multiple user devices. The content streaming system includes a streaming agent at the content provider that stores a bookmark. The content streaming system provides media content to multiple user devices that have a streaming client to accept the media content over a network.
Referring to
Main memory 120 preferably contains an operating system 121. Operating system 121 is a multitasking operating system known in the industry as IBM i; however, those skilled in the art will appreciate that the spirit and scope of this disclosure is not limited to any one operating system. The memory further includes data 122 and a user device streaming application 123 that includes a streaming client 124 and cached media content 125 as described further below.
Computer system 100 utilizes well known virtual addressing mechanisms that allow the programs of computer system 100 to behave as if they only have access to a large, single storage entity instead of access to multiple, smaller storage entities such as main memory 120 and DASD device 155. Therefore, while operating system 121, data 122, user device streaming application 123, the streaming client 124 and cached media content 125 are shown to reside in main memory 120, those skilled in the art will recognize that these items are not necessarily all completely contained in main memory 120 at the same time. It should also be noted that the term “memory” is used herein generically to refer to the entire virtual memory of computer system 100, and may include the virtual memory of other computer systems coupled to computer system 100.
Processor 110 may be constructed from one or more microprocessors and/or integrated circuits. Processor 110 executes program instructions stored in main memory 120. Main memory 120 stores programs and data that processor 110 may access. When computer system 100 starts up, processor 110 initially executes the program instructions that make up operating system 121 and later executes the program instructions that make up the user device streaming application 1238 and the streaming client 124.
Although computer system 100 is shown to contain only a single processor and a single system bus, those skilled in the art will appreciate that a content streaming system may be practiced using a computer system that has multiple processors and/or multiple buses. In addition, the interfaces that are used preferably each include separate, fully programmed microprocessors that are used to off-load compute-intensive processing from processor 110. However, those skilled in the art will appreciate that these functions may be performed using I/O adapters as well.
Display interface 140 is used to directly connect one or more displays 165 to computer system 100. These displays 165, which may be non-intelligent (i.e., dumb) terminals or fully programmable workstations, are used to provide system administrators and users the ability to communicate with computer system 100. Note, however, that while display interface 140 is provided to support communication with one or more displays 165, computer system 100 does not necessarily require a display 165, because all needed interaction with users and other processes may occur via network interface 150, e.g. web client based users.
Network interface 150 is used to connect computer system 100 to other computer systems or workstations 175 via network 170. Network interface 150 broadly represents any suitable way to interconnect electronic devices, regardless of whether the network 170 comprises present-day analog and/or digital techniques or via some networking mechanism of the future. In addition, many different network protocols can be used to implement a network. These protocols are specialized computer programs that allow computers to communicate across a network. TCP/IP (Transmission Control Protocol/Internet Protocol) is an example of a suitable network protocol.
As will be appreciated by one skilled in the art, aspects of this disclosure may be embodied as a system, method or computer program product. Accordingly, aspects may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a non-transitory computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Described herein is a content streaming system 200 that intelligently and automatically caches media simultaneously to multiple user devices in response to detecting a bookmark event. This intelligent and automatic caching enhances the user experience by allowing the user to subsequently play the automatically stored media on any device.
Again referring to
The user devices 218, 220, 222 may each represent a computer such as that shown in
The bookmark 214 shown in
Again referring to
Other actions of the user can be interpreted as a bookmark event by the streaming client 124 without purposeful action by the user to create the bookmark. For example, the streaming client 124 could use other capabilities available on the user device to detect when the user no longer is paying attention to the media content and use this determination as a bookmark event. These types of bookmark events could include detecting the user has physically moved away from the user device streaming media content. The detection of the physical movement of the user may include global positioning system (GPS) coordinates and tracking of the user's phone. For example, if the GPS coordinates of the user's phone indicates the user has moved some predetermined number of feet from the location of the user device playing the media content (such as a television or computer) then the streaming client determines that a bookmark event has occurred. Physical movement of the user may also be determined by loss of a Blue-tooth connection of a user device.
Again referring to
As introduced with reference to
As introduced above, media content is cached to multiple user devices on detection of a bookmark event. The media content is preferably automatically downloaded to other devices of the user. Alternatively, the user may be prompted whether to download the video content. Preferably, the media content is cached to each user device in an appropriate format for each user device. The format of the media content may be set in the user preferences. By caching partially consumed content on devices in different encodings, and taking up different amounts of space, the system can both optimize storage space, replay-ability (not limited to specific network connection as with above solutions), and user experience. Further, the media content can be lazily synched to the various user devices. Lazily synched means that the media content can be downloaded a low priority so as not to disturb other uses of network bandwidth.
Referring to
The disclosure and claims herein relate to a content streaming system that provides an improved user experience by automatically caching media simultaneously to multiple user devices in response to a bookmark event to allow a user to subsequently play the automatically stored media on any of the multiple user devices.
One skilled in the art will appreciate that many variations are possible within the scope of the claims. Thus, while the disclosure is particularly shown and described above, it will be understood by those skilled in the art that these and other changes in form and details may be made therein without departing from the spirit and scope of the claims.