Recursive media player instantiation in a web browser

By using SIMID-specified files to dynamically instantiate media players within web browsers, the system addresses the limitations of proprietary SDKs, enabling secure and interactive video experiences with enhanced functionality across diverse devices.

WO2026006257A1PCT designated stage Publication Date: 2026-01-02VIDEOSTORM INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/034971
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-06-24
Filing Date
2025-06-24
Publication Date
2026-01-02

AI Technical Summary

Technical Problem

Existing content distribution models lack dynamic and interactive advertising capabilities, often requiring proprietary software development kits (SDKs) that are not natively supported by video players, necessitating additional downloads or limiting compatibility across devices.

Method used

A system and method for dynamically instantiating media players within a web browser using Secure Interactive Media Interface Definition (SIMID)-specified files, leveraging native browser language interpretation features to create modular and secure interactive experiences without relying on SDKs, add-ons, or libraries.

Benefits of technology

Enables flexible and secure interactive video experiences across various devices by allowing media players to act as 'ad servers', dynamically instantiating multiple players for conditional branching and enhanced functionality, improving security and compatibility.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025034971_02012026_PF_FP_ABST
    Figure US2025034971_02012026_PF_FP_ABST
Patent Text Reader

Abstract

A system and method of displaying audiovisual content on a computing device via a web browser, including retrieving a SIMID specified file from a server, the SIMID-specified file including executable code written in a browser-native language for modifying webpage elements. A first media player, instantiated within the web browser, executes the code in the SIMID-specified file, wherein the code is securely transmitted and interpreted exclusively using language interpretation features that are native to the web browser and without invoking any software development kit (SDK), add-on, or library download. Based on the executed code, a second media player is instantiated within the web browser, and configured to retrieve and display ancillary audiovisual content from a remote server independent of the primary audiovisual stream and irrespective of operation of the first media player.
Need to check novelty before this filing date? Find Prior Art

Description

RECURSIVE MEDIA PLAYER INSTANTIATION IN A WEB BROWSERCROSS-REFERENCE TO RELATED APPLICATION

[0001] This application is a non-provisional application deriving priority benefit from U.S. Provisional Patent Application No. 63 / 663,439, filed June 24, 2024 and titled “Recursive Media Player Instantiation In A Web Browser”, which is hereby incorporated by reference in its entirety.FIELD

[0002] This application relates to novel systems and methods for delivering video content accompanied by executable code to a viewer, and more specifically, for executing code within a native-supported browser player to support interactivity, and even to receive code from a first server and create the equivalent of a second server (and / or additional servers) operating on the client side, through arbitrarily / infinitely recursive media players.BACKGROUND

[0003] Many content distribution models depend on non-paying or non-premium viewers being subject to mandatory viewing of advertisements paid for by sponsors. Often, if the desired content is a video stream, that video stream is interleaved with clips depicting product advertisements or public service announcements from those sponsors. Even in the case of paying or premium viewers, viewers are occasionally subject to additional messaging such as notifications or previews of newly-released video content, forthcoming streaming events, additional services available, requests to declare whether they like the video content being watched and / or to rate it, other kinds of polls, etc. When sufficient time has passed or the clips end, the viewer is returned to the original video stream. Although the selection of which advertisements to play to which viewers may be individualized and targeted to maximize likelihood of converting an advertisement to a sale, the advertisements have not traditionally been dynamic or interactive.

[0004] In recent times, web browsers have begun providing functionality related to code execution in their native media players. As a result, the video file comprising an advertisement may be accompanied by JavaScript or other code, as specified by, for example, the Video Play er- Ad Interface Definition (VP AID) or Video Ad Serving Template (VAST) specifications. Smart televisions and other devices have begun to adopt the Advanced Television Systems Committee 3.0 (ATSC 3.0) standards, which similarly allow a broadcastto be accompanied by instructions for generating HTML elements within a web browser / renderer operating in conjunction with the display of the broadcast. It is known in the art that these technologies can be used to provide elements of interactivity, such as allowing clicking buttons to change what is displayed during an advertisement, opening a new browser tab with a webpage related to the advertisement, or even creating new HTML elements in a webpage to enable features such as shopping carts or polls.

