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)