IP Library › Granted Patent US 12,549,793
Granted Patent B2
US 12,549,793 · App. 17/765,567 · Granted Feb 10, 2026

Server-side adaptive media streaming

Inventor: Fabian Dietz (Bayreuth, DE)
Assignee: streaMonkey GmbH
H04N21/2662H04L65/752
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 12,549,793
App. No.
17/765,567
Granted
Feb 10, 2026
Kind
B2
Abstract

A part of media is transmitted from a streaming server to a client and a transfer time is determined for the part of media. The transfer time is compared with a playback duration of the part of media. If the difference between the playback duration and the transfer time exceeds a preconfigured value, the bitrate of the media is adjusted.

Claims (82)

1 . A method for media streaming over HTTP to be performed by a streaming server, the method comprising:

receiving a request for media data from a client;

transmitting, to the client, a first transmission unit including a first part of the media data encoded by applying a first type of encoding of a plurality of different types of encoding having a plurality of different bitrates,

determining a transfer time of the first transmission unit to the client, judging whether or not the determined transfer time differs from a media time by more than a predetermined amount, and

adjusting a bitrate of the media streaming based on the determined transfer time by transmitting a second transmission unit including a second part of the media data encoded by applying a second type of encoding of the plurality of different types of encoding having a different bitrate of the plurality of different bitrates than said first type of encoding,

wherein the transmitting of the second transmission unit includes:

in response to the streaming server judging that the determined transfer time differs from the media time by more than the predetermined amount, selecting, from a storage storing a plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates, according to whether the transfer time is judged by the streaming server to be higher than the media time by more than the predetermined amount or lower than the media time by more than the predetermined amount, a chunk of the plurality of chunks including the second part of the media data encoded with the second type of encoding from among the plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates; and

transmitting the chunk to the client in a continuous HyperText Transfer Protocol (HTTP) stream.

2 . The method according to claim 1 , further comprising:

performing the adjusting when the transfer time is judged to differ from the media time by more than the predetermined amount, and

not performing the adjusting when the transfer time is judged not to differ from the media time by more than the predetermined amount.

3 . The method according to claim 2 , wherein,

when the transfer time is judged to be higher than the media time by more than the predetermined amount, transmitting the second transmission unit including the second part of the media data encoded by applying encoding with a bitrate lower than said first type of encoding.

4 . The method according to claim 3 , wherein,

when the transfer time is judged to be lower than the media time by more than a second predetermined amount, transmitting the second transmission unit including the second part of the media data encoded by applying encoding with a bitrate higher than said first type of encoding.

5 . The method according to claim 4 , further comprising:

waiting a predetermined waiting time period before transmitting the second transmission unit, the predetermined waiting time period being determined according to the media time.

6 . The method according to claim 1 , further comprising:

receiving requests for the media data from a plurality of clients,

transmitting, to the plurality of clients, the media data in transmission units including media data with the same media time irrespectively of the type of encoding, and

transmitting, to the plurality of clients, additional media data in transmission units including media data with the same media time irrespectively of the type of encoding and the client, wherein the additional media data differs for the clients out of the plurality of clients by content.

7 . The method according to claim 1 , further comprising:

receiving, from the client, a connection request;

establishing a connection with the client in a client-specific thread; and

storing a time instant of a start of the connection for the client.

8 . The method according to claim 1 , wherein the media data comprises audio data.

9 . The method according to claim 8 , wherein the media streaming comprises an Icecast compatible streaming.

10 . The method according to claim 9 , further comprising:

obtaining media data in chunks from a plurality of respective media files;

ordering consecutive chunks into a continuous stream; and

transmitting the continuous stream to the client according to Icecast protocol.

11 . A computer program stored on a non-transitory storage medium, which when executed on a processor, causes the processor to:

receive a request for media data from a client;

transmit, to the client, a first transmission unit including a first part of the media data encoded by applying a first type of encoding of a plurality of different types of encoding having a plurality of different bitrates,

determine a transfer time of the first transmission unit to the client,

judge whether or not the determined transfer time differs from a media time by more than a predetermined amount, and

adjust a bitrate of the media streaming based on the determined transfer time by transmitting a second transmission unit including a second part of the media data encoded by applying a second type of encoding of the plurality of different types of encoding having a different bitrate of the plurality of different bitrates than said first type of encoding,

wherein the computer program, when executed on the processor, causes the processor to transmit the second transmission unit by:

in response to the streaming server judging that the determined transfer time differs from the media time by more than the predetermined amount, selecting, from a storage storing a plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates, according to whether the transfer time is judged by the streaming server to be higher than the media time by more than the predetermined amount or lower than the media time by more than the predetermined amount, a chunk of the plurality of chunks including the second part of the media data encoded with the second type of encoding from among the plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates; and

transmitting the chunk to the client in a continuous HyperText Transfer Protocol (HTTP) stream.

12 . A streaming server comprising:

processing circuitry; and

an interface for HyperText Transfer Protocol (HTTP) streaming to a client and controllable by the processing circuitry;

wherein the processing circuitry is configured to:

receive a request for media data from a client;

transmit, to the client, a first transmission unit including a first part of the media data encoded by applying a first type of encoding of a plurality of different types of encoding having a plurality of different bitrates,

determine a transfer time of the first transmission unit to the client,

judge whether or not the determined transfer time differs from a media time by more than a predetermined amount, and

adjust a bitrate of the HTTP streaming based on the determined transfer time by transmitting a second transmission unit including a second part of the media data encoded by applying a second type of encoding of the plurality of different types of encoding having a different bitrate of the plurality of different bitrates than said first type of encoding,

