Получение ошибки при попытке использовать 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

redhatvicky
источник
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

С Хабиб Улла
источник