无法在屏幕上获取 AVPlayerLayer 中视频的大小

Posted

技术标签:

【中文标题】无法在屏幕上获取 AVPlayerLayer 中视频的大小【英文标题】:Can't get size of the video in AVPlayerLayer on screen 【发布时间】:2012-08-22 10:09:44 【问题描述】:

我有一个包含视频播放器 (AVPlayer) 的图层 (AVPlayerLayer) 视图。

我使用来自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 来填充整个视图,因为我需要显示横向和纵向视频。

【问题讨论】:

我不确定您想要哪种尺寸。实际视频大小(视频帧尺寸)?播放器层有视频内容的部分? 我想在 PlayerView 缩放/调整大小后在 AVPlayerLayer 中获取视频帧。不是实际的视频大小。 [自层].frame.size? 它为您提供层大小,但不是该层中调整大小的视频的大小。我找到了答案:***.com/a/12113468/1545158 是的,这行得通:GRect transformBounds = CGRectApplyAffineTransform([avplayerLayer bounds], CATransform3DGetAffineTransform(playerLayer.sublayerTransform)); 【参考方案1】:

您可以使用AVPlayerLayervideoRect 属性。您可以在documentation 中了解更多信息。

【讨论】:

以上是关于无法在屏幕上获取 AVPlayerLayer 中视频的大小的主要内容,如果未能解决你的问题,请参考以下文章

似乎无法获得 AVPlayerLayer 的视频高度

ios在表格视图单元格中视觉调整图像大小

无法触摸包含 AVPlayerLayer 的 UIView

获取 React-Native sectionlist 中视口中的当前部分

在没有动画效果的avplayerlayer上设置videogravity

在 UICollectionView 上使用 AVPlayer 和 AVPlayerLayer 显示多个视频