Jump to content

Transcode Throttle appears to be broken


VirtualLlama

Recommended Posts

Happy2Play

Yes we will probably need to know the difference between BySegmentRequest and ByStreamBufferSize or have it documented somewhere.

Link to comment
Share on other sites

This isn't meant to be a personal preference and therefore won't be added to the user interface. It's only there for troubleshooting. Once the issue with Chromecast throttling is resolved there won't be any need for an option anymore.

Link to comment
Share on other sites

Just now, cayars said:

So what should it be set to or do we not know yet?

We are looking into the issue. Thanks.

Link to comment
Share on other sites

  • 4 weeks later...
On 10/27/2020 at 9:03 PM, neik said:

Here is a log when the throttle wasn't kicking in.
What I did: Just started the movie, lowered the quality to force transcoding and let it run f or couple of minutes. At the end the buffer was at more than 4 min and kept going.

ffmpeg-transcode-54d4d97f-0c78-481c-b4b8-3ce6d58af9f2_1.txt 150.05 kB · 3 downloads

This is still an issue on 4.6.0.8.

@softworkz, you said you made some changes, should they have tackled this?

Link to comment
Share on other sites

On 12/16/2020 at 9:18 PM, softworkz said:

Have you made the change to the config file as explained above?

Just tested it with the second throttle method but the result is the same.
So, issue exist with both methods.

Btw. what one should I stick to for daily use? Shall I change it back to the default or do both work fine?

Link to comment
Share on other sites

@neik - Thanks for the log.

In fact, throttling gets active as can be seen in the log. 

Our throttling works in a way that it doesn't completely stop processing in ffmpeg. If we would do so, this might trigger internal (or depending on the source also external) timeouts.
That's why throttling "only" (but strongly) slows down the processing - as the actual goal is to save server-side resources. In your case, the processing rate with throttling active is at about 10% of the video playback speed.

In the future - with systems becoming more powerful - we may probably need to increase the throttling "strength" or make it configurable.

Edited by softworkz
  • Thanks 1
Link to comment
Share on other sites

7 minutes ago, softworkz said:

Our throttling works in a way that it doesn't completely stop processing in ffmpeg. If we would do so, this might trigger internal (or depending on the source also external) timeouts.
That's why throttling "only" (but strongly) slows down the processing - as the actual goal is to save server-side resources. In your case, the processing rate with throttling active is at about 10% of the video playback speed.

Already thought it would be that way.
Just wanted to make sure it is doing what it should.

Thank you for checking and confirming! 🙂

  • Like 1
Link to comment
Share on other sites

2 hours ago, neik said:

Btw. what one should I stick to for daily use? Shall I change it back to the default or do both work fine?

I consider the "ThrottleByStreamBufferSize" as the preferable mechanism. Its "drawback" is that it requires client applications to properly and regularly report the current playback position. But this is something that all Emby clients are normally doing. 

The other method, "ThrottleBySegmentRequest" works based on the segments that a client is requesting (trying to always be a few segments ahead of the most recently requested segment). As such, it doesn't need to know the playback position. The drawback of that method is, that the throttling behavior is no longer "predictable" and might appear confusing or "non-functional" to users because in that case, it is completely controlled by the clients.
Each client has a different byte-size or number of segments that it will pre-load and cache. Especially in cases where you have a high-bandwidth video at the server and a small-screen client like a phone, the client may choose to completely download all segments without pause because the transcoded version is just like less than a few dozen megabytes in total, while the server would need to run at full power to produce the small-size video from the original video (of course, that's an extreme example for illustration).

In those latter cases, users will come and report that "throttling doesn't work".

That's why I think the former method is better for default - it provides predictable behavior and leaves control at the server side.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • 10 months later...

Just for clarification since this thread was recently linked to:

BySegmentRequest

is now the default being used and set on all new Emby Installations now correct?
That's back to being the opposite of this thread.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...