IP Library Granted Patent US 9,106,719
Granted Patent B2
US 9,106,719 · App. 13/448,214 · Granted Aug 11, 2015

Real-time video optimizer

Inventors: Erik R. Swenson (San Jose, CA); Nitin Bhandari (Fremont, CA); Jaime Heilpern (San Francisco, CA); Robert Oberhofer (Belmont, CA)
Assignee: OPERA SOFTWARE IRELAND LIMITED
H04L65/60H04L65/1076H04L65/80H04L67/2823H04L67/303H04N19/156H04N19/40H04N21/234309H04N21/6379
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,106,719
App. No.
13/448,214
Granted
Aug 11, 2015
Kind
B2
Abstract

A video optimizer receives a request to optimize a video, wherein the request includes optimization parameters and a uniform resource locator (URL) of the video. The video optimizer retrieves the video from an origin server and transcodes the video based on optimization parameters. The video optimizer load balances several transcoding sessions over one or more servers and tracks each session based on session identifications (IDs). Additionally, the video optimizer tracks each session to determine when a server is at or near capacity to prevent an overflow situation. The video optimizer is also enabled to stitch together two or more transcoding sessions in the event of a seek operation by a user during video playback. The video optimizer streams the video to the client device, enabling the client device to stream videos in substantially real-time after requesting the video.

Claims (83)

1. A method comprising:

monitoring communications between a client device and an origin server to intercept a request associated with providing a source video from the origin server to the client device, the intercepted request replaced with a redirect request identifying the source video at the origin server and configured to automatically redirect the client device to a transcoding server for providing transcoded source video to the client device, the redirect request including a uniform resource location (URL) of the source video and meta data providing video transcoding parameters based on properties of the client device;

load balancing transcoding requests over multiple transcoding servers; and

in response to receiving the redirect request to transcode the source video for the client device at a transcoding server:

establishing a first session at the transcoding server with the origin server for retrieving source video data from the origin server based on the URL of the source video included in the redirect request,

extracting profile settings associated with the source video, and

establishing a second session at the transcoding server with the client device to provide transcoded source video data, the transcoding of the video based on the transcoding parameters included in the meta data of the redirect request and the extracted profile settings.

2. The method of claim 1 , further comprising:

tracking statistics associated with the transcoding server, the statistics including a runtime instance of sessions executing on the transcoding server;

estimating performance of the transcoding server based on the statistics, the estimation providing an indication of whether the transcoding server is deemed near capacity; and

permitting the transcoding server to cease accepting new sessions when the server is deemed near capacity.

3. The method of claim 2 , wherein estimating the performance of the transcoding server comprises measuring a number of macroblocks that can be decoded per second based on the source video data retrieved from the origin server to be decoded and an output configuration for providing transcoded source video data to the client.

4. The method of claim 1 , wherein existing sessions continue to execute at the transcoding server in a shutdown mode and wherein new sessions are not established at the transcoding server in the shutdown mode.

5. The method of claim 1 , further comprising:

receiving a redirected seek request from the client device, the seek requesting playback from another time or byte of the source video;

placing the first session with the origin server in a stand-by mode;

retrieving new source video data responsive to the redirected seek request;

if the new source video data only has partial metadata information, then copying metadata information from the first session; and

providing transcoded new source video data to the client device via the session.

6. The method of claim 1 , further comprising:

storing the transcoded source video data in a cache;

receiving a redirected seek request from the client, the seek requesting playback from another specified time or byte of the source video;

performing a profile check to determine if the byte or time requested in the redirected seek request corresponds to the transcoded source video data stored in the cache; and

providing the transcoded source video data corresponding to the byte or time specified in the redirected seek request from the cache to the client device.

7. The method of claim 1 , further comprising reading transcoded source video data and encapsulating the data into a container based on the transcoding parameters included in the meta data of the redirect request, the intercepted request replaced with the redirect request by a video detector.

8. The method of claim 1 , further comprising storing the transcoded video in a cache.

9. A system for transcoding a video, the system comprising:

a non-transitory machine-readable storage medium comprising computer program code that when executed by one or more processors performs steps to:

monitoring communications between a client device and an origin server to intercept a request associated with providing a source video from the origin server to the client device, the intercepted request replaced with a redirect request identifying the source video at the origin server and configured to automatically redirect the client device to a transcoding server for providing transcoded source video to the client device, the redirect request including a uniform resource location (URL) of the source video and meta data providing video transcoding parameters based on properties of the client device;

load balancing transcoding requests over multiple transcoding servers; and

in response to receiving the redirect request to transcode the source video for the client device at a transcoding server from the client device:

establishing a first session at the transcoding server with the origin server for retrieving source video data from the origin server based on the URL of the source video included in the redirect request,

extracting profile settings associated with the source video, and

establishing a second session at the transcoding server with the client device to provide transcoded source video data, the transcoding of the video based on the transcoding parameters included in the meta data of the redirect request and the extracted profile settings.

10. The system of claim 9 , further comprising:

tracking statistics associated with the transcoding server, the statistics including a runtime instance of sessions executing on the transcoding server;

estimating performance of the transcoding server based on the statistics, the estimation providing an indication of whether the transcoding server is deemed near capacity; and

permitting the transcoding server to cease accepting new sessions when the server is deemed near capacity.

11. The system of claim 10 , wherein estimating the performance of the transcoding server comprises measuring a number of macroblocks that can be decoded per second based on the source video data retrieved from the origin server to be decoded and an output configuration for providing transcoded source video data to the client.

