Проблема
Мое окно PiP неожиданно останавливается и закрывается через короткое время, хотя я реализовал AVPlayerLooper для плавного зацикливания. Консоль показывает:
Код: Выделить всё
> signalled err=-12860
⚠️ PiP stopped
Я создаю 10-секундное видео с текстом, преобразованным в кадры, а затем воспроизвожу его с помощью AVQueuePlayer и AVPlayerLooper.
Настройка проигрывателя:
Код: Выделить всё
let asset = AVAsset(url: videoURL)
let playerItem = AVPlayerItem(asset: asset)
let player = AVQueuePlayer(playerItem: playerItem)
player.isMuted = false
player.volume = 0.01 // Keep audio session active
player.allowsExternalPlayback = false
// Use AVPlayerLooper for seamless looping
let templateItem = AVPlayerItem(asset: asset)
let playerLooper = AVPlayerLooper(player: player, templateItem: templateItem)
Код: Выделить всё
let audioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(.playback, mode: .default,
options: [.mixWithOthers, .duckOthers, .allowAirPlay])
try audioSession.setActive(true)
Код: Выделить всё
let pipController = try AVPictureInPictureController(playerLayer: playerLayer)
pipController.delegate = self
pipController.requiresLinearPlayback = true
pipController.startPictureInPicture()
PiP успешно запускается и работает некоторое время после свертывания приложения.
Он внезапно завершается с ошибкой -12860.
Похоже, что видео завершается, несмотря на наличие AVPlayerLooper.
Вопросы
Почему PiP останавливается даже при использовании AVPlayerLooper?
Должен ли я делать четкую ссылку на playerLooper?
Не слишком ли мало 10 секунд? Будет ли 30–60 секунд более стабильным?
Бонус
Как приложения конкурентов динамически выделяют текст в PiP?
Используют ли они AVSampleBufferDisplayLayer?
Среда
iOS 16.2+ / iPhone 15 Pro Max
Swift 5 / SwiftUI
AVFoundation, AVKit
Будем благодарны за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/798 ... per-how-to
Мобильная версия