WWDC Quick Look 💓 By SwiftGGTeam
Capture and stream apps on the Mac with ReplayKit

Capture and stream apps on the Mac with ReplayKit

元の動画を見る

ハイライト

ReplayKit は WWDC 2020 で macOS 上で発表され、Mac アプリでアプリ内での録画、オーディオおよびビデオ サンプルの取得、サードパーティのライブ ブロードキャストの開始、ゲームパッド ボタンによる録画のトリガーが可能になりました。


主要内容

以前は、Mac のゲームやグラフィック アプリケーションは画面録画エクスペリエンスを提供する必要があり、多くの場合、ユーザーをシステム画面録画または外部ストリーミング ツールに引き渡さなければなりませんでした。アプリケーション自体が録画の入り口を制御することは難しく、統一されたプレビュー、保存、共有プロセスはありません。ライブ ストリーミングはさらに細分化されています。ユーザーはサードパーティのサービスを選択するためにアプリケーションを終了する必要があり、開発者は画面、アプリケーションの音声、マイク、プライバシー プロンプトを自分で調整する必要があります。

ReplayKit は元々、iOS と tvOS 上で録画、キャプチャ、ライブ ストリーミング機能をすでに提供していました。 Johnny Trenh 氏は冒頭で、WWDC 2020 での変更はこれらの機能を Mac にもたらすことであると説明しました。 Mac アプリでは、アプリの画面、アプリの音声、マイクを記録できるようになりました。また、音声とビデオのサンプルをアプリのプロセスに送り返したり、アプリのコンテンツをサードパーティのライブ ストリーミング サービスに送信したりすることもできます。

このセッションでは、3 つの入り口に従って完全なプロセスについて説明します。通話を録音するRPScreenRecorder録音の開始と停止、および使用RPPreviewViewController編集、保存、共有はユーザーに任せてください。エントリーコールをキャプチャーするstartCapture、ビデオ、アプリケーションオーディオ、マイクサンプルを継続的に受信します。生放送入場用RPBroadcastActivityControllerサードパーティのサービス セレクターを表示し、返されたサービス セレクターを使用します。RPBroadcastControllerライブブロードキャストを制御します。

macOS バージョンでは、アプリケーションの連携を必要とする 2 つの外部入口も追加されています。 ReplayKit はメニュー バーにアクティブなセッション アイコンを表示し、ユーザーはそこから録画、キャプチャ、またはライブ ストリーミングを停止できます。ゲーム コントローラー フレームワークも ReplayKit に接続されています。 PS4 コントローラーの [共有] をダブルクリックし、Xbox コントローラーの [選択] をダブルクリックして、アプリ内録画を開始または停止します。


詳細

アプリ内録画: 共有レコーダーからプレビュー コントローラーまで

(01:41) ReplayKit のアプリ内録画は、アプリの画面、アプリの音声、マイクをキャプチャし、ムービー ファイルに書き込みます。まずはお申込みくださいRPScreenRecorder共有レコーダーを使用してから電話をかけるstartRecording。録音開始後、サンプル アプリは内部データのみを更新します。recordingStateおよびボタン タイトルを使用して、同じボタンを次にクリックすると停止プロセスに入ることができます。

キーポイント:

  • RPScreenRecorderこれは、録音およびキャプチャのプロセスへの統合された入り口です。
  • startRecordingアプリ内録画の開始を担当する ReplayKit は、映像、アプリの音声、マイクの収集を開始します。
  • 起動コールバックはエラー情報を返します。アプリケーションはエラーがない場合にのみ記録ステータスを更新する必要があります。
  • デモ プロジェクトでは、ボタン 1 つで開始と停止の 2 つの状態を想定するため、状態の同期が基本的な作業になります。

(04:35) 録画を停止すると、アプリケーションは呼び出します。stopRecording。 ReplayKit は録音コンテンツを保存して渡しますRPPreviewViewControllerプレビュー インターフェイスはアプリケーションに任せます。 Mac ではウィンドウ シートを使用してこのプレビュー インターフェイスを表示でき、ユーザーはビデオを編集、切り抜き、保存、共有できます。

キーポイント:

  • stopRecording記録を終了し、完了コールバックでプレビュー コントローラーに戻ります。
  • 保存するアプリケーションRPPreviewViewControllerユーザーが操作完了後に閉じられないようにするための参照。
  • ユーザーが保存または閉じるをクリックした後、プロキシ メソッドはアプリケーションにインターフェイスを折りたたむように通知するため、アプリケーションはプレビュー コントローラー プロキシになる必要があります。
  • macOS の保存エクスペリエンスは標準のファイル保存プロセスに従い、ユーザーは最終的な保存場所を把握できます。

新しい URL 停止方法: アプリケーションに録画ファイルを読み取らせる