wherein the processing circuitry is configured to transmit the second transmitting unit by:

in response to the streaming server judging that the determined transfer time differs from the media time by more than the predetermined amount, selecting, from a storage storing a plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates, according to whether the transfer time is judged by the streaming server to be higher than the media time by more than the predetermined amount or lower than the media time by more than the predetermined amount, a chunk of the plurality of chunks including the second part of the media data encoded with the second type of encoding from among the plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates; and

transmitting the chunk to the client in a continuous HTTP stream.

13 . The streaming server according to claim 12 , the processing circuitry being further configured to:

perform the adjusting when the transfer time is judged to differ from the media time by more than the predetermined amount, and

not perform the adjusting when the transfer time is judged not to differ from the media time by more than the predetermined amount.

14 . The streaming server according to claim 13 , wherein,

when the transfer time is judged to be higher than the media time by more than the predetermined amount, transmitting the second transmission unit including the second part of the media data encoded by applying encoding with a bitrate lower than said first type of encoding.

15 . The method according to claim 13 , wherein,

when the transfer time is judged to be lower than the media time by more than a second predetermined amount, transmitting the second transmission unit including the second part of the media data encoded by applying encoding with a bitrate higher than said first type of encoding.

16 . The streaming server according to claim 15 , the processing circuitry being configured to perform waiting a predetermined waiting time period before transmitting the second transmission unit, the predetermined waiting time period being determined according to the media time.

17 . The streaming server according to claim 12 , wherein the processing circuitry is configured to control the interface to:

receive requests for the media data from a plurality of clients,

transmit, to the plurality of clients, the media data in transmission units including media data with the same media time irrespectively of the type of encoding,

transmit, to the plurality of clients, additional media data in transmission units including media data with the same media time irrespectively of the type of encoding and the client, wherein the additional media data differs for the clients out of the plurality of clients by content.

18 . The streaming server according to claim 12 , wherein the processing circuitry is further configured to:

receive from the client a connection request;

establish a connection with the client in a client-specific thread; and

store a time instant of a start of the connection for the client.

19 . The streaming server according to claim 12 , wherein the media data comprises audio data.

20 . The streaming server according to claim 19 , wherein the HTTP streaming comprises an Icecast compatible streaming.

21 . The streaming server according to claim 20 , wherein the processing circuitry is configured to:

obtain media data in chunks from a plurality of respective media files;

order consecutive chunks into a continuous stream; and

transmit the continuous stream to the client according to Icecast protocol.

22 . A system comprising:

the streaming server according to claim 12 ; and

the storage storing the plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates, wherein each chunk of the plurality of chunks includes the media data cut into a chunk of a same media time duration,

wherein each chunk of the plurality of chunks includes the second part of the media data encoded with a different type of encoding of the plurality of different types of encoding than the other chunks of the plurality of chunks such that each chunk of the plurality of chunks includes a different representation of the same media of a same media time duration encoded at a different bitrate than the other chunks of the plurality of chunks, and

wherein the storage comprises an interface for providing the plurality of chunks to the streaming server.

23 . The method according to claim 1 , further comprising:

storing, in the storage, the plurality of chunks including the second part of the media data encoded with the plurality of different types of encoding having the plurality of different bitrates,

wherein each chunk of the plurality of chunks includes the second part of the media data encoded with a different type of encoding of the plurality of different types of encoding than the other chunks of the plurality of chunks such that each chunk of the plurality of chunks includes a different representation of the same media of a same media time duration encoded at a different bitrate than the other chunks of the plurality of chunks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2022
From: DIETZ, FABIAN
To: STREAMONKEY GMBH
Reel/Frame 060008/0560 →
Continuity (1)
Related Publication 20220408135A1 · Dec 22, 2022
References Cited (25)
US 8205004B1 · Kaufman · 2012 [cited by examiner]
US 9356821B1 · Jagannathan · 2016 [cited by applicant]
US 10547659B2 · Zhang · 2020 [cited by examiner]
US 20040098748A1 · Bo · 2004 [cited by examiner]
US 20130013803A1 · Bichot et al. · 2013 [cited by applicant]
US 20130044801A1 · Cote · 2013 [cited by examiner]
US 20140089469A1 · Ramamurthy · 2014 [cited by examiner]
US 20160073176A1 · Phillips · 2016 [cited by examiner]
US 20160134673A1 · MacInnis · 2016 [cited by examiner]
US 20170126765A1 · Taibi et al. · 2017 [cited by applicant]
US 20170127101A1 · Rasool · 2017 [cited by examiner]
US 20170188069A1 · Mueller et al. · 2017 [cited by applicant]
US 20180262439A1 · Moorthy · 2018 [cited by examiner]
US 20180288459A1 · Ramaraj · 2018 [cited by examiner]
US 20180316949A1 · Banerjee · 2018 [cited by examiner]
US 20190208391A1 · Ryu · 2019 [cited by examiner]
US 20190364084A1 · Huang · 2019 [cited by examiner]
US 20200037007A1 · Mahvash · 2020 [cited by examiner]
US 20200037015A1 · Mahvash · 2020 [cited by examiner]
US 20230037292A1 · MacInnis · 2023 [cited by examiner]
CN 108600789A · 2018 [cited by applicant]
CN 108702542A · 2018 [cited by applicant]
EP 2375680A1 · 2011 [cited by applicant]
EP 2477397A1 · 2012 [cited by applicant]
RU 2671946C2 · 2018 [cited by applicant]