Method and apparatus for viewing and filtering media content

Embodiments of the present invention relate to viewing and filtering media content. In one embodiment, the invention is a system for networking based redirecting of content, including but not limited to, media files, electronic documents, application data, on-demand data, and live-streamed data. The system includes at least one content delivery network (CDN) comprising a processor, memory to store data used by a processor, where the system includes more than one encoder server capable of sending more than one bit rate for a channel to an anchor server, where the anchor server determines which ingestion server to send content to, and where the channel content bit rate sent to a user device is dependent upon the user device internet bandwidth.

BACKGROUND

Embodiments of the present invention relate to viewing and filtering media content.

Content delivery networks may provide content to end-users via an internet content delivery network (CDN). A CDN is a network of geographically distributed system of servers that arrange for efficient delivery of content on behalf of third party content providers. The provided content may include, but is not limited to, media files, electronic documents, application data, on-demand data, and live-streamed data, for example.

DETAILED DESCRIPTION

In addition, the embodiments of systems and methods described herein may be implemented in a variety of systems including, but not limited to, smartphones, tablets, laptops, and combinations of computing devices and cloud computing resources. For instance, portions of the operations may occur in one device, and other operations may occur at a remote location, such as a remote server or servers. For instance, the collection of the data may occur at a smartphone, and the data analysis may occur at a server or in a cloud computing resource. Any single computing device or combination of computing devices may execute the methods described.

Certain embodiments of the present invention relate to implementing a system for viewing and filtering media content. The content may be delivered via different media channels. A media channel may generally refer to physical or logical connection that is used to transmit a signal. The transmitted signal may be in the form of a digital or analog stream, for example. Different channels may transmit different types of content. With the introduction of a large number of different channels that are viewable by a user, the user may wish to filter the different channels in accordance with certain criteria that is specified by the user. By filtering the different channels, a user may more readily determine channels that are relevant to the user's interests, for example.

In view of the above, certain embodiments of the present invention may be directed to providing functionality that allows a user to perform channel filtering.FIG. 1illustrates an interface that allows users to filter data in accordance with different categories and sub-categories. Referring toFIG. 1, a user can choose multiple sub-categories (such as, for example, “Sports,” “Kids,” “General,” “News,” “Music,” etc.) within an overall category (such as, for example, “Genre”) in order to obtain the most relevant results. Referring to the example ofFIG. 1, other categories for filtering include “Language,” “Region,” and “Audience.” For example, a user may decide to filter a plurality of channels by seeking channels that are related to either sub-category “Sports”110or “Music”120. The user may also further filter the plurality of channels by the “Language” category150. For example, the user may seek channels that are viewable in different languages such as “Spanish” and “Portuguese,” for example. The user may further filter the plurality of channels by using a “Region” category160. By using the Region category160, the user may seek channels that originate from a continent, such as Europe or Africa, or a specific country, such as Mexico, Spain, and/or Brazil, for example. Other categories may be ratings (R, PG, G, NR) or user ratings on likeability (5 stars, 4 stars, 3 stars, etc.)

As described in more detail below, the plurality of channels may be filtered in accordance with the logical framework of categories and criteria. The filtered results may be channels that meet the following logical condition: (Category 1 [Sub Category 1ORSub Category 2ORSub Category 3 . . . ])AND(Category 2 [Sub Category 2ORSub Category 2ORSub Category 3 . . . ])AND(Category 3 [Sub Category 1ORSub Category 2ORSub Category 3 . . . ])AND. . .

For example, referring to the example ofFIG. 1, suppose the user selects sub-categories “Sports”110and “Music”120, within Category “Genre.” Suppose the user also selects sub-category “English” within Category “Language.” Suppose the user also selects sub-category “All” and “Children” within Category “Audience.” In this example, the filtered channels may comprise channels that meet the following logical condition: ([“Sports” OR “Music”] AND [“English”] AND [“All” OR “Children”]).

In addition, the user interface ofFIG. 1may also have an area for suggested results. If the user selects, for example, 3 filters for the channel or show category, then the software may suggest channels or shows using less categories, such has 2 of the 3 selected categories.