[0005] Other interactive features have sometimes been introduced, enabled by proprietary software development kits (SDKs). These SDKs often have the drawback of not being natively supported by video players; at best, the viewer may be required to download an additional plugin or software to enable functionality, and at worst, the viewer may be using a device that is not compatible with or cannot download the software related to the SDK. Software techniques that rely exclusively on open-source and industry-supported specifications and protocols are more robust and easier to implement across a wide variety of user computing devices.

[0006] Consequently, there are advantages to developing new systems and methods for displaying video content. When video content is supplemented with JavaScript or other code, it can be used to increase flexibility and responsiveness of video streams, or of advertisements or other ancillary audiovisual content that periodically interrupts a primary video stream. Further, there is a need for interactive video platforms that do not rely on a display being compatible with a particular SDK, and do not require developing a custom application for each distinct viewing experience.SUMMARY

[0007] To meet the needs in the field by using these recently developed technologies, a system and method for displaying media to a human viewer, using dynamic instantiation of media players, are disclosed. The system and method generates a script to accompany an audiovisual file that, when executed by a first media player in a web browser, will instantiate a second media player in the web browser. The script uses exclusively language interpretation features that are native to the web browser and avoids the use of language interpretation features provided by any software development kit (SDK), add-on, or library downloaded by the web browser, prompted by an “include” or “require” statement. After generation of the script, the script is securely transmitted, in a Secure Interactive Media Interface Definition (SIMID)- specified file, to a computing device that provides the web browser, and the audiovisual content is displayed via the second media player.

[0008] This dynamic instantiation of media players will radically transform the functionality available on computing devices, including (but not limited to) smart televisions, desktop computers, laptops, smartphones, gaming consoles, and any other computing devices being used to display video content online. Rather than using a media player exclusively as a client to display static advertisements or other video content, a media player that dynamically instantiates another media player is capable of acting as an “ad server server” — a software module that allows for conditional branching to decide which of multiple possible media players will be instantiated, and which sources they will play their video content from. Even outside of the context of serving advertisements, the dynamic instantiation of media players by media players allows for a wide spectrum of useful functionality.

[0009] In one aspect of this disclosure, a computer-implemented method of displaying audiovisual content on a computing device via a web browser is disclosed. The method includes receiving at a web browser, running on a computing device, a primary audiovisual stream from a media server. A SIMID-specified file is retrieved, by the computing device, from a remote server distinct from the media server. The SIMID-specified file includes a reference to ancillary audiovisual content, and executable code written in a browser-native language for modifying webpage elements. A first media player, instantiated within the web browser, executes the executable code in the SIMID-specified file, wherein the executable code is securely transmitted and interpreted exclusively using language interpretation features that are native to the web browser and without invoking any software development kit (SDK), addon, or library download. Based on the executed code, a second media player is instantiated within the web browser, and configured to retrieve and display the ancillary audiovisual content from the remote server independent of the primary audiovisual stream and irrespective of operation of the first media player. The ancillary audiovisual content is displayed to a user of the computing device via the second media player.

[0010] In another aspect of this disclosure, a computer-implemented system is disclosed for displaying audiovisual content on a computing device. The system includes a first media player, running in a web browser on the computing device, configured to receive and display a primary audiovisual stream received from a media server. The first media player securely receives a SIMID-specified file from a remote server independent of the media server. The SIMID-specified file includes a reference to ancillary audiovisual content and executable code written in a browser-native language for modifying webpage elements. A second media player is instantiated in the web browser by the first media player upon execution of the SIMID-specified file. The second media player is configured to retrieve and display the ancillary audiovisual content from the remote server irrespective of operation of the first media player.

[0011] In another aspect of this disclosure, a computer-implemented method is disclosed for displaying audiovisual content on a computing device via a web browser. The method includes generating a script to accompany an audiovisual file that, when executed by a first media player in the web browser, will instantiate a second media player in the web browser, exclusively using language interpretation features that are native to the web browser and avoiding the use of language interpretation features provided by any software development kit, add-on, or library downloaded by the web browser, prompted by an “include” or “require” statement. T the script is transmitted in a SIMID-specified file to the computing device that provides the web browser, wherein, upon execution of the script, the first media player will instantiate the second media player in the web browser to display ancillary audiovisual content to a user of the computing device.BRIEF DESCRIPTION OF THE DRAWINGS

[0012] Other aspects, features and advantages will become more fully apparent from the following detailed description, the appended claims, and the accompanying drawings (provided solely for purposes of illustration without restricting the scope of any embodiment), of which:

