Detailed Description
The present invention will be described in further detail with reference to the accompanying drawings and examples. It is to be understood that the specific embodiments described herein are merely illustrative of the invention and are not limiting of the invention. It should be further noted that, for the convenience of description, only some of the structures related to the present invention are shown in the drawings, not all of the structures.
Example one
Fig. 1 is a flowchart of a video carousel playing method according to an embodiment of the present invention, where the present embodiment is applicable to a situation where a live broadcast room alternately plays videos uploaded by a main broadcast. Optionally, the method may be applied in a case where the anchor may use a live broadcast room for live broadcast.
The method provided by the embodiment of the invention can be applied to the following scenes: the anchor can show real-time live video to each watching user in the live broadcast room, and the watching users can know the main playing content of the anchor in the live broadcast room and interact with the anchor and/or other watching users. In the prior art, a main broadcast can only broadcast live video in a live broadcast room, and when the main broadcast is not available, a watching user cannot watch the related video of the main broadcast in the live broadcast room. The method provided by the embodiment can push streams of the video to be carousel according to carousel information provided by the anchor broadcast, automatically adjust the carousel video list according to the carousel video condition of the live broadcast room, reasonably utilize resources of the live broadcast room, provide playing functions of other videos when the anchor broadcast is not on line, improve the flexibility of playing contents of the live broadcast room, and enable the video contents of the carousel to be more targeted.
As shown in fig. 1, the method of this embodiment specifically includes:
s110, when an adjustment request of a carousel playlist sent by a main broadcasting client is received, a carousel log is obtained; the carousel playlist is used for recording information of at least two carousel videos; the carousel log is used for recording event information of events occurring in a main broadcast live broadcast room in the playing process of each carousel video.
Specifically, the carousel playlist refers to a list generated by a video that is carousel by a main broadcaster in a live broadcast room, and may be set by the main broadcaster or automatically generated by the live broadcast room. If the anchor needs to automatically adjust the carousel playlist, an adjustment request may be sent to the live broadcast platform through the anchor client, where the adjustment request may include adjustment of a playing sequence of the carousel video and/or adjustment of content of the carousel video.
The carousel log is used for recording event information of a live broadcast room in the process of playing a carousel video, wherein the event may include start and stop time of the carousel, real-time viewing users of the live broadcast room, consumption conditions (such as types and numbers of virtual gifts) of the users in the live broadcast room, and the like.
S120, acquiring event information from the carousel log, wherein the event information at least comprises any one of the following items: the number of watching people of the carousel video, the playing time of the carousel video and the virtual gift information received by the anchor broadcast in the playing process of the carousel video.
Specifically, the number of watching people of the carousel video may be the number of users in a live broadcast room during the playing process of the carousel video, where the number of users is changed in real time, and an average value of the number of users of the carousel video in a playing time period may be calculated as the number of watching people. The playing duration of the carousel video may refer to a total duration of the carousel video. The virtual gift information refers to a type and a number of virtual gifts, and the type of virtual gift may be distinguished by an actual value of the virtual gift, for example, a virtual gift having a value of 100 virtual coins.
S130, sequencing the carousel videos according to the event information, and adjusting the carousel playlist according to the sequencing result.
Specifically, the event information in the playing process of each carousel video may be determined respectively by analyzing the event information in the carousel log, that is, the event information corresponding to each carousel video is obtained, each carousel video is evaluated according to the event information corresponding to each carousel video, and each carousel video is sorted according to the evaluation value of each carousel video.
For example, different information in the event information has different weights, so that the score of each carousel video is calculated based on the weight value corresponding to each information in the event information, each carousel video is sorted according to the score, and the carousel playlist is adjusted according to the sorting result. The specific adjustment manner is to use the sequence of the sorting result as the playing sequence of the carousel playlist, or may also be to remove videos with a rank lower than a set rank from the carousel playlist, and add videos with the same number as the removed videos from the video set uploaded by the alternative anchor.
In a specific embodiment, optionally, the sorting the carousel videos according to the event information may include: calculating the heat value of each carousel video according to the event information corresponding to each carousel video, and the weight of the number of the watching people, the weight of the playing time and the weight of the virtual gift information in the preset event information; and sequencing the carousel videos according to the heat value.
Specifically, different information in the event information of the event occurring during the playing process of each carousel video may be used to evaluate the popularity of the corresponding carousel video, where the popularity of the carousel video may be used to indicate the attention degree of the carousel video, for example, the higher the popularity is, the more popular the carousel video is. Therefore, different weights can be set for different information in the event information respectively, and the popularity of each carousel video is calculated.
The specific calculation mode of the heat value can be calculated by referring to the following formula:
H=a*x+b*y+c*z
wherein H is a heat value, and a, b and c are the weight of the number of people watching the video, the weight of the playing time length and the weight of the virtual gift information respectively; x, y and z are the number of people watching, the playing time and the virtual gift information, respectively. In a specific example, if the weight of the number of viewers is 0.3, the weight of the playing time is 0.1, the weight of the virtual gift information is 0.6, the number of viewers is 100, the playing time is 30, and the total amount of the virtual gift is 50, the corresponding heat value is 0.3 × 100+0.1 × 30+0.6 × 50 — 63.
In addition, the number of viewers, the playing time and the virtual gift information may not be specific values and may be represented by a ratio, for example, the playing time may refer to a ratio of the time of a certain carousel video to the total time of the carousel playlist.
It should be noted that the sorting result may be in an order from high degree of hotness to low degree of hotness, or in an order from low degree of hotness to high degree of hotness, and accordingly, the order of the carousel playlist may also be adjusted to an order from high degree of hotness to low degree of hotness, or in an order from low degree of hotness to high degree of hotness. In this regard, the embodiments of the present invention are not particularly limited.
By setting the weight of the information in the event information and calculating the popularity of each carousel video based on the weight, each carousel video can be accurately evaluated, and the carousel videos are sequenced according to the evaluation condition of the carousel videos, so that the carousel playlist is adjusted in a targeted manner.
Optionally, the adjusting the carousel playlist according to the sorting result may include: according to the sorting result, deleting the information of the carousel video lower than the set ranking from the carousel playlist; acquiring videos to be carousel except the carousel videos and relevant information of the videos to be carousel, wherein the relevant information at least comprises any one of the following items: the main broadcast receives virtual gift information when the browsing times of the video to be carousel, the type information of the video to be carousel and other clients display the playing page of the video to be carousel; determining the popularity of each video to be played in turn based on the browsing times and/or the virtual gift information; adding the information of the video to be carousel, which meets the set popularity condition and is matched with the deleted video type, into the carousel playlist to generate an adjusted carousel playlist; wherein the number of deleted videos is equal to the number of added videos.
Specifically, videos with low popularity are removed from the carousel playlist and replaced by other videos with high popularity uploaded to the live broadcast platform by the anchor, wherein popularity evaluation can be performed on each video to be carousel that meets the carousel condition. The set heat condition may be that the set heat threshold is exceeded or the set heat threshold is lowered, and the embodiment of the present invention is not limited specifically.
The carousel video with low popularity in the carousel playlist is replaced by the video to be carousel with high popularity, so that the popularity of the carousel playlist can be improved, and a user in a live broadcast room can better know the display content of the main broadcast.
And S140, pushing streams of the carousel videos according to the adjusted carousel playlist.
Specifically, the stream pushing may refer to a process of encapsulating the audio/video data by using a transmission protocol, generating stream data, and transmitting the stream data to the server. The method comprises the steps of pushing a carousel video stream, namely, a live broadcast platform server correspondingly generates the carousel video stream according to stored audio and video data, pushing the carousel video stream to a set stream pushing address, such as a set network server address, pulling the carousel video stream from the set stream pushing address by a client of each watching user in a live broadcast room, and displaying a page in the live broadcast room of the client to play the carousel video stream, wherein the stored audio and video data are the audio and video data which are received by the live broadcast platform server and uploaded by a main broadcast. The live broadcast video stream is pushed, actually, a live broadcast platform server acquires live audio and video data acquired by a client, performs data processing such as denoising and beautifying, generates a live broadcast video stream according to the audio and video data after the data processing, pushes the live broadcast video stream to a set stream pushing address, and realizes that a display page of a live broadcast room of the client plays the live broadcast video stream.
And generating a carousel video stream according to the video playing sequence of the adjusted carousel playlist, and performing stream pushing operation, so that the carousel video in the carousel playlist is played in a live broadcast room according to the sequence of the example table.
According to the embodiment of the invention, the carousel videos are sequenced according to the event information of the events occurring in the main broadcast room during the playing process of the carousel videos, and the carousel playlist is adjusted according to the sequencing result, so that the carousel playlist can be automatically adjusted, the flexibility and diversity of the carousel contents are improved, and meanwhile, the carousel playlist is adjusted in a targeted manner, so that a watching user in the live broadcast room can quickly and timely know the condition of the main broadcast.
On the basis of the foregoing embodiment, optionally, after sorting each carousel video according to event information, before adjusting the carousel playlist according to a sorting result, the method may further include: determining the starting time and the ending time of playing of each carousel video in the carousel playlist, and determining the time period for playing each carousel video according to the starting time and the ending time; determining the corresponding relation between the number of historical online users and the time period; determining the number of historical online users in the time period for playing each carousel video according to the corresponding relation; and revising the sequencing result according to the historical online user number in the time period for playing each carousel video.
Specifically, the start time and the end time of the carousel video playing may be determined according to the start time of playing the carousel playlist and the duration of each carousel video. For example, the start time of playing the carousel playlist is 10 o ' clock, and the duration of the first carousel video in the playing sequence in the carousel playlist is half an hour, then the start time of the first carousel video is 10 o ' clock, and the end time is 10 o ' clock.
Further, based on the start time and the end time, the time period of the carousel video playing may be determined, as in the previous example, the time period of the first carousel video playing is 10 to 10-point and a half.
The corresponding relation between the number of the historical online users and the time period is counted by the live broadcast platform based on historical events, for example, the time period with the maximum number of people in one day is from 7 to 9 points at night, and the number of people can be 100 ten thousand for example; the time period from 2 to 4 am is the time period with the minimum number of people in one day, for example, the number of people can be 1 ten thousand.
According to the time period of playing the carousel videos, the number of the historical online users corresponding to the time period of playing the carousel videos can be determined. In order to make the live broadcast room attractive to more users for viewing, the carousel video with the highest popularity can be scheduled to be played in a time period with the largest number of historical online users. Therefore, the sequencing result can be adjusted to be the sequence matched with both the number and the popularity of the historical online users based on the number of the historical online users, so that the popularity of the carousel content can be met by matching the video popularity in the carousel playlist with the number of the historical online users, and the popularity of the carousel content can be improved.
Example two
Fig. 2 is a flowchart of a video carousel playing method according to a second embodiment of the present invention, which is embodied on the basis of the foregoing embodiment, and in this embodiment, streaming is performed on each carousel video according to an adjusted carousel playlist, specifically: according to the storage address of each carousel video, generating a carousel video stream from each carousel video according to the adjusted playing sequence in the carousel playlist, and pushing the stream to a target address; providing a target address and a push flow address as calling parameters to a push flow service platform so that the push flow service platform obtains the carousel video stream according to the target address; and calling a push streaming service interface on the push streaming service platform to push the carousel video stream to the push streaming address, wherein the push streaming address is used for prompting a client of a user in the anchor live broadcast room to capture the carousel video stream from the push streaming address and play the carousel video stream in a playing page.
Correspondingly, the method of the embodiment may include:
s210, when receiving an adjustment request of a carousel playlist sent by a main broadcasting client, acquiring a carousel log; the carousel playlist is used for recording information of at least two carousel videos; the carousel log is used for recording event information of events occurring in a main broadcast live broadcast room in the playing process of each carousel video.
S220, obtaining event information from the carousel log, wherein the event information at least comprises any one of the following items: the number of watching people of the carousel video, the playing time of the carousel video and the virtual gift information received by the anchor broadcast in the playing process of the carousel video.
And S230, sequencing each carousel video according to the event information, and adjusting the carousel playlist according to the sequencing result.
It should be noted that, the carousel playlist, the carousel log, the event information, the carousel video, and the like may refer to the description of the above embodiments.
And S240, generating carousel video streams from the carousel videos according to the storage addresses of the carousel videos and the playing sequence in the adjusted carousel playlist, and pushing the carousel video streams to the target address.
In this embodiment, the carousel video stream or the live video stream generated by the live platform server may be pushed to a new push stream address different from the originally set push stream address through a third-party platform, and then the client of each user pulls the carousel video stream from the new push stream address to play. The target address may refer to an address where the stream pushing service platform acquires the carousel video stream, that is, the new stream pushing address. A video stream may refer to a form of video for streaming.
And S250, providing the target address and the stream pushing address as calling parameters to a stream pushing service platform so that the stream pushing service platform obtains the carousel video stream according to the target address.
Specifically, the push streaming service platform may refer to a server other than the server that implements the method described in this embodiment. It should be noted that the server generates a video stream according to the video to be carousel, specifically, decodes the video to be carousel, and pushes the generated video stream to a set stream address, then the push streaming service platform obtains the video stream from the set stream address and pushes the video stream to the push streaming address, and the client of the user pulls the video stream from the push streaming address and displays the video stream in the live broadcast room page displayed by the client.
And S260, calling a stream pushing service interface on the stream pushing service platform to push the carousel video stream to the stream pushing address, wherein the stream pushing address is used for prompting a client of a user in the main broadcast live broadcast room to capture the carousel video stream from the stream pushing address and play the carousel video stream in a playing page.
In this embodiment, the push streaming service interface refers to a software interface provided by a third-party server (e.g., a web-hosting service platform) for the push streaming function.
The embodiment of the invention realizes stream pushing through the third-party platform, and can enable the video stream to be transmitted in the network more stably, thereby improving the playing stability and the playing quality of the video to be played in turn.
On the basis of the foregoing embodiment, optionally, before obtaining a carousel log corresponding to a carousel playlist when an adjustment request of the carousel playlist corresponding to a main broadcast live broadcast is received, the method may further include: receiving callback information through a callback interface; wherein the callback information includes: time information, anchor live broadcast room identification information, current watching number of people and current virtual gift information received by the anchor; and recording the callback information to a carousel log.
Specifically, the callback interface is provided by the live broadcast platform, and when the push streaming service platform completes the push streaming service, the callback interface is called to feed back the push streaming information to the live broadcast platform. In this embodiment, one carousel log may have a carousel condition for a period of time, that is, the carousel log includes carousel conditions of multiple live broadcast rooms, and when the carousel condition of a certain live broadcast room is obtained from the carousel log, it needs to be determined through identification information or other information of the live broadcast room. Therefore, when the carousel log is stored, identification information needs to be added to carousel information of different live rooms. Specifically, the push streaming service platform is informed in advance that corresponding identification information needs to be added to the fed-back carousel information when a callback interface provided by the live broadcast platform is called. Therefore, when the push streaming service platform calls the callback interface, the feedback callback information comprises time information, the identification information of the anchor live broadcast room, the current watching number, the current virtual gift information received by the anchor and other identification information. Therefore, the push streaming service platform can directly store the callback information into the carousel log for subsequent search.
On the basis of the foregoing embodiment, optionally, after the streaming of each carousel video according to the adjusted carousel playlist, the method may further include: receiving the push flow feedback information fed back by the push flow service interface; and when the stream pushing feedback message is a stream pushing failure feedback message, removing the related information of the current carousel video of the stream pushing from the carousel play list, and removing the target event information recorded in the carousel log, wherein the target event information is event information of an event occurring in a main broadcast live broadcast room in the process of playing the current carousel video.
Specifically, in the carousel process, stream pushing of the carousel video may fail, which may be caused by reasons such as failure of transcoding of the video stream or absence of a carousel video source, and at this time, the related information of the carousel video may be removed from the carousel playlist, and meanwhile, the related event information of the carousel video is correspondingly deleted in the carousel log, so that the storage space is released, and waste of storage resources is avoided.
EXAMPLE III
Fig. 3 is a schematic diagram of a video carousel playing device according to a third embodiment of the present invention. The third embodiment is a corresponding device for implementing the video carousel playing method provided by the above embodiment of the present invention.
The carousel log obtaining module 310 is configured to obtain a carousel log when receiving an adjustment request of a carousel playlist sent by a main broadcast client; the carousel playlist is used for recording information of at least two carousel videos; the carousel log is used for recording event information of events occurring in a main broadcast live broadcast room in the playing process of each carousel video
An event information obtaining module 320, configured to obtain event information from the carousel log, where the event information at least includes any one of the following: the number of watching people of the carousel video, the playing time of the carousel video and the virtual gift information received by the anchor broadcast in the playing process of the carousel video;
a playlist adjusting module 330, configured to sort each carousel video according to event information, and adjust the carousel playlist according to a sorting result;
and the video stream pushing module 340 is configured to push streams of the carousel videos according to the adjusted carousel playlist.
According to the embodiment of the invention, the carousel videos are sequenced according to the event information of the events occurring in the main broadcast room during the playing process of the carousel videos, and the carousel playlist is adjusted according to the sequencing result, so that the carousel playlist can be automatically adjusted, the flexibility and diversity of the carousel contents are improved, and meanwhile, the carousel playlist is adjusted in a targeted manner, so that a watching user in the live broadcast room can quickly and timely know the condition of the main broadcast.
Further, the apparatus is specifically configured to: determining the starting time and the ending time of playing of each carousel video in the carousel playlist, and determining the time period for playing each carousel video according to the starting time and the ending time; determining the corresponding relation between the number of historical online users and the time period; determining the number of historical online users in the time period for playing each carousel video according to the corresponding relation; and revising the sequencing result according to the historical online user number in the time period for playing each carousel video.
Further, the playlist adjusting module 330 is configured to: according to the sorting result, deleting the information of the carousel video lower than the set ranking from the carousel playlist; acquiring videos to be carousel except the carousel videos and relevant information of the videos to be carousel, wherein the relevant information at least comprises any one of the following items: the main broadcast receives virtual gift information when the browsing times of the video to be carousel, the type information of the video to be carousel and other clients display the playing page of the video to be carousel; determining the popularity of each video to be played in turn based on the browsing times and/or the virtual gift information; adding the information of the video to be carousel, which meets the set popularity condition and is matched with the deleted video type, into the carousel playlist to generate an adjusted carousel playlist; wherein the number of deleted videos is equal to the number of added videos.
Further, the playlist adjusting module 330 is configured to: calculating the heat value of each carousel video according to the event information corresponding to each carousel video, and the weight of the number of the watching people, the weight of the playing time and the weight of the virtual gift information in the preset event information; and sequencing the carousel videos according to the heat value.
Further, the video stream pushing module 340 is configured to: according to the storage address of each carousel video, generating a carousel video stream from each carousel video according to the adjusted playing sequence in the carousel playlist, and pushing the stream to a target address; providing a target address and a push flow address as calling parameters to a push flow service platform so that the push flow service platform obtains the carousel video stream according to the target address; and calling a push streaming service interface on the push streaming service platform to push the carousel video stream to the push streaming address, wherein the push streaming address is used for prompting a client of a user in the anchor live broadcast room to capture the carousel video stream from the push streaming address and play the carousel video stream in a playing page.
Further, the apparatus is specifically configured to: receiving callback information through a callback interface; wherein the callback information includes: time information, anchor live broadcast room identification information, current watching number of people and current virtual gift information received by the anchor; and recording the callback information to a carousel log.
Further, the apparatus is specifically configured to: receiving the push flow feedback information fed back by the push flow service interface; and when the stream pushing feedback message is a stream pushing failure feedback message, removing the related information of the current carousel video of the stream pushing from the carousel play list, and removing the target event information recorded in the carousel log, wherein the target event information is event information of an event occurring in a main broadcast live broadcast room in the process of playing the current carousel video.
The video carousel playing device can execute the video carousel playing method provided by any embodiment of the invention, and has the corresponding functional modules and beneficial effects of the executed video carousel playing method.
Example four
Fig. 4 is a schematic structural diagram of a computer device according to a fourth embodiment of the present invention. FIG. 4 illustrates a block diagram of an exemplary computer device 412 suitable for use in implementing embodiments of the present invention. The computer device 412 shown in FIG. 4 is only one example and should not impose any limitations on the functionality or scope of use of embodiments of the present invention.
As shown in FIG. 4, computer device 412 is in the form of a general purpose computing device. Components of computer device 412 may include, but are not limited to: one or more processors or processing units 416, a system memory 428, and a bus 418 that couples the various system components including the system memory 428 and the processing unit 416.
Bus 418 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures include, but are not limited to, an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an enhanced ISA bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.
Computer device 412 typically includes a variety of computer system readable media. Such media can be any available media that is accessible by computer device 412 and includes both volatile and nonvolatile media, removable and non-removable media.
The system memory 428 may include computer system readable media in the form of volatile memory, such as Random Access Memory (RAM)430 and/or cache memory 432. The computer device 412 may further include other removable/non-removable, volatile/nonvolatile computer system storage media. By way of example only, storage system 434 may be used to read from and write to non-removable, nonvolatile magnetic media (not shown in FIG. 4, commonly referred to as a "hard drive"). Although not shown in FIG. 4, a magnetic disk drive for reading from and writing to a removable, nonvolatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from or writing to a removable, nonvolatile optical disk (e.g., a Compact disk Read-Only Memory (CD-ROM), Digital Video disk (DVD-ROM), or other optical media) may be provided. In these cases, each drive may be connected to bus 418 by one or more data media interfaces. Memory 428 can include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
A program/utility 440 having a set (at least one) of program modules 442 may be stored, for instance, in memory 428, such program modules 442 including, but not limited to, an operating system, one or more application programs, other program modules, and program data, each of which examples or some combination thereof may comprise an implementation of a network environment. The program modules 442 generally perform the functions and/or methodologies of the described embodiments of the invention.
The computer device 412 may also communicate with one or more external devices 414 (e.g., keyboard, pointing device, display 424, etc.), with one or more devices that enable a user to interact with the computer device 412, and/or with any devices (e.g., network card, modem, etc.) that enable the computer device 412 to communicate with one or more other computing devices. Such communication may be through an Input/Output (I/O) interface 422. Further, computer device 412 may also communicate with one or more networks (e.g., Local Area Network (LAN), Wide Area Network (WAN)) through Network adapter 420 As shown, Network adapter 420 communicates with other modules of computer device 412 through bus 418, it should be understood that although not shown in FIG. 4, other hardware and/or software modules may be used in conjunction with computer device 412, including without limitation, microcode, device drivers, Redundant processing units, external disk drive Arrays, Redundant Arrays of Inesponsive Disks, RAID systems, tape drives, data backup storage systems, and the like.
The processing unit 416 executes various functional applications and data processing by executing programs stored in the system memory 428, for example, to implement a video carousel playing method provided by the embodiment of the present invention.
That is, the processing unit implements, when executing the program: when an adjustment request of a carousel playlist sent by a main broadcast client is received, acquiring a carousel log; the carousel playlist is used for recording information of at least two carousel videos; the carousel log is used for recording event information of events occurring in a main broadcast live broadcast room in the playing process of each carousel video; acquiring event information from the carousel log, wherein the event information at least comprises any one of the following items: the number of watching people of the carousel video, the playing time of the carousel video and the virtual gift information received by the anchor broadcast in the playing process of the carousel video; sequencing each carousel video according to event information, and adjusting the carousel playlist according to a sequencing result; and pushing the stream of each carousel video according to the adjusted carousel playlist.
EXAMPLE five
An embodiment five of the present invention provides a computer-readable storage medium, on which a computer program is stored, where the computer program, when executed by a processor, implements the video carousel playing method provided in all the inventive embodiments of the present application:
that is, the program when executed by the processor implements: when an adjustment request of a carousel playlist sent by a main broadcast client is received, acquiring a carousel log; the carousel playlist is used for recording information of at least two carousel videos; the carousel log is used for recording event information of events occurring in a main broadcast live broadcast room in the playing process of each carousel video; acquiring event information from the carousel log, wherein the event information at least comprises any one of the following items: the number of watching people of the carousel video, the playing time of the carousel video and the virtual gift information received by the anchor broadcast in the playing process of the carousel video; sequencing each carousel video according to event information, and adjusting the carousel playlist according to a sequencing result; and pushing the stream of each carousel video according to the adjusted carousel playlist.
Computer storage media for embodiments of the invention may employ any combination of one or more computer-readable media. The computer readable medium may be a computer readable signal medium or a 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 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 RAM, a Read-Only Memory (ROM), an Erasable Programmable Read-Only Memory (EPROM), a flash Memory, an optical fiber, a portable 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 data 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 also 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, Radio Frequency (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 case of a remote computer, the remote computer may be connected to the user's computer through any type of network, including a LAN or a WAN, or the connection may be made to an external computer (for example, through the Internet using an Internet service provider).
It is to be noted that the foregoing is only illustrative of the preferred embodiments of the present invention and the technical principles employed. It will be understood by those skilled in the art that the present invention is not limited to the particular embodiments described herein, but is capable of various obvious changes, rearrangements and substitutions as will now become apparent to those skilled in the art without departing from the scope of the invention. Therefore, although the present invention has been described in greater detail by the above embodiments, the present invention is not limited to the above embodiments, and may include other equivalent embodiments without departing from the spirit of the present invention, and the scope of the present invention is determined by the scope of the appended claims.