In view of the above, a user may perform in-depth filtering of media channels. Certain embodiments may provide an intuitive interface, such as the interface ofFIG. 1, that allows a user to filter media channels in accordance with a combination of criteria (such as categories and sub-categories), such that the filtered results may more accurately reflect the user's interests.

FIG. 2illustrates an interface200that enables a user to access various functionality, in accordance with certain embodiments. The functionality may allow a user to refer the application/service to a friend (“Refer a Friend”210), contact an administrator (“Contact Us”220), and/or log out of the application/service (“Logout”230), for example. By clicking button “Channel Preferences”250, a user may begin to filter channels as shown byFIG. 1. “Channel Preferences”250may also allow a user to choose the user's favorite channels to save within the user's account, as described in more detail below. The preferred channels of the user may then be displayed in an interface for the user, as described in more detail below.

In general, as described above, the user may filter desired channels out of a larger plurality of channels.FIG. 3illustrates an interface300that displays a plurality of channels to filter through, in accordance with certain embodiments. One can also have filtered results where the results are not a logo, but a live video. For instance, the user interface may contain the result of 9 channels, where the screen is divided into boxes, and shows live content from each of the 9 channels.

In addition, in one embodiment, a user may select a specific channel or show and forward a link to another user via text, SMS, email, facebook messenger, or the like. A user may also select a specific channel or show and forward a link containing a token to a non-user, where the user then is given a short time to view the channel or show.

FIG. 4illustrates an interface400that includes a channel guide410, in accordance with certain embodiments. Channel guide410lists a plurality of channels, and channel guide410may list the programming for each channel at various times (e.g., at 5 PM and at 6 PM). With certain embodiments, channels can be selected directly from the channel guide410(left panel) to be viewed by the user.

FIG. 5illustrates an interface500that allows a user to view content via a viewing window510, in accordance with certain embodiments. A user may view the various content from each of the various channels in a viewing portion/window510. Interface500also may include a listing of channels520that the user may access. Interface500may also include a “filter” icon530, which allows the user to filter channels, as illustrated by the functionality enabled byFIG. 1, as described above.

FIG. 6illustrates filtered results, in accordance with certain embodiments. As described with respect toFIG. 1, a user may select various categories/sub-categories to filter through a plurality of channels.FIG. 6illustrates a plurality of filter results650. These filter results650were yielded after a variety of categories/sub-categories were applied, as described above. With certain embodiments, channels can be selected and viewed directly from the filter-results screen.

FIG. 7illustrates an interface700that reflects certain customized channel preferences, in accordance with certain embodiments. Specifically, interface700may display a customized group750of channels in accordance with specified channel preferences. The customized group750of channels may be stored within the user account of the user, in order to enable easy viewing of the stored channels by the user, across multiple devices. The customized list750of channels may also be considered to be a customizable “favorites” panel, where a user may save a number of favorite channels for easier access.

FIG. 8illustrates a channel banner810that may be included in certain interfaces of embodiments of the present invention. The channel banner810may display the content of a variety of different channels, and the different times that the content is shown for each channel.

Certain embodiments may also provide a customizable interface that reports different statistics/measurements relating to the user's viewing experience. The different statistics/measurements that are reported may include, for example, the utilized bandwidth, the utilized resources, and/or any other usage reporting and statistics related to a user's viewing session.

Certain embodiments may be directed to customizable sub-accounts that may be granted to others who are associated with a user. For, example a user may customize a sub-account for the user's family members, friends, or other acquaintances. The created sub-accounts can include customized functionality and/or preferences that are different than the functionality/preferences of the main account of the user.

Additionally, certain embodiments may implement dynamic session management via a registration of devices, regardless of the type of device, as described in more detail below. The registration of different devices, regardless of the type of device, may generally be referred to as “agnostic registration.”FIG. 9illustrates a flow diagram of performing dynamic session management, in accordance with certain embodiments of the present invention.