[0013] FIG. 1 depicts a choice presented to a viewer on a user interface (UI) during an interruption to a video stream;

[0014] FIGS. 2A and 2B depict contrasting conceptual tree graphs of conventional video loading processes and of an improved video loading process according to this disclosure;

[0015] FIG. 3 depicts a high-level diagram of servers and transmitted code to make the interaction depicted in FIG. 1 possible using the improved video loading process depicted in FIG. 2B;

[0016] FIGS. 4A-4C depict a number of possible embodiments of the presently disclosed technology for novel purposes;

[0017] FIG. 5 depicts, in a simplified flowchart form, a method for serving interactive advertisements or other media content to a viewer; and

[0018] FIG. 6 depicts a computing device for performing a number of features described herein.DETAILED DESCRIPTION

[0019] FIG. 1 depicts a choice presented to a viewer during an interruption to a video stream on a computing device, such as (but not limited to) a smart television, desktop computer, laptop, smartphone, gaming console, and any other computing device being used to display video content online).

[0020] As a viewer uses a user interface 100 on a computing device to view content 110, the content may periodically pause to allow the display of a required ancillary audiovisual content (e.g., an advertisement, other media content, announcement, poll, etc. before resuming. Before that ancillary audiovisual content is played, multiple user interface options 105a, 105b, . . . etc. may be displayed to the viewer on the computing device and prompt a selection that will influence what ancillary audiovisual content is played. In the depicted example in FIG. 1, a first option 105a, if selected, will cause a single, interactive advertisement or other ancillary audiovisual content to be displayed to a user on the computing device for a specified time period (e.g., approximately 30 seconds, or any other specified time period). A second option 105b, if selected, will cause multiple non-interactive advertisements or other ancillary audiovisual content to be displayed sequentially on the computing device for a specified time period (e.g. , approximately 90 seconds, or any other specified time period).

[0021] These two alternative options could, in theory, be implemented in the prior art by a media player executing a single, lengthy script with numerous conditional branches, various commands to load videos from particular URLs, and various commands to instantiate HTML elements and provide interactive features to the viewer. However, such a complex script file is prone to numerous issues: namespace conflicts for the variables and elements being used, a complexity that makes automated generation of the code more difficult, pre-fetching / loading of unnecessary resources, and so on.

[0022] Instead, according to this disclosure and as further discussed below in relation to FIGS. 2A through 5, scripts are modularized and simplified by configuring the media player to receive a comparatively short, self-contained specified file. One example of such a file is a SIMID- specified file, defined by the Secure Interactive Media Interface Definition (SIMID) standard. SIMID is publicly available at (http s : / / i abtechl ab . com / standards / simi d / ) . The SIMID-specified file contains instructions to generate a simple user interface (UI) and, depending on the user input, to instantiate an entirely new media player in the browser — a first media player if the first option described above is selected, and a different, second media player if the secondoption described above is selected. The newly instantiated media player will itself request and receive a second SIMID-specified file, with which the original media player does not interact and of which the original media player is not necessarily even aware.

[0023] Although this discussion and further discussion below have referred to a SIMID- specified file, similar previously-mentioned specifications or technologies, such as VP AID, VAST, or ATSC 3.0, might be used instead wherever a SIMID-specific file(s) is / are mentioned. Regardless of the specific implementation method chosen, the critical necessity is the use of a technology that envisions an audiovisual stream being accompanied by software instructions that can be interpreted by web browsing software to modify HTML elements dynamically. The use of SIMID-specified files is particularly advantageous due to its modern, lightweight design that supports secure, sandboxed execution environments for interactive media logic. Unlike legacy approaches that may rely on plugins or third-party runtime libraries, utilization of SIMID-specified files leverage native browser language interpretation features — most notably JavaScript — without introducing dependencies that require downloads triggered by “include” or “require” statements. SIMID-specified files substantially reduce the potential for introducing untrusted or vulnerable code into the client environment. This constraint improves the security of the delivered code by limiting execution to well-defined browser-native capabilities, thereby mitigating the risks of code injection, privilege escalation, and other common attack vectors associated with third-party dependencies. As a result, use of SIMID-specified files enhance both the portability and trustworthiness of interactive audiovisual experiences across platforms.

[0024] FIGS. 2A and 2B depict contrasting conceptual tree graphs of a conventional video loading process (FIG. 2A) and of an improved video loading process (FIG. 2B) according to this disclosure.

[0025] Referring to FIG. 2A, in a conventional computing device 200, a media player 205 is instantiated to download and play one or more media files 210a, 210b, 210c, 21 Od, ... (e.g., an advertisement or other ancillary audiovisual content). In a simplest embodiment, a single such media file 210a is played before returning to the primary video stream. In a more complex embodiment, there may be conditional code allowing either a first media file 210a to be played or a second media file 210b to be played (based on viewer choice, targeting of a viewer profile, or other factors). More than one such media file 210a, 210b, 210c, 210d, ... may be played sequentially, until a predetermined number of such files or length of time has elapsed. Themedia files may even play infinitely, until some input by the user to “skip ad” or “return to show” is received.

[0026] The critical limitation, as depicted in FIG. 2A, is that no matter how many such files 210a, 210b, 210c, 21 Od, ... may be loaded by the media player 205, and how complicated the logic for deciding how many and which to show may be, each represents a leaf node in the graph, a node from which no further nodes may be extended. The tree graph of FIG. 2A may extend arbitrarily wide in its second level, but it will never be deeper than the second level.

[0027] In contrast, referring to FIG. 2A, in a novel implementation for displaying advertisement or other ancillary audiovisual content on a computing device 215, a first media player 220 may load not only media files 225 (e.g., advertisements or other ancillary audiovisual content), but also code capable of instantiating one or more second media players 230. That second media player 230 may itself instantiate a third media player 235 in addition to or instead of any media files. Although this tree structure, like the one depicted in FIG. 2A, may be extended infinitely wide at each level of depth, the novel data structure illustrated in FIG. 2B also lends itself to having three or more levels of depth (and, ultimately, any number of levels). Rather than a data structure that is constricted to being “a media player parent / root with exclusively media file children / leaves”, the data structure of FIG. 2B is more properly characterized as “a media player parent with generically-typed children, such that every child may either be a media file without children, or a media player that itself is a parent to more generic children.” The data structure of FIG. 2B is similar to a set of nesting dolls, but without the limitation that each doll may only contain one other doll, or that each doll must have the same functionality.

[0028] As a result, a far wider variety of topologies for this tree of relationships is possible, and various outcomes are possible that would not be possible in the original topology 200 of FIG. 2A, some of which are depicted in FIG. 4.

[0029] FIG. 3 depicts a high-level diagram of servers and transmitted code to make the interaction depicted in FIG. 1 possible using the improved video loading process depicted in FIG. 2B.

[0030] Referring to FIG. 3, when the viewer 300 requests a video stream to his or her computing device 305 from a media server 310, that video stream 315 is sent continuously to the computing device 305, except when punctuated by an advertisement or other ancillary audiovisual content provided in a SIMID-specified form 320. A SIMID-specified file willcontain not only the URL necessary to retrieve an advertisement or other ancillary audiovisual content 325 from a remote server 330 (e.g., advertising server) that need not be the same server as the media server 310; it also contains JavaScript or other code for modifying elements within the web browser 335 running on computing device 305.

[0031] An example JavaScript pseudocode is shown below, followed by an explanation of the pseudocode:"adParameters": {"poll": {"question": "Which feature do you like most?","options": ["Design", "Speed", "Security"],"submitEndpoint": "https: / / example.com / api / poll-response"}},"creativeData": {"scriptURL": "https: / / cdn.example.com / simid / poll-handler.js"»

[0032] The “adParameters” object defines a lightweight polling interaction to be rendered by the media player. This is a modular instruction that can be interpreted by a SIMID-compliant player without invoking external SDKs or plugins.

[0033] The “question” and “options” objects specify the user-facing content of the poll that will appear within the video playback environment. “Question” being what question is displayed and “options” displaying the potential options a viewer can make.

[0034] The “submitEndpoint” object is the server endpoint to which poll responses are POSTed.

[0035] Lastly, the “creativeData” and “scriptURL” objects point to a lightweight JavaScript file, written in a browser-native language (e.g., Vanilla JavaScript), that renders the poll user interface (UI) and handles messages passing between the media player and a remote server or other computing device via a SIMID application programming interface (API).

[0036] The JavaScript or other code instructions, in a typical embodiment, are interpreted not by the main process of the web browser 335 itself, but rather, are interpreted by the initial firstmedia player 340 that had been instantiated to play the video stream 315. Those instructions cause the first media player 340 to access the HTML elements structure for webpage and to create a new second media player 345, without any other JavaScript threads operating in the web browser 335 necessarily being aware of it. The second media player 345 is capable of creating a new third media player 350, continuing ad infinitum as necessary.

[0037] Each time a new media player 345, 350, ... etc. is instantiated, it is using a different SIMID-specified file 355, 360, ... etc. containing URLs and code that the original high level code 320 does not know in advance and of which it can remain completely agnostic to the contents, promoting modularity in code design and interactions. Further, because the SIMID and related standards, such as VAST and VP AID, are widely supported in modern web browsers, and use code such as JavaScript that is likewise widely supported, there is no need for proprietary SDKs, browser add-ons or extensions, software libraries and dependencies to download, and so on. The code need not contain an “include” statement or any other reference to something external to the code, save that it will instantiate a new media player, and then download code to be interpreted and executed by that media player. When many devices are taking a walled-garden approach to downloading and installing software and libraries, a system that has no external software dependencies and runs exclusively using native language interpretation features built into modern browsers and media players will have greater crossplatform compatibility and reach.

[0038] Effectively, rather than a static client that pulls information from a remote advertisement or other ancillary audiovisual content server, displays the advertisement or other ancillary audiovisual content, and ceases, it is possible to have a dynamic client choosing which media players to create and allowing them to pull their own content from remote servers, acting as a sort of client-side server, or a “server of servers”.Use Cases Enabled by the Present Disclosure

[0039] A number of novel and valuable functionalities are made possible by this nesting of media players. Some are depicted in FIGS. 4A-4C.

[0040] As previously mentioned, one advantage of a dynamically instantiated media player is that a first advertisement, other ancillary audiovisual content, or other interruption may be written in a generic, modular format. This format needs no prior knowledge of what files or elements will be loaded and displayed in the future — all that information will be in the SIMID-specified or similarly defined instructions to the second media player, transmitted after the second media player has been instantiated.

[0041] Because the first media player (340 in FIG. 3) will be agnostic as to contents to be loaded in the future, a privacy-minded developer may develop a media player that can honestly claim not to know what content a viewer is choosing to view after selecting an option in the user interface. Instead, the second media player (345 in FIG. 3) will be instantiated, will load information from the SIMID-specified instructions (355 in FIG. 3), and fetch and play content while being sandboxed away from the first media player (340 in FIG. 3).

[0042] At the other extreme of privacy considerations, technology for tracking advertisement or other ancillary audiovisual content views might be enhanced by using three media players, as depicted in FIG. 4A. A first, default media player 400 instantiates a second media player 405 that does not itself play content. Instead, the second media player 405 acts as an analogue to a tracking cookie; it makes an HTTP call to a server to report that it has been instantiated, and then instantiates a third media player 410 to actually display content.

[0043] Layering of media players can also provide an enhanced viewing experience. For example, referring to FIG. 4B, a second media player 415 may display an advertisement or other ancillary audiovisual content as a picture-in-picture 420 over the underlying video 425, still playing in the first media player 430. Similarly, an advertisement or other ancillary audiovisual content may be played side-by-side with desired content, or the advertisement or other ancillary audiovisual content may predominate while the desired content continues to play in the picture-in-picture. In this way, a viewer may be exposed to an advertisement or other ancillary audiovisual content to varying extents without completely interrupting the flow of the desired content.

[0044] For another example of layering, the use of partial transparency in simultaneously playing audiovisual files may have synergistic effects. Referring to FIG. 4C, second media player 435 may be used to load subtitles, translations, or other useful annotations that are not present in an original audiovisual file playing in the first media player 440. Rather than require the first media player 440 to know the URLs of any possible subtitle files for given media, the first media player 440 only needs to instantiate a second, more specialized media player 435 that can interact with the viewer and allow selection of language and other options. Similarly, when desired for legal or privacy reasons, a second media player 435 may play a mostlytransparent audiovisual file with some opaque portions that obscure or censor portions of an underlying audiovisual file.

[0045] Layering in media players can also permit various different functionalities to be used side-by-side. For example:• A first media player showing content from a home shopping channel could instantiate a second media player with interactive advertisements allowing a viewer to click items, add them to a cart, and actually complete a purchase by navigating to a merchant’s webpage.• A first media player showing content from a reality show, talent show, or game show could instantiate a second media player that displays content related to the contestants along with interactive polling / voting functionality to help viewers vote on which contestants should proceed to the next round. A first media player showing content from a game show that focuses on memory or analysis (e.g., Jeopardy, Wheel of Fortune, Who Wants to be a Millionaire?, etc.) could instantiate a second media player with interactive elements allowing viewers to enter their own answers to prompts and play against the contestants on the show.• A first media player showing content from an ongoing sports event could instantiate a second media player allowing viewers to view statistics, display instant replay footage, display footage from a different camera or vantage point, or research other information related to the sports event or its competitors.• A first media player showing an advertisement for a console video game or mobile game could instantiate a second media player in which a viewer is able to play a demo or scaled back analogue to the game being advertised.• A first media player showing content from a political debate, speech, town hall, or other political event could instantiate a second media player allowing viewers to express approval of candidates, platforms, issue positions, and so on, and to see in real time the responses of other viewers to the same polling questions.• A first media player showing a video stream — for example, a television episode or a livestream from a social media account — could instantiate a second media player allowing the input of comments, selection of reaction options, or other feedback and the viewing of that feedback from others in real time (if watching the stream for thefirst time) or synched to when others had previously provided feedback (if watching a previously viewable stream).

[0046] The fact that a media player can conditionally instantiate one of several possible media players also allows for branching behavior that may be advantageous. For example, a “choose your own adventure” story could be created without pre-loading all the media and options / branches at the time the story begins. Instead, only the first module of content is loaded, with additional modules being dynamically loaded in response to viewer-selections.

[0047] In some embodiments, code at a higher level (an earlier media player in the dependency chain) may declare functions that it does not intend to use directly, and act as an application programming interface (API) that code in later-instantiated media players can expect to be present and invoke methods of the API. By calling a function at the lower level during execution of code, the code executing in the higher media player may be able to act, and even to dynamically affect the entire system by closing existing media players and loading a new chain of children media players with different behavior.

[0048] Ultimately, the fact that a SIMID-specified or similar file allows for execution of arbitrary JavaScript or other code may enable all sorts of previously-unseen interactive functionality by displaying media, creating HTML elements within a browser window, generating HTTP requests to be acted on by a remote server, and receiving responses to those requests to act on further in the browser. The key distinction is that never before have these JavaScript commands been used to generate new media players arbitrarily and without necessarily having prior knowledge of what content such a media player will be playing or what code will be executed in parallel with the display of the content.

[0049] In a preferred embodiment, a user interface (UI) may be provided server-side for allowing creators of advertisements or other ancillary audiovisual content to specify what display and loading behaviors they would like an advertisement or other ancillary audiovisual content to have, and to automatically publish code that will accomplish common use cases such as those described above.

[0050] FIG. 5 depicts, in simplified flowchart form, a method for serving interactive advertisements or other ancillary audiovisual content to a viewer.

[0051] Referring to FIG. 5, at a first moment in time, a viewer requests a video stream from a server for local display on the viewer’s computing device (Step 500). The server transmits the video stream, and also incorporates JavaScript or other code according to the SIMID or asimilar open standard (Step 505), to be interpreted by a media player instantiated within a web browser. The incorporated code includes instructions that themselves instantiate a new media player, separate from the media player interpreting or executing the instructions (Step 510).

[0052] That new media player has two options (Step 515): it can either instantiate a further media player independent from the existing media players (back to Step 510), typically without actually playing a video file itself, or it can display a video file without instantiating a new media player (Step 520). Even though the video file may be augmented with JavaScript or other code that provides dynamic or interactive features while viewing the video, the iteration of media players will come to an end and the viewer will return to the original viewing experience prior to the interruption (Step 525).

[0053] When a new player is instantiated, this loop (Steps 510 and 515) is likely to only be repeated twice or thrice; nevertheless, it could, in theory, be repeated any arbitrary number of iterations, until hardware limits or memory allocation limits are reached.

[0054] Although the media player instantiation step is described above as instantiating a media player without also displaying a video in the instantiating player, that is not essential to the systems and methods disclosed herein. As mentioned in previous use cases, it is possible that in an alternative embodiment, any intermediate media player might both instantiate a new media player and itself play content at the same time.Computing technology in general

[0055] FIG. 6 is a high-level block diagram of a representative computing device that may be utilized to implement various features and processes described herein, for example, the functionality of the client device 305, media server 310, or advertisement or other ancillary audiovisual content server 330. The computing device may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types.

[0056] As shown in FIG. 6, the computing device is illustrated in the form of a special purpose computer system. The components of the computing device may include (but are not limited to) one or more processors or processing units 600, a system memory 610, and a bus 615 that couples various system components including memory 610 to processor 600.

[0057] Bus 615 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, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.

[0058] Processing unit(s) 600 may execute computer programs stored in memory 610. Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single computing device or multiple computing devices. Further, multiple processors 600 may be used.

[0059] The computing device typically includes a variety of computer system readable media. Such media may be any available media that is accessible by the computing device, and it includes both volatile and non-volatile media, removable and non-removable media.

[0060] System memory 610 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 620 and / or cache memory 630. The computing device may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, storage system 640 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically referred to as a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 615 by one or more data media interfaces. As will be further depicted and described below, memory 610 may 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 described in this disclosure.

[0061] Program / utility 650, having a set (at least one) of program modules 655, may be stored in memory 610 by way of example, and not limitation, as well as an operating system, one or more application software, other program modules, and program data. Each of the operatingsystem, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.

[0062] The computing device may also communicate with one or more external devices 670 such as a keyboard, a pointing device, a display, etc. one or more devices that enable a user to interact with the computing device; and / or any devices (e.g., network card, modem, etc.) that enable the computing device to communicate with one or more other computing devices. Such communication can occur via Input / Output (I / O) interface(s) 660.

[0063] In addition, as described above, the computing device can communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN) and / or a public network (e.g., the Internet) via network adaptor 680. As depicted, network adaptor 680 communicates with other components of the computing device via bus 615. It should be understood that although not shown, other hardware and / or software components could be used in conjunction with the computing device. Examples include (but are not limited to) microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.

[0064] The descriptions of the various embodiments have been presented herein for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

[0065] The present invention may be a system, a method, and / or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.

[0066] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

[0067] Computer readable program instructions described herein can be downloaded to respective computing / processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing / processing device.

[0068] Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, statesetting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions 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 usingan Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.

[0069] Aspects of the present invention are described herein 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 readable program instructions.

[0070] These computer readable 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 readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function / act specified in the flowchart and / or block diagram block or blocks.

[0071] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0072] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion ofinstructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

