返回

iOS ijkplayer画中画播放全攻略

Android

使用 ijkplayer 在 iOS 上实现画中画播放

简介

画中画 (PiP) 是一种强大功能,允许用户在进行其他活动的同时观看视频。在 iOS 15.0 及更高版本中,开发者可以使用 AVPictureInPictureController 类在自定义播放器中实现 PiP。本博客将指导你使用流行的开源 ijkplayer 库实现 PiP 播放。

步骤

1. 创建 PiP 控制器

首先,你需要创建一个 AVPictureInPictureController 实例并将其绑定到你的播放器图层:

let pictureInPictureController = AVPictureInPictureController(playerLayer: player.layer)

2. 实现 PiP 代理

在你的视图控制器中,实现 AVPictureInPictureControllerDelegate 协议。这允许你处理 PiP 播放的事件,例如开始、停止和错误:

extension ViewController: AVPictureInPictureControllerDelegate {
    func pictureInPictureControllerWillStartPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {}
    // ...
}

3. 启动 PiP

调用 startPictureInPicture 方法启动 PiP 播放:

pictureInPictureController.startPictureInPicture()

代码示例

以下是完整的代码示例:

import AVFoundation
import IJKMediaFramework

class ViewController: UIViewController, AVPictureInPictureControllerDelegate {

    private var player: IJKFFMoviePlayerController!
    private var pictureInPictureController: AVPictureInPictureController!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        player = IJKFFMoviePlayerController()
        pictureInPictureController = AVPictureInPictureController(playerLayer: player.layer)
        pictureInPictureController.delegate = self
        pictureInPictureController.startPictureInPicture()
    }

    // ...
}

注意

  • PiP 播放仅适用于流媒体视频。
  • PiP 播放可能会消耗更多电量。

常见问题解答

1. 哪些 iOS 设备支持 PiP?

iOS 15.0 及更高版本支持的设备。

2. PiP 播放对 ijkplayer 有哪些要求?

ijkplayer 0.8.10 及更高版本。

3. 如何停止 PiP 播放?

调用 stopPictureInPicture 方法。

4. 如何检查 PiP 播放是否可用?

使用 isPictureInPicturePossible 属性。

5. PiP 播放中是否支持音频播放?

是的,PiP 播放支持音频播放。

结论

本文提供了使用 ijkplayer 在 iOS 设备上实现 PiP 播放的分步指南。通过遵循这些步骤,你可以为你的自定义播放器添加强大的 PiP 功能。