Referring toFIG. 9, the dynamic session management may be configured to limit the number of active sessions that are using the service to a maximum of NMAXsessions, at any given time. In other words, for a given user account, at a given time, a user may only have NMAXactive sessions across the different devices of the user (e.g., a computer of the user, a television of the user, a tablet of the user, a mobile phone of the user, etc.). As such, a processor is operative to receive and authenticate the user's login information for the creation of a new session, certain embodiments of the present invention will check how many active sessions there currently are. In the example ofFIG. 9, there may be “N” active sessions. Therefore, certain embodiments of the present invention will compare the “N” active sessions to determine whether or not the “N” active sessions has exceeded the maximum NMAXnumber of sessions.

As illustrated inFIG. 9, when a login is initiated by a user, a processor is operative to instruct the user to enter authentication information which is unique to the user (email, phone number, password, and the like) and the processor is operative to compare the login information to the user account to authenticate the user901. If the login information is correct, then the processor is operative to allow the user to obtain access to their account902. The processor software program then checks the number of active sessions associated with the user account903. If the number of active sessions (“N”) has exceeded NMAX, then certain embodiments will display a list of the active sessions to the user904. The list of active sessions may include the list of devices current logged into the user account. The user may then delete a previously active session in order to activate a new active session905. Alternatively, in one embodiment, a previously active session is automatically closed, where the automatically closed session may be the oldest (first logged in) session, or may be randomly selected. A new user session (representing the current new session) is then initiated906and added to the “N” active session information, and a new media interface is initiated907. If the number of active sessions (“N”) is less than NMAX, then N+1 is inserted in the user session906, and a new media interface is initiated907. When the user has finished accessing the account and a media interface has been closed, i.e., the user has logged out, the user_session N+1 is deleted from the queue of media interface existing sessions909. The software logic ofFIG. 9is active or stateful, meaning that this process is iterative

Certain embodiments of the present invention may be directed to implementing features on back-end systems.

FIG. 10illustrates a system1000including a content management system1020and a customer record database1030, in accordance with certain embodiments of the present invention. The system1000may be used by various user devices1010, for example. The user device1010may be mobile computing devices such as, for example, Android™ devices and/or Apple™ devices. Communication flows1040-1090occur between the system1000and each of user devices1010. For clarity, user device1010may engage in all communication flows1040-1090with the system1000. System1000may include a content management system (CMS)1020and/or a customer record database1030. CMS1020may store content such as, for example, the channels of different packages. Further, CMS1020may store content such as images for displaying the channels on the user interfaces, lineups for different channels, advertisements, and/or Uniform Resource Locator (URLs) for each of the channels.

Each user device1010may initiate a login, which includes performing each of the communication flows1040-1090. With regard to communication flow1040, the user device may provide user authentication information to the customer record database1030. Next, with communication flow1050, the customer record database1030may provide package information to the user device1010. The package information may include, for example, information that indicates the type of service package that the user has subscribed to. Next, with communication flow1060, the user device requests metadata regarding the content that is to be displayed on the user interfaces for the user (where the user interfaces may correspond to the user interfaces shown inFIGS. 1-8). The metadata is sent via communication flow1070to the user device1010may assist the user interfaces in presenting the correct data for each of the displayed channels upon the user interfaces. Next, with communication flow1080, the user device may request a channel URL (which may or may not be tokenized) from a Content Delivery Network (CDN) (1010, where the CDN is illustrated inFIG. 11). Finally, with communication flow1090, the user device may receive the media content from the CDN.

Certain embodiments may utilize multiple CDNs. By utilizing multiple CDNs, certain embodiments may perform active switching between the different CDNs. By performing such active switching, certain embodiments may perform superior live streaming for better streaming availability and reliability. For example, certain embodiments may have the ability to use multiple different CDNs (e.g., an Akamai™ CDN and/or an L-3™ CDN, for example). In addition, the content delivery network (CDN) may alternatively be multiple servers designed to serve video or other content from content publishers to the end users. Note that the CDN may be servers in one location, or may be distributed on a cloud.

