2
$\begingroup$

I am wondering this, as e.g. YouTube offers some videos 60fps, but computer may be too slow to play them.

$\endgroup$
  • $\begingroup$ The decoder could start skipping decoding video frames to catch up. Up until the point it can't catch up and audio starts stuttering. $\endgroup$ – PaulHK May 13 '20 at 12:06
  • $\begingroup$ When you upload a video to youtube they will automaticaly generate low resolution 30fps versions. When you play back the video on mobile the mobile device doesn't have to skip frames because it is reading a 30fps version already. $\endgroup$ – zoran404 May 13 '20 at 14:57
1
$\begingroup$

It is likely somewhat possible, depending on how the video was encoded. The player can easily skip displaying half the frames but that won't gain us much. What needs to happen is to skip decoding some of the frames.

Modern video codecs nearly all use a mix of I, P and B frames. Most are quite flexible in which frame types are used and only specify what a decoder should be able to handle, leaving the encoder free to pick the most appropriate way to encode a video.

Because of this, even if we want to show only half the frames, we may still end up having to decode more than that. It is possible to build a video stream where every other frame can be skipped because it is not referenced by other frames. But I suspect that most encoders will prioritize encoding efficiency over this rigid requirement. So in practice, we will only be able to skip decoding a smaller number of frames, unless the video was specifically encoded to support this scheme.

The other issue is player support. The player would need to recognize that computing power is insufficient and specifically target half the frame rate. In practice, most that I've seen will skip erratically instead. They expect the lack of computing power to be temporary as that is the most common scenario.

The expected fix for a permanent lack of computing power is to use a lower quality video stream. For devices with well known computing power (eg. phones, tablets, etc), this can be handled automatically by not presenting the high quality alternative. I don't know specifically if YouTube's "auto" quality setting handles this the same way it handles insufficient bandwidth but it could certainly be done and would be a much better solution.

TL;DR: It's possible but usually not worth doing.

$\endgroup$
  • $\begingroup$ I found that browser extension called enhanced-h264ify has an option to block 60fps video on YouTube, but probably there are separate video files of lower frame-rate. $\endgroup$ – jarno May 13 '20 at 14:46
  • $\begingroup$ @jarno yes, a typical youtube video has at least 5-10 different stream options with different resolutions, bitrates and codecs. For example, I checked a random 4K video and it has: 256x144, 426x240, 640x360, 854x480, 1280x720, 1920x1080, 2560x1440, 3840x2160. Each of those resolutions is available in multiple versions, for a total of 22 choices. And that's not a 60fps video, those might have even more. $\endgroup$ – Olivier May 13 '20 at 15:05
  • $\begingroup$ I checked a 60fps one for fun and indeed, just for 4K there are 4 streams: two 60fps (avc/webp), one 30fps and one 60fps with HDR. Interestingly, there are 60fps HDR streams down to 256x144 resolution. $\endgroup$ – Olivier May 13 '20 at 15:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.