問題タブ [avplayerview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
20 参照

avplayerview - カスタム AVPlayerView: デフォルトで使用される初期化子を知っていますか?

標準の NSView イニシャライザ initWithFrame:(NSRect)frame; カスタムビューで呼び出されていません。シンプルなinitを試しましたが、これまでのところ何も呼び出されていません。また、 drawRect: メソッドは呼び出されません。では、AVPlayerView の初期化を傍受するにはどうすればよいでしょうか。

0 投票する
0 に答える
31 参照

xcode - URL と AVPlayerView の奇妙な点 - パス文字列を使用してムービーを開くことができない

質問:windowDidLoad()に挿入すると、このコードが機能しないのはなぜですか?

しかし、ダイアログピッカーを使用して同じパスで同じファイルを開くことができます(その後、呼び出された場合、ワンライナーは機能します)? URL または AVPlayerView について何か不足していますか? NSWindowController の目に見えないキャッシング? たぶん、私が見ることができないコーディングエラーですか?

設計:デフォルトでは、 を押すと、テキスト フィールドloadButtonから AVPlayerView を読み込もうとします。hardCodedPathデフォルトの (ただし編集可能な) パス文字列 (例: /Users/joeblogs/Desktop/my.mp4) は、IB でハードコーディングされています。チェックボックスがオフの場合、useHardCodedFlag代わりにファイル ピッカー ダイアログが使用されます。

テスト:

  1. 起動後、がオンのときにをloadButton押すと、URL を作成するために使用されます - を参照してください。デフォルトの URL パスが適切であることを確認しますが、AVPlayerView にはムービーの代わりにプレースホルダー (スラッシュ付きのムービー再生アイコン) が表示されるだけです。useHardCodedFlaghardCodedPathloadMovies()

  2. useHardCodedFlag次に、ファイル ピッカー ダイアログで同じファイルを無効にしてから選択すると、ムービーが完全に開き、選択した URL のパスが元のハードコードされたパスと同じであるとアプリが報告します。

  3. その時点でuseHardCodedFlag、テキスト フィールドから AVPlayerView を有効にして読み込みます。元のウィンドウが既に閉じていても、新しいウィンドウで正しく動作するようになりました。別の有効なパスをピッカーで最初に開くまで、別の有効なパスを貼り付けても失敗します (同じウィンドウまたは新規)。hardCodedPath

  4. 異なるムービーを持つ 2 つのウィンドウから始めて、コンテンツを交換することでムービーを交換し、各ウィンドウを有効にしてhardCodedPathヒットすることができます(少なくともウィンドウ レベルでは) キャッシュはありません。loadButtonuseHardCodedFlag

概要:パス文字列から構築された URL を使用して AVPlayerView にムービーを読み込むことができますが、モーダル ダイアログ ピッカーからの URL を使用して (アプリケーションの起動後) 最初に開いた場合に限ります。なんで?

コアの ~ ダース行はfunc loadMovies()一番上にありますが、見やすいように、WindowController 全体を含めます。これは定型的な macOS ドキュメント テンプレートに基づいて構築されており、他の機能 (開く、保存など) は追加されていません。