FIG. 11illustrates a system that includes at least one CDN1110, in accordance with certain embodiments. As described above, once a user connects with a load balancer agent. A load balancer can monitor internet traffic among devices and servers in a system, and manage rules for allocating server resources for the various devices in a system. The load balancer can offload traffic to other servers in a CDN depending upon the specific conditions at that time, such as bandwidth, content streaming quality, and the like. The load balancer communicates with the CDN1110via communication flow1130and1140, CDN1110may direct the user to one or more edge servers1120. The CDN1110may direct the user device to an edge server based on information with regards to that edge server, such as the geographical location proximity to the user device, communication speed, and quality of video feed. Next, media content may be received by a receiver server1170via a satellite source1150and/or an internet protocol source1160, and the media content can then be delivered to the user device via CDN1110.

FIG. 12illustrates a system that can perform the function of signing up a user, in accordance with certain embodiments. With a first communication1220, a user may access a main website (1230, corresponding to the service) to sign up for the service. Next, the website1210communications with the customer records database1230, where a record for the new user is recorded in the database. Next, the customer records database1230sends information via communication1240to the billing system1250, where a record for the user may be created. The billing system1250sends information that the billing record is created to the customer service records database1230. Next, an account is created1260and a verification e-mail1270may be sent to the user. Next, the user may review the verification e-mail and respond to the verification e-mail. Finally, creation of the new customer account is completed.

FIG. 13illustrates a system for addressing a user concern, in accordance with certain embodiments. If a user1310has a concern/problem, the user1310may reach out to either a ticketing system1320to create a ticket to address the concern, or the user1310may reach out to a customer care agent (CCA)1330. Once the user1310reaches the CCA1330, CCA1330may still create a ticket at ticketing system1320. In the event that the CCA1330is unable to resolve the concerns of the user1310, the concerns may be forwarded to a network operation center engineer (NOC). In the event that the NOC cannot resolve the concern, then the concern may be forwarded to an operations engineer (OPS). Finally, in the event that the OPS is unable to resolve the concern, then the OPS may forward the concern to a subject matter expert.

Certain embodiments may be directed to a back end that uses multiple Electronic Programming Guide (EPG) metadata. In other words, certain embodiments allow multiple metadata sources to be used for each channel, allowing each channel to utilize the best possible channel programming information.

Certain embodiments may implement an analytics engine to collect and generate statistics regarding the users, while maintaining the anonymity of the users.

FIG. 14illustrates an apparatus in accordance with certain embodiments of the invention. In one embodiment, the apparatus can correspond to content management server, a customer record server, and/or a CDN, for example. Apparatus10can include a processor22for processing information and executing instructions or operations. Processor22can be any type of general or specific purpose processor. While a single processor22is shown inFIG. 14, multiple processors can be utilized according to other embodiments. Processor22can also include one or more of general-purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and processors based on a multi-core processor architecture, as examples.

Apparatus10can further include a memory14, coupled to processor22, for storing information and instructions that can be executed by processor22. Memory14can be one or more memories and of any type suitable to the local application environment, and can be implemented using any suitable volatile or nonvolatile data storage technology such as a semiconductor-based memory device, a magnetic memory device and system, an optical memory device and system, fixed memory, and removable memory. For example, memory14include any combination of random access memory (RAM), read only memory (ROM), static storage such as a magnetic or optical disk, or any other type of non-transitory machine or computer readable media. The instructions stored in memory14can include program instructions or computer program code that, when executed by processor22, enable the apparatus10to perform tasks as described herein.

Apparatus10can also include one or more antennas (not shown) for transmitting and receiving signals and/or data to and from apparatus10. Apparatus10can further include a transceiver28that modulates information on to a carrier waveform for transmission by the antenna(s) and demodulates information received via the antenna(s) for further processing by other elements of apparatus10. In other embodiments, transceiver28can be capable of transmitting and receiving signals or data directly.

Processor22can perform functions associated with the operation of apparatus10including, without limitation, precoding of antenna gain/phase parameters, encoding and decoding of individual bits forming a communication message, formatting of information, and overall control of the apparatus10, including processes related to management of communication resources.

In an embodiment, memory14can store software modules that provide functionality when executed by processor22. The modules can include an operating system15that provides operating system functionality for apparatus10. The memory can also store one or more functional modules18, such as an application or program, to provide additional functionality for apparatus10. The components of apparatus10can be implemented in hardware, or as any suitable combination of hardware and software.