Claims

CLAIMSWhat is claimed:

1. A computer-implemented method of displaying audiovisual content on a computing device via a web browser, comprising: receiving at a web browser, running on a computing device, a primary audiovisual stream from a media server; retrieving, by the computing device, from a remote server distinct from the media server, a SIMID-specified file including a reference to ancillary audiovisual content, and executable code written in a browser-native language for modifying webpage elements; executing, by a first media player, instantiated within the web browser, the executable code in the SIMID-specified file, wherein the executable code is securely transmitted and interpreted exclusively using language interpretation features that are native to the web browser and without invoking any software development kit (SDK), add-on, or library download; instantiating, based on the executed code, a second media player within the web browser configured to retrieve and display the ancillary audiovisual content from the remote server independent of the primary audiovisual stream and irrespective of operation of the first media player; and displaying the ancillary audiovisual content to a user of the computing device via the second media player.

2. The computer-implemented method of Claim 1, wherein the ancillary audiovisual content is at least one of an advertisement, other media content, an announcement, or a poll.

3. The computer-implemented method of Claim 1, wherein the ancillary audiovisual content is displayed for a predetermined time period, after which the first media player displays the primary audiovisual stream received from the media server.

4. The computer-implemented method of Claim 1, further comprising: retrieving, by the computing device, from a server distinct from the media server, a second SIMID-specified file including executable code written in a browser-native language for modifying webpage elements, wherein the executable code in the second SIMID-specified file is to be executed by the second media player; andexecuting, by the second media player instantiated within the web browser, the executable code in the second SIMID-specified file, and instantiating, based on the executable code in the second SIMID-specified file, a third media player within the web browser.

