Не удается получить размер видео в AVPlayerLayer на экране

У меня есть представление со слоем (AVPlayerLayer), которое содержит видеоплеер (AVPlayer).

Я использовал код из developer.apple.com для отображения видео на экране.

@implementation PlayerView
+ (Class)layerClass {
    return [AVPlayerLayer class];
}
- (AVPlayer*)player {
    return [(AVPlayerLayer *)[self layer] player];
}
- (void)setPlayer:(AVPlayer *)player {
    [(AVPlayerLayer *)[self layer] setPlayer:player];
}
@end

Как я могу получить размер видео в playerview.frame? Я не могу использовать videoGravity для заполнения всего кадра представления, потому что мне нужно отображать альбомное и портретное видео.


person Andrey Banshchikov    schedule 22.08.2012    source источник
comment
Я не уверен, какой размер вы хотите получить. Фактический размер видео (размеры видеокадра)? Часть слоя проигрывателя с видеоконтентом?   -  person djromero    schedule 22.08.2012
comment
Я хочу получить видеокадр в AVPlayerLayer после масштабирования/изменения размера PlayerView. Не реальный размер видео.   -  person Andrey Banshchikov    schedule 22.08.2012
comment
[собственный слой].frame.size?   -  person Davyd Geyl    schedule 27.08.2012
comment
Он дает вам размер слоя, но не размер измененного видео в этом слое. Я нашел ответ: stackoverflow.com/a/12113468/1545158   -  person Andrey Banshchikov    schedule 28.08.2012
comment
да, это работает: GRect transformBounds = CGRectApplyAffineTransform([avplayerLayerbounds], CATransform3DGetAffineTransform(playerLayer.sublayerTransform));   -  person yeahdixon    schedule 24.04.2013


Ответы (1)


Вы можете использовать свойство videoRect файла AVPlayerLayer. Подробнее об этом можно прочитать в документации.

person Vahan Babayan    schedule 09.09.2016