Слияние AVAssets - масштаб для заполнения - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь масштабировать, центрировать и заполнять стандартное видео 16: 9 с установленным разрешением 1920x1080.Кажется, что проблемы не в коде, а в математической проблеме, которую я не могу решить, особенно для вращающихся видео.

Что мне нужно сделать, чтобы центрировать видео, так как оно масштабируется, но часто оставляет черную рамку на видео.Я знаю, что это просто случай игры с CGAffineTransformMakeTranslation

enter image description here

-(CGAffineTransform)exportTransform:(AVAsset *)asset {
AVAssetTrack *track = [asset tracksWithMediaType:AVMediaTypeVideo].firstObject;
UIImageOrientation orientation = UIImageOrientationUp;
BOOL portrait = false;

CGAffineTransform firstTransform = track.preferredTransform;

if(firstTransform.a == 0 && firstTransform.b == 1.0 && firstTransform.c == -1.0 && firstTransform.d == 0) {
    orientation= UIImageOrientationRight;
    portrait = true;
}

if(firstTransform.a == 0 && firstTransform.b == -1.0 && firstTransform.c == 1.0 && firstTransform.d == 0) {
    orientation =  UIImageOrientationLeft;
    portrait = true;

}

if(firstTransform.a == 1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == 1.0) {
    orientation =  UIImageOrientationUp;

}

if(firstTransform.a == -1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == -1.0) {
    orientation = UIImageOrientationDown;

}

CGFloat FirstAssetScaleToFitRatio = self.videoresize.height / track.naturalSize.height;
if (portrait) {
    FirstAssetScaleToFitRatio = self.videoresize.width / track.naturalSize.height;
    CGAffineTransform FirstAssetScaleFactor = CGAffineTransformMakeScale(FirstAssetScaleToFitRatio,FirstAssetScaleToFitRatio);
    return CGAffineTransformConcat(track.preferredTransform, FirstAssetScaleFactor);

}
else {
    CGAffineTransform FirstAssetScaleFactor = CGAffineTransformMakeScale(FirstAssetScaleToFitRatio,FirstAssetScaleToFitRatio);
    return CGAffineTransformConcat(CGAffineTransformConcat(track.preferredTransform, FirstAssetScaleFactor),CGAffineTransformMakeTranslation(0.0, -0.0));

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...