- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 AVPlayer
创建自定义视频播放器时+ AVPlayerLayer
+ AVPictureInPictureController
对于运行 iOS 14 (beta 7) 的 iPhone,当应用在 player.start()
后进入后台时,视频不会自动进入画中画模式从 UIButton 操作调用。
使用 AVPlayerViewController
不会重现该问题这似乎表明 AVPictureInPictureController
存在问题一般在 iOS 14 上,但我想知道是否还有其他人遇到过这个问题并知道任何解决方法。我也在 rdar://8620271
下向 Apple 提交了这个问题
示例代码。
import UIKit
import AVFoundation
import AVKit
class ViewController: UIViewController {
private let player = AVPlayer(url: URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!)
private var pictureInPictureController: AVPictureInPictureController!
private var playerView: PlayerView!
private var playButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
playerView = PlayerView(frame: CGRect(x: 0, y: 44, width: view.bounds.width, height: 200))
playerView.backgroundColor = .black
playerView.playerLayer.player = player
view.addSubview(playerView)
playButton = UIButton(frame: CGRect(x: view.bounds.midX - 50, y: playerView.frame.maxY + 20, width: 100, height: 22))
playButton.setTitleColor(.blue, for: .normal)
playButton.setTitle("Play", for: .normal)
playButton.addTarget(self, action: #selector(play), for: .touchUpInside)
view.addSubview(playButton)
pictureInPictureController = AVPictureInPictureController(playerLayer: playerView.playerLayer)
do {
let audioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(.playback)
try audioSession.setMode(.moviePlayback)
try audioSession.setActive(true)
} catch let e {
print(e.localizedDescription)
}
}
@objc func play() {
player.play()
}
}
class PlayerView: UIView {
override class var layerClass: AnyClass {
return AVPlayerLayer.self
}
var playerLayer: AVPlayerLayer! {
return layer as? AVPlayerLayer
}
}
最佳答案
问题的根本原因最终是双重的:
AVAudioSession.sharedInstance().setActive(true)
必须叫之前 AVPictureInPictureController
被初始化。AVPlayerLayer
的框架尺寸必须具有不大于 16/9 的纵横比(作为单独的错误提交,rdar//8689203
)关于ios - AVPictureInPictureController 在应用程序后台运行时不会自动启动画中画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63739978/
使用 AVPlayer 创建自定义视频播放器时+ AVPlayerLayer + AVPictureInPictureController对于运行 iOS 14 (beta 7) 的 iPhone,当
根据文档,willStop 和 didStop 委托(delegate)方法以及 restoreUserInterfaceForPictureInPictureStopWithCompletionHa
对于默认模式,当用户启动画中画时,小窗口从最新的位置开始(latest pip window closed position)。 有没有办法设置起始位置,例如:左上角、右上角、左下角、右下角? 最佳答
我在AVPPlayer中使用了AVPictureInPictureController,并将其初始化为AVPlayerLayer。 - (id)initWithFrame:(CGRect)frame
我需要能够访问 WKWebView 的原生 AVPictureInPictureController 的委托(delegate)回调方法 pictureInPictureControllerDidSt
我是一名优秀的程序员,十分优秀!