5. The computer-implemented method of Claim 4, further comprising displaying other ancillary audiovisual content specified by the second SIMID-specified file.

6. The computer-implemented method of Claim 5, wherein the other ancillary audiovisual content is at least one of an advertisement, other media content, an announcement, or a poll.

7. The computer-implemented method of Claim 4, further comprising: retrieving, by the computing device from a server distinct from the media server, a subsequent SIMID-specified file including executable code written in a browser-native language for modifying webpage elements, wherein the executable code in the subsequent SIMID-specified file is to be executed by a previously instantiated media player within the web browser; and executing, by the previously instantiated media player within the web browser, the executable code in the subsequent SIMID-specified file, and instantiating, based on the executable code in the subsequent SIMID-specified file, a subsequent media player within the web browser.

8. The computer-implemented method of Claim 7, further comprising displaying additional ancillary audiovisual content specified by the subsequent SIMID-specified file.

9. The computer-implemented method of Claim 7, further comprising at least five media players, and wherein the at least five media players include each of the subsequent media player, the third media player, the second media player and the first media player.

10. The computer-implemented method of Claim 1, wherein the second media player is isolated from the first media player.

11. The computer-implemented method of Claim 4, wherein the third media player is isolated from the first and second media players in the web browser.

12. The computer-implemented method of Claim 4, wherein the executable code in the first and second SIMID-specified files are agnostic to structure or content of any previously executed code or previously instantiated media player.