The claimed invention also has numerous variations to accommodate customers. For instance, in one embodiment, the user device can stream the video content directly to a larger screen such as a computer screen, tablet, or TV via chromecast, cables (HDMI cable, displayport cable, and the like), wireless communication (Bluetooth, appletv, wifi)

In one embodiment, the user device1500logged into the account displays a user interface that includes a header bar1510that may display account access and possible alerts or messages. The user interface also contains at least one video content1520that plays the video, a playing now bar1530that may show the current channel, program, time and the like. The bar1530may also allow a user to toggle the channel or show as a favorite for the user. The user interface may also contain a content browser1540that illustrates channels and shows, where the user may search for content, rearrange the channels or shows. The content browser may display icon displays for live content, reminder icons for programs which air in the future, set reminders (10 minute reminder for a show), and show names and channel icon that change to that channel and play current live program. Here the user can swipe up, down, left and right to change the panel or see more content. The content bar1550may also show information such as channels, shows, search function icon and filter icon. Other variations of the content bar1550include an icon for DVR (recording show(s)) functionality.

In one embodiment, a user may add a reminder to a user calendar (including but not limited to Microsoft outlook, Google calendar, Apple calendar and the like) to watch a certain show. In this embodiment, upon locating a show of interest where the program airs in the future, the user may engage the set reminder icon. The reminder parameters (time in advance for reminder, method of reminder, and the like) may be set by the user. Engaging the set reminder icon may also result in a native dialogue pop up on the user interface, requesting access to the calendar to add a reminder on the calendar of the program viewing time.

FIG. 16illustrates one embodiment of the invention illustrating CDN balancing by use of redundant encoders. Both encoders1610(Enc1and Enc2) receives content from a satellite or IP address, and encodes it as necessary to send the content to the CDN, for instance encoding from analog to digital. The encoded content is sent to AS1and AS21620(anchor servers) which both communicate with Ing1and Ing21630(ingestion point) which communicate with the CDN. The CDN then directs the user device to an edge server based on information with regards to that edge server, such as the geographical location proximity to the user device, communication speed, and quality of video feed. If one encoder1610or anchor server1620goes down, or perhaps if a CDN1goes down, then the content will continue to be communicated to the user device by routing through the other CDN1640.

FIG. 17illustrates one embodiment of the invention illustrating CDN balancing, and illustrates how one encoder1710can communicate with two anchor servers AS1and AS21620. In this embodiment, if one AS11620is down, then the End17190will reroute the content to AS21720.

FIG. 18illustrates one embodiment of the invention illustrating CDN balancing by use of fully redundant encoders, anchor servers and CDN.

FIG. 19illustrates one embodiment of the invention illustrating a method and system for CDN balancing. The encoders (Enc1, Enc2, Enc3, Enc4)1910are each capable of sending more than one bit rate for a channel to a given anchor server (AS1, AS2, AS3, AS4, AS5)1920. There may be up to 3 or 4 screens coming from the encoder, each with a different quality, i.e., bit rate. For HD channel, the encoder is capable of sending, for instance, 4 channels from the encoder to anchor server, denoted by communication1,2,3and4in theFIG. 19. The AS server determines which ING point to send the content to, e.g., Primary ING1930or Secondary ING1940. The protocol takes the bandwidth for the user, i.e., if there is an issue with the bandwidth between the CDN and the user device, which can affect the content viewing. The edge server sends all screens for a given channel to a primary engine. The anchor server can optionally send the same screens to the secondary engine. If the CDN fails, then the secondary engine can take over.

The described features, advantages, and characteristics of the invention can be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages can be recognized in certain embodiments that may not be present in all embodiments of the invention. One having ordinary skill in the art will readily understand that the invention as discussed above may be practiced with steps in a different order, and/or with hardware elements in configurations which are different than those which are disclosed. Therefore, although the invention has been described based upon these preferred embodiments, it would be apparent to those of skill in the art that certain modifications, variations, and alternative constructions would be apparent, while remaining within the spirit and scope of the invention.