Получение ошибки при попытке использовать AVPictureInPictureController в iOS 13 или tvOS 13


10

У меня есть небольшое приложение, которое работает на iOS и tvOS, где я показываю видео в UIView.Он поддерживает iOS 12 и tvOS 12. Теперь хочу показать PIP для tvOS, поэтому попытка использовать AVPictureInPictureController выдает ошибку «Использование необъявленного идентификатора» AVPictureInPictureController ».

Хотя цель развертывания установлена ​​на tvOS 13. В Xcode возможности -> Фоновый режим -> включены «Аудио, трансляция и картинка в картинке». Этот основной код дает ошибку.

#import <AVKit/AVKit.h>
if ([AVPictureInPictureController isPictureInPictureSupported]) {
   // code 
}

Какие-то другие настройки отсутствуют или что-то еще мне нужно сделать?

Спасибо

Ответы:


0

Не поддерживается в tvOS, как указано в документации Apple

SDKs

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+


попытался импортировать AVFoundation также .. все та же ошибка.
— sia

- да .. только сейчас попробовал .. все та же ошибка. Я думаю, что "AVPictureInPictureController" не поддерживается на tvOS13 (не уверен).
— sia

Нет, это не так, проверьте мой обновленный ответ. Извините, я думал, что это дает ошибку на iOS
— Dimitrie-Toma

по этой ссылке - developer.apple.com/documentation/avkit/… - похоже, что это возможно реализовать (опять же не уверен)
— sia

Сначала убедитесь, что вы установили категорию воспроизведения аудио, как правило, при использовании AVPlayerViewController для воспроизведения видеоконтента. Режим PIP автоматически активируется, если разработанное приложение переходит в фоновый режим, но только если удовлетворяет условию. Используемый нами проигрыватель должен находиться в полноэкранном режиме, в нем должно воспроизводиться видео, и устройство должно поддерживать PIP и, наконец, написать метод делегата для восстановления пользовательского интерфейса проигрывателя, когда пользователь вернется из режима PIP. В нем должно воспроизводиться видео, и устройство должно поддерживать PIP. источник: shorturl.at/AEXY8
— redhatvicky

0

ВОЗМОЖНОСТЬ ВОПРОСОВ В ОТНОШЕНИИ ПРОБЕЛОВ В РЕАЛИЗАЦИИ:

Поэкспериментируйте с AVPlayerViewController: сначала убедитесь, что мы установили категорию воспроизведения аудио, как правило, когда мы используем AVPlayerViewController для воспроизведения видеоконтента. Режим PIP будет автоматически вызываться, если разработанное приложение войдет в фоновый режим, но только если оно удовлетворяет указанному ниже условию. Во-первых, проигрыватель, который мы используем, должен находиться в полноэкранном режиме, во-вторых, мы должны убедиться, что видео должно быть Воспроизведение в нем, и третье - это PIP. Должно поддерживаться устройством и, наконец, метод записи делегата, чтобы восстановить пользовательский интерфейс проигрывателя, когда пользователь возвращается из режима «картинка в картинке».

Внедрение с _AVPictureInPictureController: рабочий пример можно найти в приведенной ниже теме. Как отобразить AVPictureInPictureController?

Развертывание проблемы. Чтобы подтвердить, что необъявленная ошибка возникла не из-за пробелов в реализации, а из-за environmentmnet в Xcode, загрузите исходный код, а затем добавьте папку Sources в другую папку в вашем рабочем пространстве. Добавьте папку с помощью " Добавить файлы в ... "вариант и теперь проверьте внутри xcode.

ВОЗМОЖНОСТЬ ВЫПУСКА, СВЯЗАННОГО С ОБНОВЛЕНИЕМ В XCODE Попытка Fix By Approach 1 Включите класс явно в заголовок и / или тело - вместо файла * .pch. Тогда эта ошибка может исчезнуть. Также иногда удаляются производные данные. Изменили ли вы местоположение в настройках в последнее время случайно? Некоторые получают эту ошибку, когда они используют виртуальный диск для производных данных, а затем возвращаются к значениям по умолчанию. Это самый раздражающий случай - поскольку он приводит к появлению этой ошибки почти во всех файлах.

Попробуйте Fix By Approach 2 Иногда простое решение может помочь удалить одну из строк #import из файла pch и перекомпилировать, что приведет к сбою, как и ожидалось. Затем верните удаленную строку обратно, перекомпилируйте и скомпилируйте ее нормально, с устранением всех ложных ошибок.

ВОЗМОЖНОСТЬ ВЫПУСКА В ТЕЧЕНИЕ ОШИБКИ XCODE, СЛЕДУЙТЕ НИЖЕ ШАГАМ Очистите сборку : Command-Option-Shift-K, чтобы очистить папку сборки. Сброс симулятора: выберите iOS Simulator> Сбросить содержимое и настройки. Перезапустите XCode. Удалите папку DerivedData в ~ / Library / Developer / Xcode / DerivedData Перезагрузите компьютер.

Удалите папки / var / очень целенаправленно. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Источник: Как очистить кэши и Clean All Targets Xcode 4 , а затем Xcode «Использование необъявленной идентификатора» ошибок, компилирует / работает просто отлично Использование необъявленной идентификатора в Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player


0

Создать простой видеоплеер

Во-первых, вам нужно реализовать базовый видеоплеер в файле ViewController.m вашего проекта, например:

#import "ViewController.h"

#import <AVKit/AVKit.h>

@interface ViewController ()
@property(nonatomic) AVPlayerViewController *playerViewController;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.view.backgroundColor = [UIColor blackColor];

  // Create a stream video player.
  AVPlayer *player = [[AVPlayer alloc] init];
  self.playerViewController = [[AVPlayerViewController alloc] init];
  self.playerViewController.player = player;

  // Attach video player to view hierarchy.
  [self addChildViewController:self.playerViewController];
  self.playerViewController.view.frame = self.view.bounds;
  [self.view addSubview:self.playerViewController.view];
  [self.playerViewController didMoveToParentViewController:self];
}

@end

Для дальнейшей помощи пройдите https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.