How to compromise between byte rate, resolution and fps I want to stream a video on a device full screen (therefore, the dimensions of the display are fixed)

What should I focus on to offer the best experience for a given bandwidth? Should I have other concerns than bandwidth (GPU...)?

Here is my understanding so far:


fps is very straightforward in how it works. I don't seen a big difference between 15fps - 30fps+ (compare to the other parameters I can change) But since videos are compressed based on frames deltas, I'm not sure caping fps save any noticeable bandwidth. It might save GPU decoding and rendering, but I'm not sure of that either: Let say the screen has a refresh rate of 60Hz, would that help to have a video fps of 15 vs 30? It still probably helps on the decoding, but most devices are fine with those rates.
dimensions (ie 720p, 2k...) The video will be stretched or reduced to fit screen size. For a constant byte rate, Do I get a different result with a 480p with 0.1 byte/pixel/frame ratio vs than a 720p with a 0.04 byte/pixel/frame (~same total) ?


Would the response change if the size of the screen is roughly 480p vs much larger?
Does that impact decoding/rendering at all? I guess decoding because you have to decode every pixel. Not sure about rendering since the size of the displayed video is fixed.

Finally byte rate. This is the closest parameter to the bandwidth constraint. Is fixing byte rate gonna find the best compromise to do to offer the best quality, or should I still change other parameters?


Does changing keyframes frequency lower the bandwidth used (while having the downsides of having less keyframes like for seeking)



(I'm using ffmpeg h264 encoder)
Since bandwidth is fixed, first step to maximize quality is to full use that bandwidth so bitrate should be set to that number.

Frame rate will make a modest difference, once a fixed bitrate is specified, since typically x264 places keyframes 250 frames apart and so all or most frames in a random second are delta frames, so leave that between 24 to 30.

For keeping a given quality, size increases, but not linearly, with resolution. So 1080p, with 2.25 times the no. of pixels as 720p, takes around, say, 1.5 to 1.8 times to keep the same quality. This choice depends entirely on the nature of content. For live-action material, 480p is good enough. Remember, till the advent of HD a decade ago, American television audiences had been watching 480i feeds for decades. For 2D animation, with sharp edges, 720p may be a better choice.