Imagine you have recorded/captured the screen at 1080p, but it was displaying a 480p video maximized to fullscreen.
The result file is technically 1080p, but it really is showing a 480p video, that is what I mean by "real resolution".
Now imagine I have a lot of these 1080p videos, having different and unknown "real resolutions", how can I find/detect these resolutions?
The goal is resize the videos to the real resolutions and not waste disk space.
(same question for FPS)
The tool that I prefer to use is ffmpeg, but i'm open to other tools/apps if they are free for personal use.
-
1If it was recorded at 1080p, then it is a 1080p video. The "real" resolution data isn't available - you'll have to assess it subjectively.– GyanAug 7, 2020 at 5:05
-
I agree with @Gyan. There is no way to do it automatically.– MattAug 7, 2020 at 5:53
-
Most codecs would take advantage of the redundancy caused by up-rezzing a video and would be able to reduce the file size more anyway. It would be a lot of work, and may not save you much disk space.– stibAug 7, 2020 at 9:33
-
Resizing by a player isn't usually neighbour but bilinear or occasionally bicubic, so some redundancy but not as much as with nearest neighbour method.– GyanAug 7, 2020 at 11:33
2 Answers
If you satisfy with your video outputting on a 1080p device, the original video aspect ratio has to be 16:9; therefore, the original video has no choice to be 480p, 720p, or 1080p. The next step is the transformation, there are plenty of filters you can choose to determine it is 480p; on the other hand, choosing transforming to 720p or no transformation, stay in 1080p, depends on contours detection on white background.
As you mentioned ffmpeg and opencv, you should find such APIs easily.
I'm not sure of what brand of software might be capable of this, but I disagree with the commenters saying it's impossible to assess.
Imagine a 480p video consisting entirely of black and white pixel lines. Assuming away compression artifacts, it'd be clear that upscaled to 1080p, the contrast edges would likely not be clean and sharp compared to a proper 1080p video made of black and white lines. Some measurement of average contrast between pixels or peak contrast would probably let you cull what's lowest contrast versus not. While I agree there's no way to tell what the native original resolution was, you'd be able to rank videos by contrast/detail in a way. In short, how strongly on average one pixel differs from the next will give you a measurement of detail.