(07:07) 従来のアプリ内録画では、ビデオ ファイルがアプリケーションに直接渡されません。 ReplayKit はビデオを作成し、ユーザーはプレビュー インターフェイスを通じてビデオを保存または共有することを決定します。講演では、多くの開発者がアプリケーションで記録結果を読み取れることを望んでいることに言及し、今年はターゲット URL を指定した記録停止メソッドが追加されました。

キーポイント:

  • 新しいstopRecordingWithURLアプリがターゲット URL を提供できるようにします。
  • ReplayKit は録画されたビデオをこの場所に書き込み、アプリケーションに読み取り許可を与えます。
  • この機能は、アプリ内再生ライブラリ、マテリアル マネージャー、またはカスタム ビデオ エディターとしての使用に適しています。
  • ここで重要なことは、ファイル所有権の変更です。ユーザーは記録が行われていることを認識しており、アプリケーションはその結果を独自のワークフローに組み込むことができます。

アプリケーション内キャプチャ: サンプルをアプリケーション プロセスに戻します。

(08:44) アプリで ReplayKit によるムービーの生成を望まない場合は、代わりにアプリ内キャプチャを使用できます。電話startCapture最後に、ReplayKit はオーディオ、ビデオ、マイクのサンプルをアプリケーション プロセスに送り返し、開発者はこれらのサンプルをどう処理するかを決定します。

キーポイント:

  • startCapture共有レコーダーから録音と同様に開始します。
  • 2 つの処理エントリが含まれています。サンプル プロセッサは繰り返しデータを受信し、完了プロセッサはキャプチャの開始時に 1 回だけ実行されます。
  • 各サンプル コールバックは、サンプル、サンプル タイプ、およびエラー情報を返します。
  • サンプル タイプは、ビデオ、アプリケーション オーディオ、マイク オーディオを区別するために使用されます。

(12:00) デモ プロジェクトはサンプルを受信した後、タイプごとにログのみを出力します。実際のアプリケーションでは、スクリーンショット、ゲーム オーバーレイ、またはカスタム HUD にビデオ サンプルを使用したり、オーディオ サンプルを独自の処理パイプラインにフィードしたりできます。ここでの価値はビデオの生成ではなく、アプリケーションがオリジナルのコンテンツに直接アクセスできることにあります。

キーポイント:

  • ビデオ サンプルは、スクリーンショット、画面オーバーレイ、および再生前処理を実行できます。
  • ゲームサウンドとユーザーサウンドの別々の処理を容易にするために、アプリケーションオーディオとマイクオーディオは別々に返されます。
  • キャプチャが開始されると、アプリは通常、ReplayKit セッションが互いに競合しないように、録画ボタンとライブ ボタンを無効にする必要があります。
  • 講義中のカメラのピクチャー・イン・ピクチャーもステータス更新の一部であり、キャプチャが開始された後にのみ表示されます。

ライブ ブロードキャスト: ブロードキャスト セレクターを使用してサードパーティ サービスに接続する

(14:21) ReplayKit のライブ ブロードキャスト プロセスは 3 つのステップに分かれています。アプリは最初にサードパーティのサービス セレクターを表示します。ユーザーがサービスを選択すると、ReplayKit はブロードキャスト拡張機能への接続を確立します。アプリケーションを入手するRPBroadcastControllerをクリックし、それを使用してライブブロードキャストを開始、一時停止、停止します。

キーポイント:

  • RPBroadcastActivityControllermacOS でのブロードキャスト サービス セレクターの表示を担当します。
  • ユーザーがサービスを選択すると、ReplayKit はアプリケーションを対応するブロードキャスト拡張機能に接続します。
  • 返されましたRPBroadcastController生放送制御の入り口であり、その後の開始と終了はそれに依存します。
  • ライブ ブロードキャストを停止するときに同じオブジェクトが使用されるため、アプリケーションはこのコントローラー参照を保存する必要があります。

(19:51) macOS のライブ ブロードキャストの入り口は iOS の入り口とは異なります。 iOSの使用RPBroadcastActivityViewController、macOSはに変わりましたRPBroadcastActivityController。 Mac は複数の画面とウィンドウをサポートしているため、アプリはshowBroadcastPickerいつ与えられるかCGPointおよびウィンドウ参照。ユーザーをサービスに直接誘導したい場合は、優先拡張子識別子を渡すこともできます。

キーポイント:

  • CGPointウィンドウの左下隅にあるブロードキャスト セレクターの開始点を示します。
  • ウィンドウ参照により、Mac 上のどのウィンドウにセレクターが表示されるべきかを ReplayKit に知らせます。
  • 優先拡張識別子でブロードキャスト サービスを指定できます。
  • 空のサービス ID を渡すと、ユーザーには利用可能なサードパーティ サービスのリストが表示されます。

メニューバーのプライバシー入口: 外部で停止されている場合でもステータスを同期します

