ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
HEVCビデオとアルファ
HEVCビデオにアルファチャンネルのサポートが追加されたため、AppとWebの両方で、ビデオをカスタムの背景に合成できるようになりました。このセッションでは、互換性のあるメディアの作成方法と、再生のベストプラクティスを紹介します。
リソース
関連ビデオ
WWDC19
-
ダウンロード
(音楽) こんにちは シヴァ・サンダーです 今日はアルファ付き HEVCビデオのご紹介です
イメージファイルの アルファチャンネルはご存知でしょう
アプリケーションやWebなど 至る所で見られます
イメージファイルに アルファチャンネルがあれば― 色だけでなく 透明度の情報を 持たせることができます
このため 複雑で丸みのある イメージを作り出し― 様々な背景に対しても 自然に見えるのです
アルファと透明度は 主にPNGのような 静止画フォーマットとして― Webでよく使われます
ビデオで使われるのは珍しく―
プロ向けの ビデオワークフローツールでした
Apple ProRes 4444のような プロ用のフォーマットは― データレートが極めて高く 配信には向きません
2017年 Appleは HEIFフォーマットに対応し― 静止画を圧縮するための― 先進のLossy圧縮技術が 使えるようになりました
HEIFもアルファチャンネル対応です
今年から HEIFシーケンスに 対応しているので― 1つのファイルに 複数のイメージを入れられます
HEIFシーケンスも アルファチャンネルに対応します
ビデオにアルファを含めるためには― 低いビットレートである必要がある という認識がありました そこで ビデオファイルの アルファチャンネルに対応するため― Lossy圧縮技術を 使うことにしたのです
アルファ付き HEVCビデオの再生は― iOS 13とtvOS 13とmacOS Catalinaの すべてのデバイスで対応しています エンコードはHEVCエンコーダのある すべてのデバイスに対応しています
配信可能な低ビットレートを 提供するアルファ付きビデオの― フォーマットがあれば 機会が広がります
あなたのアプリケーションの 表現力を豊かにする― 深みのあるムービーが 作成できるのです
アニメーションのように 表示できます このように複雑な背景の上で 動かすことができ― 映像に深みを与え 複雑なインタラクションも期待できます
ムービーは音と同期できるので― キャラクターが話すこともできます 高度な技術 アルファチャンネル コンテンツ あなたに やった!
SpriteKitとSceneKitとMetalを使い ゲームに統合できます このコンテキストで サンプルコードを用意しました SceneKitのシーンを HEVCビデオに記録するコードと― SpriteKitシーンに 他のものを レンダリングするコードです これでキャラクターに 命を吹き込めます アルファ付きHEVCビデオは― iOS 13のSafariと macOS Catalinaに対応しています
Safariでは Webページに対応する 画像かどうかを判断できます
Media Capabilities APIについての 詳細は― “What's New in Authentication”の ビデオをご覧ください
低ビットレートでアルファ付き ビデオを配信する機能があれば― 背景を除去するアプリケーションが 使えます
これはiPhoneで撮影された グリーンスクリーンの前に立つ私です
ここにいたかったな
Core Imageフィルタ付きの custom video compositorで― グリーンの背景を透明にして アルファ付きビデオに エクスポートしました
ここにいたかったな
これで好きな背景に オーバーレイできます
ここにいたかったな
アルファ付きHEVCビデオの ムービーを作成するための― サンプルコードを 私たちは提供しています
では その仕組みとは? ムービーファイルには 様々な種類の メディアのトラックが含まれています
ビデオトラックは ビデオフレームを含みます アルファ付きHEVCビデオは― 1つのビデオトラックの中に 含まれます
トラックの各フレームには レイヤと呼ばれる2つの部分があり― 各レイヤは HEVCコーデックを使って 圧縮されています
ベースレイヤには フレームの カラーイメージが含まれており アルファレイヤには フレームの アルファチャンネルが含まれています
HEVCシンタックスによって 2つのレイヤは識別されています
そのため アルファレイヤの処理法を 知らないHEVCデコーダは― アルファを無視し ベースレイヤだけを表示します
では使い方を説明しましょう
アルファエンコーディング付きの HEVCは― 多数のAV Foundation APIに 統合されています では コンテンツ作成を 見てみましょう
アルファ付きのビデオフレームを レンダリングして― AVAssetWriterでエンコードし ムービーファイルに 書き込むことができます
AVAssetExportSessionのある 新しいプリセットを使って― Apple ProRes 4444を含む アルファ付きビデオフォーマットを― アルファ付きHEVCに トランスポートできます この新しいHEVCプリセットは 末尾にWithAlphaと付きます
またAVAssetExportSessionで 特定の背景色にして― アルファ付きのムービーを アルファなしのムービーに変換できます これはアルファ付きHEVCに対応しない Playerで再生できます
またはアルファビデオ エンコーダの付いたHEVCを― VTCompressionSessionで 使うこともできます
AV Foundationの Playback APIでは― アルファ付きHEVCはAVPlayerと AVPlayerLayerに対応しています Core AnimationやAppKitやUIKitで 作成したアプリケーションが対象です
AVPlayerLayerのビデオは― 透明の背景と その他のレイヤと ビューで表示されます
あるいは AVPlayerItemVideoOutputを使い― デコードされたビデオフレームに アクセスすることも可能です これはMetalやSpriteKitなどを 使っているカスタムレンダリングに― ビデオフレームを 取り入れたい場合に最適です
もし他の方法で フレームをデコードしたい場合― AVAssetImageGeneratorを使い ムービーの個々のフレームである― アルファ付きCGImageを 作成することもできます
AVAssetReaderを使って― 非Playbackのワークフローで使われる ビデオフレームも抽出できます
また VTDecompressionSessionを 使って― アルファ付きHEVCビデオデコーダも 作成できます
要するにアルファ付きHEVCは― ビデオコーデックのレベルで AV Foundationに統合されるので― これらの身近なAPIワークフローに うまく適合します
では これをコードで どう実現するかをお見せします
ムービーをエンコードする時― AVAssetWriterInputや VTCompressionSessionの設定では― AVVideoCodecType.hevcWithAlphaを 使ってください これがアルファチャンネルの エンコードを指示するシグナルです エンコードされたファイルは 標準のHEVC Codec Typeで― 後方互換性があります アルファを理解しない HEVC Playerは― アルファの部分は無視し ベースビデオレイヤのみを表示します
アルファチャンネルには― ビデオデータをファイルに 書き込む方法が2つあります プリマルチプライ・アルファと ストレート・アルファです ストレートは非プリマルチプライ・ アルファとも呼ばれます
どちらも一長一短がありますが その話は省略します
ここでは両方サポートされていることを お伝えしておきます
不慣れな方には― プリマルチプライ・アルファが おすすめです GPUをベースにしたレンダリングの 仕上がりがよくなります
コードを見てみましょう アルファモードを指定するには― Compression Sessionか Buffer Attachmentを設定してください しかし 設定とBuffer Attachmentの 両方が指定され― マッチしなければ エンコード処理は失敗します
より高度なAPIは一定品質で エンコードされた― アルファチャンネルが必要です なぜならアルファチャンネルの エンコードアーティファクトは― ベースレイヤに同じアーティファクトを 求めるからです 高度なAPIは必要に応じて ベースレイヤのビットレートと― アルファチャンネルの質を 別々にコントロールできます
コードでは― TargetQualityForAlphaのパラメータで アルファレイヤの質を指定できます
0と1の間で配置しますが 1はLosslessに近いです 指定したビットレートの パラメータは― ベースレイヤのみに適用され アルファレイヤは無視します
アルファチャンネルを 検出するには―
AVMediaCharacteristicで containsAlphaChannelを試すか―
formatDiscription.extensionsで containsAlphaChannelをテストします
アルファ付きHEVCムービーを エクスポートする場合― determineCompatibility APIを使い そのアルファをバリデートします
このバリデーションは アカウントのソースムービーにのみ 対応します もし 新しい アルファチャンネルの作成に ビデオコンポジションを 使っている場合は― バリデーションは 省略しなければなりません
エコシステムには たくさんの ビデオPlayerがありますが― 多くはアルファ付きHEVCはもちろん HEVCにも対応していません
無地の背景を焼き付ければ アルファチャンネルを除去できます この変換を簡単にする便利なAPIと サンプルコードを追加しました
Appleのメディアではない フレームワークに― サポートをビルドしたい場合は― 相互運用が可能な プロファイルの仕様書をご覧ください ここで少し お見せしましょう
要約すると アルファ付きHEVCビデオは すばらしいということです HEVCが持つ 最先端の圧縮技術を 大いに活用しています iOS 13とtvOS 13と macOS Catalinaに対応しており―
最近のデバイスではハードウェア アクセラレーションも使います
アプリケーションに使用する AV Foundationと相性がよく―
WebでもSafariでの使用に最適です
アルファ付きHEVCは― デベロッパとユーザの両方に クリエイティブな表現の機会を与えます ぜひ あなたのアプリケーションで 活用してください ありがとうございました
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。