iOS 13またはtvOS 13でAVPictureInPictureControllerを使用しようとするとエラーが発生する


10

UIViewでビデオを表示しているiOSとtvOSで実行する小さなアプリがあります。iOS12とtvOS 12をサポートしています。tvOSのPIPを表示したいので、AVPictureInPictureControllerを使用しようとするとエラーが発生します。 」。

展開ターゲットはtvOS 13に設定されていますが、Xcodeでは、機能->バックグラウンドモード->「オーディオ、エアプレイ、ピクチャーインピクチャー」が有効になっています。この基本コードはエラーになります。

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

その他の不足している設定や何か必要なことはありますか?

ありがとう

回答:


0

Appleのドキュメントに記載されているように、tvOSではサポートされていません

SDK

iOS 9.0以降

macOS 10.15以降

Mac Catalyst 13.0以降


AVFoundationもインポートしてみましたが、それでも同じエラーが発生しました。
sia

-はい..今試してみました..それでも同じエラー。「AVPictureInPictureController」はtvOS13ではサポートされていないと思います(わかりません)。
sia

いいえ、そうではありません。私の最新の回答を確認してください。iOSでエラーが発生すると思いました
Dimitrie-Toma Furdui

-このリンクあたりとしてdeveloper.apple.com/documentation/avkit/... -それは可能かもしれないルックスは(再びないように注意してください)、それを実装する
SIA

最初に、再生オーディオカテゴリを設定していることを確認します。通常、ビデオコンテンツの再生にAVPlayerViewControllerを使用します。PIPモードは、開発されたアプリケーションがbackgroundに入ると自動的に呼び出されますが、監視された条件を満たす場合に限ります。使用しているプレーヤーは全画面モードである必要があります。ビデオはその中で再生され、PIPはデバイスによってサポートされている必要があり、ユーザーがPIPモードから戻ったときにプレーヤーのUIを復元するために最後にデリゲートメソッドを記述します。ビデオが再生され、PIPがデバイスでサポートされている必要があります。ソース:shorturl.at/AEXY8
redhatvicky

0

実装のギャップによる問題の可能性:

AVPlayerViewControllerの使用例:最初に、再生オーディオカテゴリを設定していることを確認します。通常、AVPlayerViewControllerを使用してビデオコンテンツを再生します。開発されたアプリケーションがバックグラウンドに入ると、PIPモードが自動的に呼び出されますが、以下の条件を満たす場合にのみ、1つ目は、使用しているプレーヤーが全画面モードであること、2つ目は、ビデオがユーザーがピクチャーインピクチャーモードから戻ったときにプレーヤーのUIを復元するには、デバイスとすべての書き込みデリゲートメソッドでサポートする必要があります。

_AVPictureInPictureControllerを使用した実装:以下のスレッドに実際の例があります。 AVPictureInPictureControllerを表示する方法は?

問題のドリルダウン: 宣言されていないエラーが実装のギャップによるものではなく、Xcodeの環境によるものであることを確認するために、ソースをダウンロードしてから、ワークスペース内の別のフォルダー内にSourcesフォルダーを追加します。「ファイルを...に追加」オプションを使用して、xcode内を確認します。

XCODEでの更新による問題の可能性 アプローチによる修正の試み1 * .pchファイルではなく、ヘッダーまたは本文、あるいはその両方にクラスを明示的に含めます。その後、このエラーは解消される可能性があります。派生データの削除も時々機能します。最近、たまたま設定で場所を変更しましたか?派生データにRAMディスクを使用し、デフォルトに戻ったときに、このエラーが発生する場合があります。これは最も厄介なケースです。このエラーが発生すると、ほとんどすべてのファイルでこのエラーが発生します。

アプローチ2による修正を試す 簡単な解決策は、pchファイルから#import行の1つを削除して再コンパイルするのに役立つ場合があります。その後、削除した行を元に戻し、再コンパイルすると、すべての誤ったエラーが発生して正常にコンパイルされます。

XCODEエラーキャッシュによる問題の可能性、以下の手順に従ってください。ビルドのクリーンアップ:Command-Option-Shift-Kでビルドフォルダーをクリーンアップします。シミュレーターのリセット:iOSシミュレーター>コンテンツと設定のリセットを選択します。

非常に的を絞った方法で/ var / foldersを削除します。rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

ソース: キャッシュを空にしてすべてのターゲットをクリーンアップする方法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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.