(20:48) アクティブな録画、キャプチャ、またはライブ ブロードキャスト セッションがあるときは常に、macOS のメニュー バーに ReplayKit アイコンが表示されます。このアイコンは、ReplayKit セッションが進行中であることをユーザーに示し、ユーザーがアプリケーションの外部からセッションを停止できるようにします。

キーポイント:

  • アプリは、すべての停止アクションが独自のボタンによるものであると想定することはできません。
  • ユーザーがメニューバーからセッションを停止すると ReplayKit が呼び出されますdidStopRecordingWithPreviewViewController
  • アプリ内キャプチャとライブストリーミングの場合、受信RPPreviewViewControllernullになります。
  • アプリケーションは、このコールバックで録音、キャプチャ、およびライブ ブロードキャストのステータスを均一にクリーンアップし、関連するボタンを復元する必要があります。

ゲームコントローラー入口: コントローラーから録画を開始できます

(21:42) ゲーム コントローラー フレームワークには、iOS、tvOS、macOS 上の ReplayKit 機能が組み込まれています。 PS4 コントローラーの [共有] ボタンをダブルクリックするか、Xbox コントローラーの [選択] ボタンをダブルクリックして、アプリ内録画を開始します。もう一度ダブルクリックすると録画が停止し、iOS の場合は写真、macOS の場合はデスクトップに保存されます。

キーポイント:

  • コントローラーの入り口は、プレーヤーがコントローラーから離れることなく、ゲームのハイライト クリップを記録するのに適しています。
  • すでに ReplayKit を使用しているアプリの場合、コントローラーがアプリのボタンの外で録画を開始または停止する場合があります。
  • スピーチの提案RPScreenRecorder可用性プロパティと記録プロパティは、キーと値の監視を行います。
  • アプリケーションを実装する必要があるRPScreenRecorderDelegateコールバックを停止して、UI 状態が実際の記録状態と一致していることを確認します。

重要ポイント

  • やるべきこと: Mac ゲームのハイライト リプレイ ライブラリを作成します。 実行する価値がある理由:stopRecordingWithURLアプリケーションが ReplayKit によって生成されたビデオを読み取れるようにします。 開始方法: を使用しますRPScreenRecorder録画を開始し、停止時にアプリケーションが管理するディレクトリに結果を書き込み、各ビデオのレベル、タイム、プレーヤーのメモを記録します。

  • やるべきこと: リアルタイム HUD を使用してチュートリアルの録画を作成します。 実行する価値がある理由:startCaptureビデオ、アプリケーションの音声、およびマイクのサンプルがアプリケーション プロセスに送り返されます。 開始方法: まずビデオとオーディオをサンプル タイプごとに分割し、次にビデオ サンプルをオーバーレイ プロセスにフィードして、マウスの位置、ショートカット キー、ステップ番号を追加します。

  • やるべきこと: 作成ツールにライブ配信開始ボタンを追加します。 実行する価値がある理由:RPBroadcastActivityControllerユーザーがサードパーティのライブ ストリーミング サービスを直接選択できるようにします。 起動方法: メインウィンドウのボタンからブロードキャストセレクターを表示します。ユーザーはサービスを選択して保存します。RPBroadcastController、それを使用して開始と終了を制御します。

  • やるべきこと: コントローラー駆動の録画ステータス HUD を作成します。 実行する価値がある理由: ゲーム コントローラー フレームワークは、アプリ ボタンの外側で ReplayKit の記録をトリガーできます。 開始方法: 観察してくださいRPScreenRecorder可用性と録画属性は、HUD に録画の赤い点、期間、保存結果を同時に表示します。

  • やるべきこと: 統合された ReplayKit セッション回復ロジックを作成します。 価値がある理由: macOS メニュー バー アイコンを使用すると、ユーザーはアプリの外部から録画、キャプチャ、またはライブ ストリーミングを停止できます。 開始方法: ボタンのステータス、カメラのピクチャ イン ピクチャ、ライブ コントローラ、およびプレビュー コントローラのクリーンアップを同じ停止コールバック パスに配置します。


関連セッション

  • 低遅延 HLS の新機能 - ReplayKit はライブ ブロードキャストの収集と開始を担当し、低遅延 HLS はライブ ブロードキャスト リンクを継続的に理解するのに適しています。
  • ゲーム コントローラーの進歩 - このセクションでは、コントローラーをダブルクリックすると記録がトリガーされ、2020 年のコントローラー フレームワークの新機能を補完するものであると述べています。
  • Game Center 向けのデザイン - ハイライトの記録、プレーヤーのプロフィール、ゲームのソーシャル エクスペリエンスを一緒にデザインするのに適しています。
  • Metal アプリを Apple シリコン Mac に導入 — ReplayKit が Mac ゲームまたはグラフィック アプリケーションで使用されている場合、これは Apple シリコン上のグラフィック パフォーマンスのコンテキストを理解するのに役立ちます。

コメント

GitHub Issues · utterances