13. A computer-implemented system for displaying audiovisual content on a computing device, comprising: a first media player, running in a web browser on the computing device, configured to receive and display a primary audiovisual stream received from a media server, wherein the first media player securely receives a SIMID-specified file from a remote server independent of the media server, the SIMID-specified file including a reference to ancillary audiovisual content; and executable code written in a browser-native language for modifying webpage elements; and a second media player instantiated in the web browser by the first media player upon execution of the SIMID-specified file, wherein the second media player is configured to retrieve and display the ancillary audiovisual content from the remote server irrespective of operation of the first media player.

14. The system of Claim 13, wherein the second media player is isolated from the first media player.

15. The system of Claim 13, wherein the executable code in the SIMID-specified file is agnostic to structure or content of any previously executed code or previously instantiated media player.

16. The system of Claim 13, wherein the ancillary audiovisual content is at least one of an advertisement, other media content, an announcement, or a poll.

17. The system of Claim 13, wherein the ancillary audiovisual content is displayed for a predetermined time period, after which the first media player displays the primary audiovisual stream received from the media server.

18. The system of Claim 13, further comprising a third media player instantiated in the web browser by the second media player upon execution of executable code written in a browsernative language securely received in a second SIMID-specified file from a remote server.

19. The system of Claim 18, wherein the third media player is isolated from the first and second media players in the web browser.

