View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • コード
  • AirPlayオーディオ体験の改善

    アプリのAirPlayオーディオ体験を、より堅牢で応答性の高いものにアップグレードする方法を紹介します。AVQueuePlayerで強化されたオーディオ バッファリングを採用する方法について解説し、アプリでカスタムプレーヤーを構築する場合の代替案を検討し、ベストプラクティスを共有します。

    関連する章

    • 0:42 - AirPlay Overview
    • 1:43 - Enhanced audio buffering
    • 3:54 - Add support to your app

    リソース

    • AVQueuePlayer
    • Playing custom audio with your own player
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC23

    • メディアアプリとHomePodの統合
    • 車両システムのためのCarPlayの最適化
    • AirPlayにおけるインタースティシャルの詳細
  • ダウンロード

    ♪ ♪

    こんにちは AirPlay Teamの エンジニアのKellyです 本セッションにようこそ 今日は最新バージョンの機能の いくつかを紹介したいと思います 今日はAirPlayの最新バージョンの 機能をカバーし アプリで素晴らしい AirPlay体験をしていただくための ヒントをご紹介します これが本日のアジェンダです まずAirPlayの概要から 説明します 次にAirPlayの拡張オーディオ バッファリングが提供する機能を紹介し 最後にアプリに拡張オーディオ バッファリングを統合する 方法について説明します AirPlayはビデオ 写真 音楽などをAppleデバイスから 近くのスピーカーやスクリーンに 共有する最も簡単な方法です 今日ではAirPlay対応デバイスが 家庭内に数多くあるため AirPlayはかつてないほど 普及しています AirPlayは次のいずれかの方法で 使用できます AirPlay Audioを使えば1台または 複数のHomePodと AirPlay対応 スピーカーにストリーミングして お気に入りの音楽やポッドキャストを 完全同期させて共有できます AirPlayビデオを使えばお気に入りの 映画や番組をAppleデバイスから Apple TVに またはAirPlay対応スマートTVに 高画質でストリーミングできます ミラーリングを使えば 写真 パーソナルビデオ ゲーム Webページ スプレッドシートなど Appleデバイスにあるものを Apple TVやAirPlay対応の スマートテレビで共有できます みなさんの友人や家族も Appleデバイスにあるものを共有できます 今日のビデオはAirPlayのオーディオ ストリーミングの側面に焦点を当てます AirPlayは1台またはそれ以上の デバイスに シームレスなオーディオ ストリーミング体験を提供します HomePod Mac Apple TVなどの Appleデバイスから何億台もの スマートTVを含む世界のトップブランドの オーディオビデオ製品まで 現在AirPlayオーディオを サポートするデバイスの 完全なエコシステムがあります AirPlayはとても便利です AirPlayはとても便利で 私個人もこれを毎日愛用しています

    AirPlayが成長し続けるにつれ デベロッパと顧客の期待も高まっています AirPlayを次のレベルに 引き上げるために新しく改良された AirPlay拡張オーディオバッファリング プロトコルが採用され さらに優れたホームシアター および マルチチャンネル体験を提供します 拡張オーディオバッファリングは ホームオーディオ全体を念頭に置いて 根本から構築されていて 頑丈に作られています HomePodまたはiPhoneを リモコンとして使用する場合 オーディオストリームは リアルタイムの再生速度よりも 速くなり 再生の中断を最小限に 抑えます Apple TVからのDolby Atomosのような マルチチャンネルオーディオフォーマットや 今年新たにiOS用のロスレス再生で スマートな使用が可能です 拡張オーディオバッファリングは 広告をサポートする HLSインタースティシャルに 最高のサポートを提供します HLSインタースティシャルについては 同僚のAmitのビデオ 「AirPlayにおけるインタースティシャル の詳細」をご確認ください ご覧の通り私たちは将来に向けて 拡張オーディオバッファリングによって 素晴らしい基盤を築きました これを一体化することでみなさんのアプリで 素晴らしいAirPlay体験を生み出せます そこで拡張オーディオバッファリングが どんなメリットを持つかを見てみましょう 携帯電話からHomePodに オーディオをストリーミングしています

    ゴミ出しをしていてWi-Fiの圏外に なったと仮定します ♪ ♪ HomePodは演奏を続けていることに お気づきになれましたでしょうか ネットワークに再接続しようとしても 音楽が途切れることはなく 私の携帯電話はHomePodに シームレスに再接続します ♪ ♪ 再び携帯電話から 再生コントロールが できるようになりました これはAirPlayを使って HomePodのようなAirPlay対応 スピーカーで音楽を再生する際に 求められる性能です 拡張オーディオバッファリングは 素晴らしいことばかりなので みなさんのアプリに 取り入れてみましょう アプリにAirPlayサポートを 追加する方法をおさらいします

    オーディオセッションを適切に設定し アプリのミキシングと中断の動作を 正しく行うことが重要です メディアの再生がアプリの中心である場合 オーディオセッションの カテゴリを再生に設定します これによりアプリがバックグラウンドに あるときでもアプリのメディアが 再生され続けるようになります

    一般的にはモードをデフォルトに 設定することができますがポッドキャストや オーディオブックのような話し言葉の オーディオではモードを spokenAudioに設定することを お勧めします 最後に音楽やポッドキャストなどの オーディオセッションの ルーティングポリシーを ロングフォームオーディオに 設定します 今年は新たに AirPlayを これまで以上にシームレスにします iPhoneとiPadはデバイス上の インテリジェンスを使って みなさんのAirPlayの嗜好を覚えます 夕食を作るときに音楽を 聴くことが多いので キッチンの近くにあるHomePodが 自動的に表示されアプリのコンテンツを 得ることが とても簡単になるというわけです 長編のオーディオコンテンツを 提供するならばこれをサポートしたいと 思われるかと思います インテリジェント AirPlayサジェストのサポートを アプリに追加するのも簡単です すでに説明した AVAudioSessionの設定に加え 唯一の新しいステップは アプリの Info.plistに行くだけです AVInitialRouteSharingPolicyキーを LongFormAudioに設定します

    Xcodeではこのキーは ドロップダウンメニューで 「AirPlay optimization policy」と なっています 以上です iOSが残りを処理し オンデバイス学習を使って みなさんのアプリを開くときに使用する 近くのスピーカーをスマートに提供します

    次にAVRoutePickerViewを ビュー階層に追加して アプリにAirPlayピッカーを追加します ピッカーはみなさんのアプリで 使用できる可能性のある AirPlayデバイスのリストを提供します

    最後にMPNowPlayingInfoCenterを 使って現在の再生アイテムを システムに知らせ MPRemoteCommandCenterを使って 再生 一時停止 スキップなどの リモートコマンドを受け取ります これでAirPlayのためのアプリの セットアップが完了しました 拡張オーディオバッファリングを サポートするために この2つのAPIセットのどちらかを 採用する必要があります AVPlayerとAVQueuePlayer または AVSampleBufferAudioRenderer と AVSampleBufferRenderSynchronizer のいずれかです

    どちらのAPIもローカルや Bluetoothを含むAirPlay以外の 再生に対応します しかしデベロッパによってはAirPlay 再生用と非AirPlay再生用に 異なるAPIを望むかもしれないです その場合みなさんのアプリは routeChangeNotificationに登録し 現在のルートに従って 行動することができます

    AVPlayerとAVQueuePlayerは アプリのオーディオバッファリングを サポートする最も簡単な方法を提供します

    大半のアプリデベロッパには AVQueuePlayerの採用を

    お勧めします AVQueuePlayerが 再生に必要なほとんどを処理するためです AVQueuePlayerはアイテムの 管理再生のコントロールメディアの シークなど再生処理を行います

    Apple独自のメディアアプリの多くも AVQueuePlayerを使用しています まずキュープレーヤーを作成します 再生したいローカルまたは クラウドコンテンツ を特定します

    次にAVAssetインスタンスを作成します そのURLでAVAssetインスタンスを作成し アセットでAVPlayerItemインスタンスを 作成します

    最後にAVPlayerItemを プレーヤーに渡し再生を開始します これだけです プレイアイテムをプレーヤーにエンキュー しているだけだと思われるかもしれません AirPlayの部分はどこなんでしょう? そのとおりです AVPlayerとAVQueuePlayerを 使用することで AirPlayにルーティングされる際に 自動的に オーディオバッファリングが拡張されます より多くのAVPlayer機能については 詳しくはリンクを参照してください メディアデータの前処理を行う必要がある 独自のアプリがある場合は AVSampleBufferAudioRendererと AVSampleBufferRenderSynchronizerを 使用できます APIを使用してキューイングされた 複数のサンプルバッファを 1つのタイムラインに同期させます ここではオーディオデータを エンキューする方法の基本を説明します まずすべての再生操作を実行するための シリアルキューを作成する必要があります オーディオレンダラ と レンダーシンクロナイザを作成します シンクロナイザはメディアタイムラインを 作成します 次にオーディオレンダラ を レンダーシンクロナイザに追加します これはオーディオレンダラに メディアの タイムラインに従うように指示します オーディオデータをエンキューするには コールバックを設置します

    オーディオデータがなくなったら レンダラにデータの要求を

    停止するように 指示します これはインターフェイスの 基本的な部分に過ぎません 詳細はリンク先のドキュメントを ご確認ください カスタムプレーヤーを構築する サンプルプロジェクトとこのAPIの 使用方法について詳しく説明します この2つのAPIはAirPlay対応 デバイスにおいて 拡張オーディオバッファリングを 活用するために使用できます しかもこれだけではないんです 自動車メーカーはCarPlayの実装で 拡張バッファリングをサポート できるようになりました なぜこの事が重要かというと ワイヤレスCarPlayをサポートする 車種が増えているからなんです 外出先で最高のオーディオ体験を得るには 堅牢な再生と反応の良いコントロールが 不可欠です 素晴らしいことというのが 2つのAPIのうちの1つを使ってアプリに 拡張オーディオバッファリングを 追加することで CarPlayにも対応させることができます アプリを利用する人々は 最高のオーディオストリーミング体験を 得ることができます まとめるとAirPlayをサポートするのに オーディオセッションを設定し アプリにAirPlayピッカーを追加し アプリにMedia Playerを 統合する必要があります これはほんの始まりにすぎません 我々は継続的に改善し この技術に さらに多くの機能を持たせるべく 改良を続けていますセッションを 楽しんでいただけたなら幸いです ありがとうございます ♪ ♪

    • 4:00 - Set the audio type

      let audioSession = AVAudioSession.sharedInstance()
      try audioSession.setCategory(. playback ,xmode: . default , policy:.longFormAudio )
    • 7:23 - AVQueuePlayer

      let player = AVQueuePlayer()
      
      let url = URL(string: "http://www.examplecontenturl.com")
      let asset = AVAsset(url: url)
      let item = AVPlayItem(asset: asset)
      
      player.insert(item, after: nil)
      player.play()
    • 8:28 - Add the audio renderer to the render synchronizer

      let serializationQueue = DispatchQueue(label: "sample.buffer.player.serialization.queue")
      let audioRenderer = AVSampleBufferAudioRenderer()
      let renderSynchronizer = AVSampleBufferRenderSynchronizer()
      
      renderSynchronizer.addRenderer(audioRenderer)
    • 8:50 - Enqueue audio data

      serializationQueue.async { [weak self] in
          guard let self = self else { return }
          // Start processing audio data and stop when there's no more data.
          self.audioRenderer.requestMediaDataWhenReady(on: serializationQueue) { [weak self] in
              guard let self = self else { return }
              while self.audioRenderer.isReadyForMoreMediaData {
                  let sampleBuffer = self.nextSampleBuffer() // Returns nil at end of data.
                  if let sampleBuffer = sampleBuffer {
                      self.audioRenderer.enqueue(sampleBuffer)
                  } else {
                      // Tell the renderer to stop requesting audio data.
                      audioRenderer.stopRequestingMediaData()
                  }
              }
          }
      
          // Start playback at the natural rate of the media.
          self.renderSynchronizer.rate = 1.0
      }
  • 特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。

    クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。

Developer Footer

  • ビデオ
  • WWDC23
  • AirPlayオーディオ体験の改善
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン