View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Toutes les vidéos
  • À propos

Plus de vidéos

  • À propos
  • Résumé
  • Code
  • En savoir plus sur Apple Projected Media Profile

    Plongez dans Apple Projected Media Profile (APMP) et voyez comment APMP permet des projections à champ de vision large de 180º/360º dans les fichiers QuickTime et MP4 grâce à la signalisation d'utilisation étendue de la vidéo. Nous fournirons des conseils sur l'utilisation des frameworks et des outils fournis par le système d'exploitation pour convertir, lire/écrire, éditer et encoder des médias contenant APMP. Et nous passerons en revue les capacités du Apple Positional Audio Codec (APAC) pour créer et diffuser du contenu en audio spatial afin de créer des expériences des plus immersives.

    Chapitres

    • 0:00 - Introduction
    • 1:12 - Principes de base de la vidéo non rectiligne
    • 3:42 - Spécifications d’Apple Projected Media Profile
    • 5:59 - Capture de contenu et flux de travail d’APMP
    • 8:33 - Capacités de conversion des ressources
    • 10:45 - Lecture vidéo d’APMP
    • 11:47 - Montage vidéo d’APMP
    • 13:42 - Publication vidéo d’APMP
    • 16:14 - Apple Positional Audio Codec

    Ressources

    • QuickTime and ISO Base Media File Formats and Spatial and Immersive Media
    • Converting projected video to Apple Projected Media Profile
    • Apple HEVC Stereo Video Interoperability Profile
    • Using Apple’s HTTP Live Streaming (HLS) Tools
    • Core Media
    • HTTP Live Streaming
    • HTTP Live Streaming (HLS) authoring specification for Apple devices
    • AVFoundation
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC25

    • Découvrir des expériences vidéo pour visionOS
    • En savoir plus sur les technologies Apple Immersive Video
    • Nouveautés pour le web spatial
    • Prise en charge de la lecture vidéo immersive dans les apps visionOS

    WWDC22

    • What’s new in AVQT

    WWDC21

    • Evaluate videos with the Advanced Video Quality Tool
  • Rechercher dans cette vidéo…
    • 8:58 - Recognize spherical v1/v2 equirectangular content

      // Convert spherical v1/v2 RFC 180/360 equirectangular content
      
      import AVFoundation
      
      func wasConvertedFromSpherical(url: URL) -> Bool {
      	let assetOptions = [AVURLAssetShouldParseExternalSphericalTagsKey: true]
      	let urlAsset = AVURLAsset(url: url, options: assetOptions)
      	
      	// simplified for sample, assume first video track
      	let track = try await urlAsset.loadTracks(withMediaType: .video).first!
      	
      	// Retrieve formatDescription from video track, simplified for sample assume first format description
      	let formatDescription = try await videoTrack.load(.formatDescriptions).first
      	
      	// Detect if formatDescription includes extensions synthesized from spherical
      	let wasConvertedFromSpherical = formatDescription.extensions[.convertedFromExternalSphericalTags]
      	
      	return wasConvertedFromSpherical
      }
    • 9:54 - Convert wide FOV content from supported cameras

      // Convert wide-FOV content from recognized camera models
      import ImmersiveMediaSupport
      
      func upliftIntoParametricImmersiveIfPossible(url: URL) -> AVMutableMovie {
      	let movie = AVMutableMovie(url: url)
      
      	let assetInfo = try await ParametricImmersiveAssetInfo(asset: movie)
      	if (assetInfo.isConvertible) {
      		guard let newDescription = assetInfo.requiredFormatDescription else {
      			fatalError("no format description for convertible asset")
      		}
      		let videoTracks = try await movie.loadTracks(withMediaType: .video)
      		guard let videoTrack = videoTracks.first,
      			  let currentDescription = try await videoTrack.load(.formatDescriptions).first
      		else {
            fatalError("missing format description for video track")
      		}
      		// presumes that format already compatible for intended use case (delivery or production)
          // for delivery then if not already HEVC should transcode for example
      		videoTrack.replaceFormatDescription(currentDescription, with: newDescription)
      	}
        return movie
      }
    • 10:58 - Recognize Projected & Immersive Video

      // Determine if an asset contains any tracks with nonRectilinearVideo and if so, whether any are AIV
      import AVFoundation
      
      func classifyProjectedMedia( movieURL: URL ) async -> (containsNonRectilinearVideo: Bool, containsAppleImmersiveVideo: Bool) {
      	
      	let asset = AVMovie(url: movieURL)
      	let assistant = AVAssetPlaybackAssistant(asset: asset)
      	let options = await assistant.playbackConfigurationOptions
      	// Note contains(.nonRectilinearProjection) is true for both APMP & AIV, while contains(.appleImmersiveVideo) is true only for AIV
      	return (options.contains(.nonRectilinearProjection), options.contains(.appleImmersiveVideo))
      }
    • 11:22 - Perform projection or viewPacking processing

      import AVFoundation
      import CoreMedia
      
      // Perform projection or viewPacking specific processing
      func handleProjectionAndViewPackingKind(_ movieURL: URL) async throws {
      	
      	let movie = AVMovie(url: movieURL)
      	let track = try await movie.loadTracks(withMediaType: .video).first!
      	let mediaCharacteristics = try await track.load(.mediaCharacteristics)
      	
      	// Check for presence of non-rectilinear projection
      	if mediaCharacteristics.contains(.indicatesNonRectilinearProjection) {
      		let formatDescriptions = try await track.load(.formatDescriptions)
      		for formatDesc in formatDescriptions {
      			if let projectionKind = formatDesc.extensions[.projectionKind] {
      				if projectionKind == .projectionKind(.equirectangular) {
      					// handle equirectangular (360) video
      				} else if projectionKind == .projectionKind(.halfEquirectangular) {
      					// handle 180 video
      				} else if projectionKind == .projectionKind(.parametricImmersive) {
      					// handle parametric wfov video
      				} else if projectionKind == .projectionKind(.appleImmersiveVideo) {
      					// handle AIV
      				}
      			}
      			if let viewPackingKind = formatDesc.extensions[.viewPackingKind] {
      				if viewPackingKind == .viewPackingKind(.sideBySide) {
      					// handle side by side
      				} else if viewPackingKind == .viewPackingKind(.overUnder) {
      					// handle over under
      				}
      			}
      		}
      	}
      }
    • 12:51 - Specify outputBufferDescription for a stereoscopic pair

      var config = try await AVVideoComposition.Configuration(for: asset)
      	
      	config.outputBufferDescription = [[.stereoView(.leftEye)], [.stereoView(.rightEye)]]
      
      	let videoComposition = AVVideoComposition(configuration: config)
    • 13:01 - Finish an asyncVideoCompositionRequest with tagged buffers

      func startRequest(_ asyncVideoCompositionRequest: AVAsynchronousVideoCompositionRequest) {
      	var taggedBuffers: [CMTaggedDynamicBuffer] = []
      	let MVHEVCLayerIDs = [0, 1]
      	let eyes: [CMStereoViewComponents] = [.leftEye, .rightEye]
      	
      	for (layerID, eye) in zip(MVHEVCLayerIDs, eyes) {
      		// take a monoscopic image and convert it to a z=0 stereo image with identical content for each eye
      		let pixelBuffer = asyncVideoCompositionRequest.sourceReadOnlyPixelBuffer(byTrackID: 0)
      		
      		let tags: [CMTag] = [.videoLayerID(Int64(layerID)), .stereoView(eye)]
      		let buffer = CMTaggedDynamicBuffer(tags: tags, content: .pixelBuffer(pixelBuffer!))
      		taggedBuffers.append(buffer)
      	}
      	asyncVideoCompositionRequest.finish(withComposedTaggedBuffers: taggedBuffers)
      }
    • 0:00 - Introduction
    • Découvrez comment la projection vidéo non rectiligne est représentée dans les fichiers QuickTime. Découvrez de nouvelles API pour créer, éditer et publier des vidéos APMP avec l’Audio spatial. Cette vidéo s’adresse aux fabricants de caméras, aux développeurs de logiciels de montage vidéo et aux créateurs d’apps intéressés par les médias immersifs, en particulier pour visionOS.

    • 1:12 - Principes de base de la vidéo non rectiligne
    • visionOS 26 introduit le profil Apple Projected Media (APMP), qui prend en charge divers formats vidéo non rectilignes, au-delà des vidéos 2D, 3D et spatiales traditionnelles. Ce profil inclut des projections semi-équirectangulaires pour les vidéos à 180 degrés, des projections équirectangulaires pour les vidéos à 360 degrés, ainsi que des projections paramétriques pour les vidéos à grand champ de vision capturées avec des objectifs grand-angle ou fisheye. Les projections équirectangulaires mappent des coordonnées sphériques sur une image rectangulaire à l’aide d’angles de latitude et de longitude. Les projections immersives paramétriques prennent en compte les paramètres de distorsion de l’objectif, tels que la distance focale, le centre optique, l’inclinaison et la distorsion radiale, ce qui corrige la distorsion en barillet couramment observée dans les objectifs grand angle. Cela permet une représentation plus fidèle et immersive du contenu vidéo à grand champ de vision.

    • 3:42 - Spécifications d’Apple Projected Media Profile
    • Apple Projected Media Profile (APMP) permet de signaler les projections à 180°, 360° et à grand champ de vision. Les API d’Apple permettent de travailler avec du contenu APMP dans les fichiers QuickTime et MP4. De nouvelles boîtes au sein de la boîte Video Extended Usage (vexu) dans visionOS 26 spécifient les types de projection, les paramètres de l’objectif et les configurations de disposition des vues. Ces boîtes permettent de représenter divers formats de médias immersifs, comme les vidéos équirectangulaires monoscopiques et les vidéos stéréoscopiques à 180 degrés.

    • 5:59 - Capture de contenu et flux de travail d’APMP
    • Diverses caméras et divers logiciels de montage prennent en charge le format APMP pour la capture et l’édition de vidéos à 180 et 360 degrés. La signalisation APMP est utilisée tout au long du flux de production (capture, montage et diffusion) afin d’assurer une lecture efficace sur les appareils visionOS. Pour les logiciels ne prenant pas en charge APMP, vous pouvez utiliser les métadonnées sphériques et l’utilitaire avconvert pour effectuer la conversion avant de transférer les fichiers vers l’Apple Vision Pro.

    • 8:33 - Capacités de conversion des ressources
    • macOS et visionOS 26 offrent de nouvelles possibilités de traitement des fichiers APMP. AVFoundation reconnaît désormais les ressources sphériques compatibles et génère automatiquement le signalement APMP. visionOS 26 intègre la prise en charge native des paramètres de projection d’objectif et des modes de champ de vision des principaux fabricants de caméras, permettant une conversion automatique à l’ouverture du fichier. Utilisez les nouveaux frameworks et objets pour convertir du contenu à grand champ de vision au format APMP, afin qu’il soit reconnu par les API système.

    • 10:45 - Lecture vidéo d’APMP
    • Les frameworks CoreMedia et AVFoundation mis à jour dans visionOS vous permettent de lire et d’identifier les vidéos APMP à l’aide des API multimédias du système. AVAssetPlaybackAssistant peut être utilisé pour vérifier les configurations de projection non rectilignes, et l’extension de description de format viewPackingKind prend en charge les agencements d’images côte à côte (side-by-side) et superposés (over-under) pour une lecture immersive des vidéos.

    • 11:47 - Montage vidéo d’APMP
    • L’objet AVVideoComposition d’AVFoundation ainsi que CMTaggedDynamicBuffer sont utilisés pour le montage de vidéos stéréoscopiques. CMTaggedDynamicBuffer, qui contient des balises CM associées à des catégories et des valeurs, permet de regrouper des tampons liés, comme des CVPixelBuffer pour l’œil gauche et l’œil droit. Pour activer le montage stéréoscopique, définissez la propriété outputBufferDescription et transmettez les tampons étiquetés dans les requêtes de composition après avoir construit la paire stéréoscopique.

    • 13:42 - Publication vidéo d’APMP
    • La publication de contenu APMP sur visionOS nécessite l’utilisation de l’encodage HEVC Main ou Main 10, avec des primaires de couleur et des résolutions spécifiques. Le mode stéréo peut être monoscopique ou stéréoscopique, avec des fréquences d’image et des débits binaires recommandés qui varient selon la résolution. L’outil Apple Advanced Video Quality Tool (AVQT) a été mis à jour pour prendre en charge les formats immersifs et évaluer la qualité vidéo. HLS a été amélioré pour prendre en charge le streaming APMP, et des outils ainsi que des recommandations mis à jour sont disponibles sur le site web Apple Developer.

    • 16:14 - Apple Positional Audio Codec
    • Le codec Apple Positional Audio Codec (APAC) est une technologie conçue pour encoder des sons ambisoniques afin de créer des expériences immersives en Audio spatial. L’audio ambisonique est une technique d’enregistrement et de restitution sonore couvrant l’ensemble d’un champ acoustique sphérique. Elle utilise des fonctions mathématiques et une série de microphones qui permettent au son de provenir de n’importe quelle direction. APAC prend en charge l’audio ambisonique d’ordre 1, 2 et 3, les ordres supérieurs offrant une résolution spatiale plus élevée. Ce codec est très efficace et recommandé pour l’encodage de l’audio spatial avec la vidéo APMP. APAC est décodé sur toutes les principales plateformes Apple, à l’exception de watchOS, et permet la diffusion segmentée et en streaming de l’audio via HLS.

Developer Footer

  • Vidéos
  • WWDC25
  • En savoir plus sur Apple Projected Media Profile
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines