Fix video fit on portrait orientations

This commit is contained in:
Tamius Han 2019-10-27 22:11:07 +01:00
parent 2422cec1e9
commit 470a7e8883

View File

@ -120,15 +120,32 @@ class Scaler {
actualHeight: 0, // height of the video (excluding letterbox) when <video> tag height is equal to height actualHeight: 0, // height of the video (excluding letterbox) when <video> tag height is equal to height
} }
if (fileAr < playerAr) {
if (fileAr < ar.ratio){ if (fileAr < ar.ratio){
// imamo letterbox zgoraj in spodaj -> spremenimo velikost videa (a nikoli širše od ekrana) // in this situation we have to crop letterbox on top/bottom of the player
// letterbox -> change video size (but never to wider than monitor width) // we cut it, but never more than the player
videoDimensions.xFactor = Math.min(ar.ratio, playerAr) / fileAr; videoDimensions.xFactor = Math.min(ar.ratio, playerAr) / fileAr;
videoDimensions.yFactor = videoDimensions.xFactor; videoDimensions.yFactor = videoDimensions.xFactor;
} else { } else {
videoDimensions.xFactor = fileAr / Math.min(ar.ratio, playerAr); // in this situation, we would be cutting pillarbox. Inside horizontal player.
// I don't think so. Except exceptions, we'll wait for bug reports.
videoDimensions.xFactor = 1;
videoDimensions.yFactor = 1;
}
} else {
if (fileAr < ar.ratio){
// in this situation, we need to add extra letterbox on top of our letterbox
// this means we simply don't crop anything _at all_
videoDimensions.xFactor = 1;
videoDimensions.yFactor = 1;
} else {
// meant for handling pillarbox crop. not quite implemented.
// videoDimensions.xFactor = fileAr / Math.min(ar.ratio, playerAr);
// videoDimensions.yFactor = videoDimensions.xFactor;
videoDimensions.xFactor = Math.max(ar.ratio, playerAr) * fileAr;
videoDimensions.yFactor = videoDimensions.xFactor; videoDimensions.yFactor = videoDimensions.xFactor;
} }
}
this.logger.log('info', 'scaler', "[Scaler::calculateCrop] Crop factor calculated — ", videoDimensions.xFactor); this.logger.log('info', 'scaler', "[Scaler::calculateCrop] Crop factor calculated — ", videoDimensions.xFactor);