A plugin to control bitrate?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

A plugin to control bitrate?

Krzysztof Konopko-3
Hi,

I was wondering whether there exists an element to control the
(download) bitrate in the pipeline.  Something like:

    souphttpsrc location=... ! bitrate max-bitrate=100000 ! ...

As I understand, none of the source elements offer this functionality
and I'm looking for something that'd work with arbitrary byte streams
(say, MPEG-TS).

I checked all plugins built on my PC but couldn't find anything
suitable but I might have missed something.

I suppose such element would either block in push mode to accommodate
for the selected bitrate or in pull mode it'd schedule data requests
accordingly.

Any hints appreciated.

Thanks,
Kris

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: A plugin to control bitrate?

David Ing
If you wanted to modify the bitrate of encoded data, you would need to decode it and then re-encode it at the new bitrate.  Typically the encoder is where you would set the new bitrate.

The only exception would be related to formats such as HLS, where several different variants of a stream are pre-encoded (at different bitrates) and you can select which variant to consume.  There may be a plugin for consuming HLS streams but I do not know it off the top of my head.

On Thu, Aug 8, 2019 at 8:49 AM Krzysztof Konopko <[hidden email]> wrote:
Hi,

I was wondering whether there exists an element to control the
(download) bitrate in the pipeline.  Something like:

    souphttpsrc location=... ! bitrate max-bitrate=100000 ! ...

As I understand, none of the source elements offer this functionality
and I'm looking for something that'd work with arbitrary byte streams
(say, MPEG-TS).

I checked all plugins built on my PC but couldn't find anything
suitable but I might have missed something.

I suppose such element would either block in push mode to accommodate
for the selected bitrate or in pull mode it'd schedule data requests
accordingly.

Any hints appreciated.

Thanks,
Kris

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: A plugin to control bitrate?

Krzysztof Konopko-3
I meant the average bitrate of the byte stream. Maybe I sounded ambiguous but I'm looking for ways to limit the data rate at which data is read from a (remote) source (network). Typically data is read in the pipeline as fast as possible (especially when there's a lot of buffering in the pipeline).

So let's say there's 10MB buffer in the pipeline and it will be filled as fast as possible reading from source (network) while I'm looking for limiting the rate at which the buffer is filled (want to save on network capacity).
It's not a question of how to implement it but rather how to not reinvent the wheel if something like this already exists.

I hope it made it clearer.

Thanks,
Kris

On Thu, 2019-08-08 at 08:56 -0700, David Ing wrote:
If you wanted to modify the bitrate of encoded data, you would need to decode it and then re-encode it at the new bitrate.  Typically the encoder is where you would set the new bitrate.

The only exception would be related to formats such as HLS, where several different variants of a stream are pre-encoded (at different bitrates) and you can select which variant to consume.  There may be a plugin for consuming HLS streams but I do not know it off the top of my head.

On Thu, Aug 8, 2019 at 8:49 AM Krzysztof Konopko <[hidden email]> wrote:
Hi,

I was wondering whether there exists an element to control the
(download) bitrate in the pipeline.  Something like:

    souphttpsrc location=... ! bitrate max-bitrate=100000 ! ...

As I understand, none of the source elements offer this functionality
and I'm looking for something that'd work with arbitrary byte streams
(say, MPEG-TS).

I checked all plugins built on my PC but couldn't find anything
suitable but I might have missed something.

I suppose such element would either block in push mode to accommodate
for the selected bitrate or in pull mode it'd schedule data requests
accordingly.

Any hints appreciated.

Thanks,
Kris

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]

https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: A plugin to control bitrate?

Baby Octopus
If you are confident the upstream doesn't throttle, then you can simulate
want you want with something like this

... ! rndbuffersize min=x max=x ! identity sleep-interval=y ! ....

Decide on 'x' and 'y' based on how often the buffers should be sent

~BO



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: A plugin to control bitrate?

Krzysztof Konopko-3
On Fri, 2019-08-09 at 00:22 -0500, Baby Octopus wrote:

> If you are confident the upstream doesn't throttle, then you can
> simulate
> want you want with something like this
>
> ... ! rndbuffersize min=x max=x ! identity sleep-interval=y ! ....
>
> Decide on 'x' and 'y' based on how often the buffers should be sent
>
> ~BO
>

Thanks for the suggestion.  Might not be exactly what I need but at
least provided some inspiration.

Cheers,
Kris

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel