SKVideoNode не соблюдает соотношение сторон

Я сопоставляю SKScene с SKVideoNode с одной из сторон SCNBox. Я изо всех сил пытаюсь получить правильное соотношение сторон видео. Вот код:

    NSURL * url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], @"preview.mp4"]];
    AVAsset * asset = [AVAsset assetWithURL:url];
    AVAssetTrack * track = [[asset tracksWithMediaType:AVMediaTypeVideo] firstObject];
    CGSize size = track.naturalSize;

    NSLog(@"size w is %f Size h is %f", size.width, size.height);

    float max = MAX(size.width, size.height);
    size = CGSizeMake(max, max);

    SKScene * videoScene = [SKScene sceneWithSize:size];
    videoScene.scaleMode = SKSceneScaleModeAspectFit;

    videoPlayer = [AVPlayer playerWithURL:url];

    videoNode = [SKVideoNode videoNodeWithAVPlayer:videoPlayer];
    videoNode.position = CGPointMake(size.width/2, size.height/2);
    videoNode.size = size;
    videoNode.yScale = -1;
    [videoNode play];
    [videoScene addChild:videoNode];

    for (int n = 0; n < 6; n++){

        SCNMaterial * material = [SCNMaterial material];
        material.diffuse.contents = (n == 4) ? videoScene : bodyImage;
        [materials addObject:material];

    }

Он игнорирует любые настройки соотношения сторон, такие как подгонка и заливка. Он просто сжимает его, чтобы он соответствовал ограничивающей рамке. Увеличение ограничительной рамки, похоже, не помогает. Даже при фиксированном размере относительно видео соотношение сторон игнорируется.


person Johnny Rockex    schedule 26.07.2018    source источник
comment
Обратите внимание, что если вы поддерживаете только iOS 11 и выше, вам не нужен AVPlayer › SKVideoNode › SKScene › SCNMaterialProperty — вы можете установить diffuse.contents для AVPlayer напрямую.   -  person rickster    schedule 26.07.2018
comment
Я попытался установить слой игрока напрямую, но это не сработает. Вы знаете код для этого?   -  person Johnny Rockex    schedule 27.07.2018
comment
Не слой игрока, а просто игрок — согласно документам, SCNMaterialProperty.contents может принимать AVPlayer объект в iOS 11 и выше. У вас могут возникнуть или не возникнуть проблемы, если этот проигрыватель также подключен к слою проигрывателя.   -  person rickster    schedule 27.07.2018
comment
Я тоже столкнулся с этой проблемой. Настройка AVPlayer напрямую на диффузный контент сработала - спасибо. Но нет решения проблемы с соотношением сторон.   -  person Jonny    schedule 27.09.2018
comment
Кстати, это выглядит связанным: размер соотношения сторон видео для skvideonode в scenekit"> stackoverflow.com/questions/34928396/ посмотрю позже.   -  person Jonny    schedule 27.09.2018