20. The system of Claim 19, further comprising a fourth media player instantiated in the web browser by the third media player upon execution of executable code written in a browsernative language securely received in a third SIMID-specified file from a remote server.

21. The system of Claim 20, wherein the fourth media player is isolated from the first, second and third media players.

22. A computer-implemented method of displaying audiovisual content on a computing device via a web browser, comprising: generating a script to accompany an audiovisual file that, when executed by a first media player in the web browser, will instantiate a second media player in the web browser, exclusively using language interpretation features that are native to the web browser and avoiding the use of language interpretation features provided by any software development kit, add-on, or library downloaded by the web browser, prompted by an “include” or “require” statement; and transmitting the script in a SIMID-specified file to the computing device that provides the web browser, wherein, upon execution of the script, the first media player will instantiate the second media player in the web browser to display ancillary audiovisual content to a user of the computing device.

23. The computer-implemented method of Claim 22, wherein a subsequent script is generated to be executed by the second media player, the subsequent script being transmitted to the computing device in a in a SIMID-specified file, wherein upon execution of the subsequent script by the second media player, a third media player is instantiated in the web browser.

24. The computer-implemented method of Claim 23, wherein a series of subsequent scripts are generated and transmitted to the computing device in SIMID-specified files in order to achieve an arbitrary depth of media players instantiated by media players, greater than three.

Citation Information

Patent Citations

  • System and method for streaming content from multiple servers

    US12003562B2

  • Method and System for Integrating Browsing Histories with Media Playlists

    US20080288536A1

  • Video advertisement augmentation with dynamic web content

    US20220156801A1

  • Systems and methods for concurrently playing multiple remotely stored media files in a web browser

    US20230125371A1

  • Multimedia enhanced browser interface

    WO2009055692A2