US20150117839A1
2015-04-30
14/587,374
2014-12-31
Systems and methods for applying visual effects to video in a client/server or cloud-based system are described. Using a web browser, for example, users can apply and control both simple and sophisticated effects with dynamic real-time previews without downloading client-side software. Rendering and previewing of the effects is done on the server and rendered images can be sent in rapid succession to the client, allowing simple, real-time feedback and control. Other aspects of the technology are also described.
Get notified when new applications in this technology area are published.
H04N21/47205 » CPC main
Selective content distribution, e.g. interactive television or video on demand [VOD]; Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof; End-user applications; End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for manipulating displayed content, e.g. interacting with MPEG-4 objects, editing locally
H04N21/472 IPC
Selective content distribution, e.g. interactive television or video on demand [VOD]; Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof; End-user applications End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
H04N21/439 » CPC further
Selective content distribution, e.g. interactive television or video on demand [VOD]; Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof; Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware Processing of audio elementary streams
H04N21/233 » CPC further
Selective content distribution, e.g. interactive television or video on demand [VOD]; Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof; Processing of content or additional data; Elementary server operations; Server middleware Processing of audio elementary streams
H04N21/437 » CPC further
Selective content distribution, e.g. interactive television or video on demand [VOD]; Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof; Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware Interfacing the upstream path of the transmission network, e.g. for transmitting client requests to a VOD server
H04N21/237 » CPC further
Selective content distribution, e.g. interactive television or video on demand [VOD]; Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof; Processing of content or additional data; Elementary server operations; Server middleware Communication with additional data server
H04N21/234 » CPC further
Selective content distribution, e.g. interactive television or video on demand [VOD]; Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof; Processing of content or additional data; Elementary server operations; Server middleware Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
G11B27/031 » CPC further
Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel; Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers Electronic editing of digitised analogue information signals, e.g. audio or video signals
H04N21/44 » CPC further
Selective content distribution, e.g. interactive television or video on demand [VOD]; Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof; Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
This is a continuation of U.S. patent application Ser. No. 14/349,178, entitled “Network-Based Rendering And Steering Of Visual Effects,” filed on Apr. 2, 2014 (Attorney Docket No. 114641.8002.US01) which claims priority to PCT Patent Application No. PCT/US12/059572, entitled “Network-Based Rendering And Steering Of Visual Effects,” filed on Oct. 10, 2012 (Attorney Docket No. 114641.8002.WO00) which claims priority to U.S. Provisional Patent Application No. 61/545,330, entitled “Method For Network-Based Rendering And Steering Of Visual Effects,” filed on Oct. 10, 2011 (Attorney Docket No. 114641.8002.US00), each of which is herein incorporated by reference.
Visual effects include the various processes by which imagery is created and/or manipulated on film and/or video data. Visual effects are often implemented digitally by processing successive frames of video or scanned film footage. Each frame or set of frames of digitized video is processed by computer algorithms which produce output frames corresponding to the input frames, processed by the effect(s) in question. A collection of one or more effects is defined herein as a look.
Visual effects are usually applied in a computer system, where frames are read from a disk or storage device into the computer, the frames are processed, and written to the same or a different storage device. The effects are controlled either interactively by a user (the video creator), or in batch using a predefined script.
In the interactive case, the video creator uses a “host” application such as Adobe After Effects, Autodesk Flame, Avid Media Composer or similar video editing or compositing applications to (a) identify the frame sequence to apply the effects to, (b) select the effects, (c) set the various parameters which control the final look of the effect, and (d) render the effects by performing the image-processing algorithms on all frames in the sequence. Controls might include blur amount, image shift, strength of color correction, position to apply an overlay image, and many others, as required by the look.
FIG. 1 is a block diagram illustrating an environment in which the disclosed technology may operate.
FIG. 2 is a display page illustrating a user interface through which a user can apply effects to a video clip and make adjustments to the video clip and/or the effects.
FIG. 3 is a block diagram illustrating a software architecture that may be employed by the disclosed technology.
FIG. 4 is a timing diagram illustrating a transaction between a client browser and various components of a server.
FIG. 5 is a flow diagram illustrating the processing of an interactive session.
FIG. 6A is a block diagram illustrating an environment in which the disclosed technology may operate and that includes a video editor and effects server that are co-located.
FIG. 6B is a block diagram illustrating an environment in which the disclosed technology may operate and that includes a video editor and an effects server located in different networks.
Various examples of the applicant's invention will now be described. The following description provides certain specific details for a thorough understanding and enabling description of these examples. One skilled in the relevant technology will understand, however, that the invention may be practiced without many of these details. Likewise, one skilled in the relevant technology will also understand that the invention may include many other obvious features not described in detail herein. Additionally, some well-known structures or functions may not be shown or described in detail below, to avoid unnecessarily obscuring the relevant descriptions of the various examples.
The terminology used below is to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the invention. Indeed, certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in below.
Increasingly video creators are uploading videos to cloud-based web servers where the videos are stored and streamed to users worldwide; examples include Vimeo, YouTube, and many others. These cloud-based systems allow creators and developers to take advantage of distributed hardware and/or software computing resources provided as a service over a network (e.g., the Internet). Editing and compositing of video using online applications is only beginning to be done with systems such as Clesh, YouTube Video Editor, and Kaltura. The present system, described in detail herein, provides a mechanism to add sophisticated visual effects capabilities to those systems as a natural part of an online creation and editing process. Current online and cloud-based video editing systems either do not include significant effects, or include only very simplistic or low-quality effects which do not require even seconds of rendering time nor provide the ability for users to control or steer them.
The disclosed techniques seek to improve the situation described above. Effects processed on a client computer require a video to be downloaded to the client and re-uploaded when complete, which is inefficient compared to the methods in the present system. Techniques for processing effectively and efficiently on a cloud-based server while using standard software and hardware components in client devices rely on a sophisticated set of interactions and data exchange between client and server, such as the systems and methods described herein.
Systems and methods for applying and controlling or steering the application of high-quality effects to video in a client/server or cloud-based system are disclosed. High-quality effects (e.g., blurs, warping, rays, and shake reduction) are commonly more sophisticated and take more computation time per frame than lower quality effects (e.g., simple color transformations), and often have more controllability. Some distinguishing features of high quality effects are that the underlying computer algorithms are antialiased (no “stair stepping” or “pixelation”), use a nearly unlimited color space such as floating point arithmetic, provide for accurate color rendition, and because of the advanced computational algorithms, produce a result which is more realistic looking than lower quality algorithms. Advanced computer code such as that used in high quality effects often enables more flexible control of the looks of the effects, adding to the realism and thus the perceived visual quality.
In one embodiment, seen in FIG. 1, the video creator Desktop User A (100) uses a desktop computer (101) with a standard web browser such as Firefox, Internet Explorer, or Google Chrome (102). The browser connects to a cloud server farm (105) via the Internet or any similar network such as a mobile data network or private network (103). The user is able, by means of a web page running in the browser, to apply effects to sets of video frames, and adjust the controls of those effects dynamically, in real time. For example, the effects may include lens flares, shake addition, old-film styles, old-TV styles, transitions, stylistic renderings (halftone, sketch, oil paint, etc.), cartoon looks, glows, video-feedback, motion blur, frame rate conversion, sharpening, vignettes, kaleidoscopes, embossing, adding textures, simulated natural phenomena (lightning, fire, smoke, rain, snow, northern lights, rainbows, etc.), and so on. The present system allows for the user to see the effects of their adjustments immediately (or near real-time), as well as initiating and controlling batch renders of large numbers of video frames. The video creator user (100) may also be using a mobile device (104) with a browser in a similar fashion.
Referring to FIG. 2, in one embodiment, the user uses a standard web browser (201) to apply effects to a video clip, and makes adjustments dynamically (at will). The video appears in the Video Preview Window (202), and can be played using the Play Button (203a, 203b). Effects appear in the Thumbnail Panel (204); the user may choose one or more effects from that panel to be applied to the video clip (205). To adjust or steer the effect, one or more Effect Control Sliders (206) are provided; the user can drag them and see the results in real time in the Video Preview Window. When the user is satisfied with the effect, he may render the completed video using the Render Video button (207). Alternatively, the system may speculatively render all or part of the video without user intervention. In some cases, the user can drag the Effect Control Sliders as the video is being played, and the altered effect(s) will be visible immediately, or within a short delay, as the video plays, giving the user real-time feedback on the changes effected by the control.
The Software Architecture Diagram of FIG. 3 describes one possible overall structure of the application (though not the only one possible; others are clearly evident to persons skilled in the art). The client (301) (which may be running on a desktop and/or mobile device) connects via a set of standard Internet protocols such as TCP/IP and HTTP through its web browser or similar application to a remote server program (302) running on one or more server computers. The server process or processes contain functions and/or modules to generate web page content (303), create and manage the user interface for rendering and steering the effects (304), a standard web server (307) such as Apache or Microsoft Internet Information Server or other, and the Render Library (305) which contains the effect processing and rendering code. It may also contain various other modules as part of normal operation, such as a Web framework (306). It is a feature of this system that the client user does not have to install any special software to perform the application, beyond the usual operating system and web browser already found on most modern computers.
The HTML/CSS page generation code (303) is used to deliver the web page (HTML and CSS) to the browser client, as well as JavaScript (JS) code to be executed in the browser. The HTML/CSS page generation code may be implemented using static HTML or any web server-side language such as PHP, JavaScript, Java, Python or others. The Render interface code (304) is used as an intermediary between the browser (301) and the Render Library code (305) and responds to asynchronous requests from the browser, manages the Render Library code, and formats messages for delivery to the browser. The Render Library code (305) implements the processing of the effects and processes the video pixel data for each frame, using the selected effect and parameters provided by the user.
Referring to the Interaction diagram of FIG. 4, which describes a possible timeline of events, the first column shows events happening in the browser. The three columns to the right show three distinct parts of the server software. This diagram is only for illustration; many other similar embodiments are possible, for instance using a different number of server processes, omitting the render interface code and folding it into the render library code, or different styles and numbers of messages exchanged.
The browser (301) initiates the conversation with the server code (307), such as via an HTTP GET command (401). The server returns (402) code (e.g., HTML+CSS+JavaScript) which is interpreted by the browser to show the user's videos and a selection of possible looks to apply. The user indicates, such as by pointing, drag-and-drop or similar means, the intent to apply a particular look to a particular set of video frames. Messages (403) are sent to the server, which collects the video frames, invokes the Render Library software to apply the looks, and optionally one more text or binary preset files describing the look to be applied and various metadata about that look (404, 405). It then renders one or more test frames which are sent to the user (406), which can occur nearly immediately. The server also sends to the browser in (406) a description of the controls available to steer or adjust the look. The browser interprets that description and displays the controls, which may take the form of knobs, buttons, sliders, menus or other common controls, as well as on-screen direct manipulation using mouse or touch screen input, for instance to indicate an X,Y spatial position relative to the video frame, or to adjust or control a parameter value. For example, the parameter values may include brightness, saturation, strength, position (e.g., for an X/Y control), width, length, quality, zoom, color (e.g., with a color chooser or color picker), detail, speed, randomness, tint, blur amount, mix, enable (e.g., yes/no checkbox), angle, combine, threshold, invert, opacity, reverse, variation, style, sharpen, and so on.
The user may then interact (407) in real time with those sliders or controls; each update of a control is sent to the server (408), which renders one or more frames (409) and sends them immediately to the browser (410, 411, 412), providing nearly instantaneous feedback to the user about the effect of that control. This interaction occurs rapidly so the video frame appears to reflect the result of the change in the slider or control as the user moves it. The entire loop (412) consisting of steps 407-412 is repeated rapidly.
A sample interaction between a client and a server is provided below:
The system described herein typically works within a larger video storage, transcoding and playback system. To explain this context, an example of an interaction session is provided (for illustration only), referencing the flowchart in FIG. 5:
At any time the user can play back the video, or search within it using various standard timeline techniques such as a time bar indicating the position of the virtual play head. At all times the user can see the current effect(s) applied to the video.
In the case where the desired effect involves a transition between video clips, the user may select a transition point (a cut between two video segments) and then the server (again through the browser) reveals a selection of possible transition effects. The user chooses one and can immediately see the results, using the method described herein.
Note that optional “advanced” modes may be available with slider and/or numeric parameters to steer or control the effect, in the ways described above.
Those skilled in the relevant art will appreciate that the invention can be practiced with various computer system configurations, including Internet appliances, hand-held devices, wearable computers, cellular or mobile phones, multi-processor systems, microprocessor-based or programmable consumer electronics, set-top boxes, network PCs, mini-computers, mainframe computers and the like. The invention can be embodied in a special purpose computer or data processor that is specifically programmed, configured or constructed to perform one or more of the computer-executable instructions explained in detail below. Indeed, the term “computer”, as used generally herein, refers to any of the above devices, as well as any data processor or any device capable of communicating with a network, including consumer electronic goods such as game devices, mobile devices (e.g., mobile phones), cameras, video capture devices or source, or other electronic devices having a processor and other components, e.g., network communication circuitry.
Aspects of the invention described below may be stored or distributed on computer-readable media, including magnetic and optically readable and removable computer discs, stored as firmware in chips (e.g., EEPROM chips), as well as distributed electronically over the Internet or over other networks (including wireless networks). Data structures and transmission of data particular to aspects of the invention are also encompassed within the scope of the invention.
In general, the detailed description of embodiments of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed above. While specific embodiments of, and examples for, the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times.
Aspects of the invention may be stored or distributed on computer-readable media, including computer-readable storage media, such as magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media. Indeed, computer implemented instructions, data structures, screen displays, and other data under aspects of the invention may be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on computer-readable propagation or transmission media (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme). Those skilled in the relevant art will recognize that portions of the invention reside on a server computer, while corresponding portions reside on a client computer such as a mobile or portable device, and thus, while certain hardware platforms are described herein, aspects of the invention are equally applicable to nodes on a network.
The above detailed description of examples of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed above. While specific examples for the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or steps are presented in a given order, alternative implementations may be implemented in a different order, and some processes or steps may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or steps may be implemented in a variety of different ways. Also, while processes or steps are at times shown as being performed in series, these processes or blocks may instead be performed or implemented in parallel, or may be performed at different times.
The teachings of the invention provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various examples described above can be combined to provide further implementations of the invention. Some alternative implementations of the invention may include not only additional elements to those implementations noted above, but also may include fewer elements.
Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the invention can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further implementations of the invention.
These and other changes can be made to the invention in light of the above detailed description. While the above description describes certain examples of the invention, and describes the best mode contemplated, no matter how detailed the above appears in text, the invention can be practiced in many ways. For example, one of ordinary skill in the art will understand that, in addition to the visual and audio effects described herein, the techniques described herein can be used to apply other visual and audio effects to video and audio data. Details of the system may vary considerably in its specific implementation, while still being encompassed by the invention disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the invention should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific examples disclosed in the specification, unless the above detailed description explicitly defines such terms.
1. A computer-readable hardware device storing instructions that, if executed by a computing system, cause the computing system to perform operations comprising:
receiving, from a remote server, a web page,
wherein the web page specifies one or more controls for applying visual effects to video data;
providing for display an indication of one or more visual effects that can be applied to the video data,
sending, to the remote server, an indication of a first selected at least one visual effect to apply to the video data,
wherein the remote server is configured to apply the at least one visual effect to the video data and wherein the at least one visual effect has at least one associated controllable parameter,
receiving, from the remote server, first modified video data,
wherein the first modified video data comprises one or more video frames modified based on the first selected at least one visual effect; and
while the first modified video data is being displayed,
receiving an indication to modify the at least one controllable parameter associated with the at least one visual effect.
2. The computer-readable hardware device of claim 1, the operations further comprising:
storing a modified first frame of video data;
associating a first value for the at least one controllable parameter with the stored modified first frame of video data; and
storing a modified second frame of video data;
associating a second value for the at least one controllable parameter with the stored modified second frame of video data.
3. The computer-readable hardware device of claim 2, the operations further comprising:
in response to receiving a request to apply the at least one visual effect to the modified first frame with the at least one controllable parameter set to the first value, retrieving the stored modified first frame of video data; and
in response to receiving a request to apply the at least one visual effect to the modified second frame with the at least one controllable parameter set to the second value, retrieving the stored modified second frame of video data.
4. The computer-readable hardware device of claim 1, wherein the video data has associated audio data, the operations further comprising:
providing for display an indication of one or more audio effects that can be applied to the audio data associated with the video data;
receiving a selection of at least one audio effect to apply to the audio data associated with the video data;
sending, to the remote server, an indication of the at least one audio effect to apply to the audio data associated with the video data; and
receiving, from the remote server, modified audio data based on the at least one audio effect.
5. The computer-readable hardware device of claim 1, the operations further comprising:
while the first modified video data is being displayed, manipulating the display of the one or more controls for applying visual effects to the video data based on parameter values set for each control and each frame of the modified video data.
6. The computer-readable hardware device of claim 1, the operations further comprising:
receiving a second selection of at least one visual effect to apply to the video data,
sending, to the remote server, an indication of the second selected at least one visual effect to apply to the video data,
receiving, from the remote server, second modified video data,
providing the first modified video data and the second modified video data, and
receiving a selection of preferred modified video data.
7. The computer-readable hardware device of claim 1, the operations further comprising:
while the first modified video data is being displayed,
sending, to the remote server, the indication to modify the at least one controllable parameter associated with the at least one visual effect.
8. The computer-readable hardware device of claim 1, the operations further comprising:
while the first modified video data is being displayed,
receiving, from the remote server, second modified video data based on the modified at least one controllable parameter associated with the at least one visual effect.
9. A system comprising:
a component configured to receive, from a remote client computer, one or more video frames of video data;
a component configured to send, to the remote client computer, a web page specifying one or more controls for applying visual effects to the video data;
a component configured to receive, from a browser executing on the remote client computer, a selection of at least one visual effect to apply to the video frames, wherein the at least one visual effect has at least one associated controllable parameter;
a component configured to apply the selected at least one visual effect to the video frames to produce first modified video data; and
a component configured to send, to the remote client computer, the produced first modified video data.
10. The system of claim 9, further comprising:
a component configured to identify additional frames of the video data; and
a component configured to speculatively apply the at least one visual effect to the identified additional video frames.
11. The system of claim 10, further comprising:
a component configured to delete video data in response to determining that the at least one controllable parameter associated with the at least one visual effect has been modified.
12. The system of claim 9, further comprising:
a component configured to receive, from the remote client computer, a request to render the video data based on one or more visual effects; and
a component configured to send, in response to determining that the video data has been rendered, a notification comprising at least one of a text message, an email, or a social media posting to a user.
13. The system of claim 9, further comprising:
a component configured to, while the first modified video data is being displayed, receive second modified video data based on a modified at least one controllable parameter associated with the at least one visual effect.
14. A method, performed by a computing system having a memory and a processor, comprising:
sending, to a remote rendering server, at least a portion of video data comprising one or more video frames;
receiving, from the remote rendering server, a web page,
wherein the web page specifies one or more controls for applying visual effects to the video data; and
with a browser executing on a processor of the computing system,
receiving a selection of at least one visual effect to apply to the video data,
wherein the at least one visual effect has at least one associated controllable parameter, and
sending, to the remote rendering server, an indication of the selected at least one visual effect to apply to the video data,
wherein the remote rendering server is configured to apply the at least one visual effect to the video data, and
while first modified video data is being displayed,
sending, to the remote rendering server, an indication to modify the at least one controllable parameter associated with the at least one visual effect.
15. The method of claim 14, further comprising:
receiving, from the remote rendering server, the first modified video data,
wherein the first modified video data comprises one or more video frames modified based on the selected at least one visual effect.
16. The method of claim 14 wherein the at least one visual effect comprises a plurality of visual effects including blur, warp, rays, shake reduction, color transformation, fade, wipe, biaxial wipe, and still image insertion effect.
17. The method of claim 14, wherein the video data has associated audio data, the method further comprising:
providing for display an indication of one or more audio effects that can be applied to the audio data associated with the video data; and
receiving, from the user, a selection of at least one audio effect to apply to the audio data associated with the video data.
18. The method of claim 17, wherein the video data has associated audio data, the method further comprising:
sending, to the remote rendering server, an indication of the at least one audio effect to apply to the audio data associated with the video data; and
receiving, from the remote rendering server, modified audio data based on the at least one audio effect.
19. The method of claim 17 wherein the at least one audio effect is at least one of reverberation, filtering, noise reduction, or gain.
20. The method of claim 14 wherein the at least one controllable parameter is brightness, saturation, strength, or position.
21. The method of claim 14 wherein the at least one controllable parameter comprises at least one of detail, speed, randomness, tint, blur amount, width, length, quality, zoom, color, mix, enable, angle, combine, invert, opacity, reverse, variation, style, or sharpen.