12. The system of claim 9 , wherein existing sessions continue to execute at the transcoding server in a shutdown mode and wherein new sessions are not established at the transcoding server in the shutdown mode.

13. The system of claim 9 , further comprising:

receiving a redirected seek request from a client, the seek requesting playback from another time or byte of the source video;

placing the first session with the origin server in a stand-by mode;

retrieving new source video data responsive to the redirected seek request;

if the new source video data only has partial metadata information, then copying metadata information from a previous session; and

providing transcoded new source video data to the client device via the session.

14. The system of claim 9 , further comprising:

storing the transcoded source video data in a cache;

receiving a redirected seek request from the client, the seek requesting playback from another specified time or byte of the source video;

performing a profile check to determine if the byte or time requested in the redirected seek request corresponds to the transcoded source video data stored in the cache; and

providing the transcoded source video data corresponding to the byte or time specified in the redirected seek request from the cache to the client device.

15. The system of claim 9 , further comprising reading transcoded source video data and encapsulating the data into a container based on the transcoding parameters included in the meta data of the redirect request, the intercepted request replaced with the redirect request by a video detector.

16. The system of claim 9 , further comprising storing the transcoded video in a cache.

17. A non-transitory machine-readable storage medium storing executable computer program instructions for transcoding a video, the computer program instructions comprising instructions for:

monitoring communications between a client device and an origin server to intercept a request associated with providing a source video from the origin server to the client device, the intercepted request replaced with a redirect request identifying the source video at the origin server and configured to automatically redirect the client device to a transcoding server for providing transcoded source video to the client device, the redirect request including a uniform resource location (URL) of the source video and meta data providing video transcoding parameters based on properties of the client device;

load balancing transcoding requests over multiple transcoding servers; and

in response to receiving the redirect request to transcode the source video for the client device at a transcoding server:

establishing a first session at the transcoding server with the origin server for retrieving source video data from the origin server based on the URL of the source video included in the redirect request,

extracting profile settings associated with the source video, and

establishing a second session at the transcoding server with the client device to provide transcoded source video data, the transcoding of the video based on the transcoding parameters included in the meta data of the redirect request and the extracted profile settings.

18. The non-transitory machine-readable storage medium of claim 17 , further comprising instructions for:

tracking statistics associated with the transcoding server, the statistics including a runtime instance of sessions executing on the transcoding server;

estimating performance of the transcoding server based on the statistics, the estimation providing an indication of whether the transcoding server is deemed near capacity; and

permitting the transcoding server to cease accepting new sessions when the server is deemed near capacity.

19. The non-transitory machine-readable storage medium of claim 17 , further comprising instructions for:

receiving a redirected seek request from a client, the seek requesting playback from another time or byte of the source video;

placing the first session with the origin server in a stand-by mode;

retrieving new source video data responsive to the redirected seek request;

if the new source video data only has partial metadata information, then copying metadata information from the first session; and

providing transcoded new source video data to the client device via the session.

20. The non-transitory machine-readable storage medium of claim 17 , further comprising instructions for:

storing the transcoded source video data in a cache;

receiving a redirected seek request from the client, the seek requesting playback from another specified time or byte of the source video;

performing a profile check to determine if the byte or time requested in the redirected seek request corresponds to the transcoded source video data stored in the cache; and

providing the transcoded source video data corresponding to the byte or time specified in the redirected seek request from the cache to the client device via the session.

21. The non-transitory machine readable storage medium of claim 17 , further comprising instructions for:

tracking statistics associated with the transcoding server, the statistics including a runtime instance of sessions executing on the transcoding server;

estimating performance of the transcoding server based on the statistics, the estimation providing an indication of whether the transcoding server is deemed near capacity; and

permitting the transcoding server to cease accepting new sessions when the server is deemed near capacity, wherein estimating the performance of the transcoding server comprises measuring a number of macroblocks that can be decoded per second based on source video data retrieved from the origin server to be decoded and an output configuration for providing transcoded source video data to client devices.

22. The machine-readable storage medium of claim 17 , further comprising instructions for:

tracking statistics associated with the transcoding server, the statistics including a runtime instance of sessions executing on the transcoding server;

estimating performance of the transcoding server based on the statistics, the estimation providing an indication of whether the transcoding server is deemed near capacity; and

permitting the transcoding server to cease accepting new sessions when the server is deemed near capacity, wherein the transcoding server may cease accepting new sessions from another client device in a hold-off mode where new sessions from the client device continue to be sent to the transcoding server and wherein the transcoding server may continue to support existing sessions with the client device in a shutdown mode where new sessions from the client device are not sent to the transcoding server.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2025
From: OTELLO CORPORATION ASA
To: TIR TECHNOLOGIES LIMITED
Reel/Frame 071165/0584 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2023
From: PERFORMANCE AND PRIVACY IRELAND LIMITED
To: OTELLO CORPORATION ASA
Reel/Frame 063188/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2017
From: OPERA SOFTWARE IRELAND LTD.
To: PERFORMANCE AND PRIVACY IRELAND LTD.
Reel/Frame 042076/0473 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2014
From: SKYFIRE LABS, INC.
To: OPERA SOFTWARE IRELAND LIMITED
Reel/Frame 032827/0175 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2012
From: SWENSON, ERIK R.; BHANDARI, NITIN; HEILPERN, JAIME; OBERHOFER, ROBERT
To: SKYFIRE LABS, INC.
Reel/Frame 028054/0221 →
Continuity (2)
Provisional Application 61476214 · Apr 15, 2011
Related Publication 20120265901A1 · Oct 18, 2012