swift AVPlayerViewController根本不会在全屏模式下播放,一旦你点击展开图标,什么设置会导致这种情况?

rekjcdws  于 2023-09-30  发布在  Swift
关注(0)|答案(2)|浏览(168)

我有一个简单的AVPlayerViewController,它以通常的方式坐在屏幕上的一个盒子里,它可以完美地播放/做任何事情。

如果你点击扩展器,

电话完美地调出通常的正常全屏播放器,

然而,它只是不播放-它只是保持黑色。

详细来说

  • 在主屏幕上,应用程序中的“小”视频播放器似乎暂停了
  • 您现在根本听不到电话中的音频
  • 在全屏播放器上,它似乎设置了擦洗栏的位置,正确地,与应用程序中的“小”播放器上的位置相同
  • 全屏幕播放器似乎是当前播放非暂停模式FWIW
  • 全屏播放器根本不播放任何内容。如果你在全屏播放器上播放暂停/播放/暂停等,这没有什么区别
  • 当你关闭全屏播放器时,一切都正常工作(应用程序中的“小”播放器继续愉快地播放,音频等正常)

我有这一套,

我尝试了两个当前的Xcode,也会回到14.3。
我尝试了许多物理手机,iOS版本等。
AVPlayerViewController实际上在视图控制器堆栈中,即为它设置了“addChild”。
我没有子类化AVPlayerViewController。
我尝试了许多设置,如entersFullScreenWhenPlaybackBeginscanStartPictureInPictureAutomaticallyFromInline,它们不相关。
到底是什么问题?

pgccezyw

pgccezyw1#

在我的一个项目中,我在iPhone和iPad屏幕上播放视频内容时也遇到了同样的问题。所以我所做的是根据设备的屏幕大小初始化视频的重力,就像下面一样。

var videoGravity: AVLayerVideoGravity = .resizeAspectFill

通过设置此选项,可以帮助视频帧根据屏幕大小自行调整。

qyswt5oh

qyswt5oh2#

可能解决方案-苹果问题

最近(2023)AVKit中可能存在错误或异常行为。
简而言之-似乎

  • 当AVPlayerViewController进入全屏模式时,AVPlayer可以完美工作。

但是

  • 当AVPlayerViewController进入全屏时,AVQueuePlayer只是***不工作***。

(当然,不幸的是,人们几乎总是使用AVQueuePlayer,因为AVPlayer本身有点没用!我只是发现了这个问题,因为我非常幸运地碰巧在实验这个问题时使用了AVPlayer。)

Demo ...

  • 很容易演示。只要在AVPlayerAVQueuePlayer之间切换,您就会发现当您使用AVQueuePlayer时,它会非常失败

不是最远视图控制器?

如果您正在使用的视图控制器不是nav堆栈中最后一个,则似乎会出现此问题。但情况尚不清楚。

相关问题