
-
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
- Apple HEVC Stereo Video Interoperability Profile
- AVFoundation
- Converting projected video to Apple Projected Media Profile
- Core Media
- HTTP Live Streaming
- HTTP Live Streaming (HLS) authoring specification for Apple devices
- QuickTime and ISO Base Media File Formats and Spatial and Immersive Media
- Using Apple’s HTTP Live Streaming (HLS) Tools
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
WWDC21
-
Rechercher dans cette vidéo…
Bonjour, je m’appelle Jon. Je suis ingénieur dans l’équipe Core Media Spatial Technologies. Dans cette vidéo, j’expliquerai les principes de base de la représentation de la projection vidéo non rectiligne dans les fichiers QuickTime. Je présenterai aussi les mises à jour apportées aux frameworks Core Media, Video Toolbox et AVFoundation pour la lecture, l’écriture, le montage et la publication de vidéos Apple Projected Media Profile (APMP). Enfin, j’aborderai le codec Apple Positional Audio Codec, qui permet d’ajouter de l’audio spatial immersif aux vidéos projetées. Cette vidéo s’adresse aux fabricants de caméras qui proposent des modèles à 180°, 360° ou large champ de vision, ainsi qu’aux développeurs d’apps ou de logiciels de montage vidéo qui souhaitent exploiter un nouveau type de médias. Je vous recommande de regarder Explore video experiences for visionOS pour découvrir les profils vidéo immersifs disponibles sur visionOS 26 ainsi que le concept de projections vidéo. Pour commencer, passons en revue les bases de la vidéo non rectiligne présentées dans la vidéo Explore video experiences for visionOS. visionOS 26 introduit Apple Projected Media Profile, qui prend en charge les vidéos à 180°, 360° et large champ de vision capturées avec des caméras grand public. Un facteur de différenciation clé dans le profil de média projeté est le type de projection. Les vidéos 2D, 3D et spatiales utilisent une projection rectiligne. Les vidéos à 180° utilisent une projection demi-équirectangulaire, celles à 360°, une projection équirectangulaire et les vidéos à large champ de vision une projection paramétrique. La projection équirectangulaire, ou projection cylindrique équidistante, est largement prise en charge par les applications de montage comme Final Cut Pro. Dans ce type de projection, les coordonnées de pixels d’une sphère englobante sont exprimées sous forme d’angles de latitude et de longitude, puis projetées de manière égale dans les lignes et colonnes d’une image vidéo rectangulaire. L’axe horizontal mappe les longitudes de -180° à +180°, tandis que l’axe vertical mappe les latitudes de -90° à +90°. La projection demi-équirectangulaire est similaire, à ceci près que la coordonnée X dans l’image vidéo représente la plage allant de -90° à +90°. La projection ParametricImmersive représente les paramètres intrinsèques et de distorsion liés aux objectifs grand angle ou fisheye. Les paramètres intrinsèques représentent des données comme la longueur focale, le centre optique et le skew du système optique utilisé pour la capture. Ces paramètres sont interprétés comme une matrice 3x3, notée K pour matrice de caméra, qui permet de transformer les coordonnées 3D en coordonnées 2D sur un plan d’image. La projection ParametricImmersive peut aussi représenter les paramètres de distorsion de l’objectif, comme la distorsion radiale. Les paramètres de distorsion radiale servent à corriger la distorsion en barillet où les lignes droites apparaissent incurvées en fonction de leur distance au centre optique, en raison de la conception de l’objectif grand angle. Sur cette image, les poteaux de clôture apparaissent incurvés vers les bords de l’objectif. D’autres caractéristiques de distorsion, comme la distorsion tangentielle, le décalage de projection, la limite d’angle radial et les réglages du cadre de l’objectif peuvent également être spécifiées.
Les principes de base étant posés, je vais vous montrer comment utiliser les API Apple pour interagir avec du contenu Apple Projected Media Profile.
Je vais commencer par décrire le transport des vidéos APMP dans les fichiers vidéo QuickTime et MP4. Apple Projected Media Profile permet de signaler s’il s’agit d’une vidéo à 180°, 360° ou large champ de vision dans ces fichiers. Les fichiers QuickTime sont structurés en une hiérarchie de conteneurs regroupant divers types de données multimédias. Ils peuvent inclure des pistes audio et vidéo, ainsi que les données de chaque piste. La spécification ISO Base Media File Format (ISOBMFF) pour MP4 est une adaptation de QuickTime. L’unité de base d’organisation des données dans un fichier ISOBMFF est une « box ». visionOS 1 introduisait une nouvelle box d’extension Video Extended Usage, avec des informations de vues stéréo indiquant si le contenu est stéréoscopique ou monoscopique. Avec visionOS 26, de nouvelles box ont été ajoutées à l’extension appelée vexu pour permettre la signalisation du profil de média projeté. La box de projection signale le type de projection utilisé, comme équirectangulaire, demi-équirectangulaire ou ParametricImmersive. La box de collection d’objectifs contient les paramètres intrinsèques et extrinsèques, ainsi que les paramètres de distorsion liés à la projection ParametricImmersive. La box View packing décrit la disposition des yeux dans une image à trames empaquetées, en mode côte à côte ou au-dessus/en dessous. Voici un exemple de signalisation minimale pour un fichier équirectangulaire monoscopique. La box de projection avec ProjectionKind indique équirectangulaire. Une vidéo stéréoscopique à 180° nécessite une box de vue stéréo en plus de la signalisation du type de projection demi-équirectangulaire. Avec ces éléments de base, il est aussi possible de signaler d’autres combinaisons, comme stéréoscopique à 360°. Consultez la spécification QuickTime and ISO Base Media File Formats and Spatial and Immersive Media sur le site developer.apple.com pour en savoir plus sur la box de projection et les autres box prises en charge par APMP. Je vais à présent passer en revue les méthodes de capture du contenu APMP et les workflows APMP types associés. Divers modèles de caméras permettent de capturer du contenu compatible APMP. On trouve ainsi le système Canon EOS VR pour capturer et traiter les vidéos stéréoscopiques à 180°, les caméras GoPro MAX ou Insta360 X5 pour les vidéos à 360° et les dernières caméras d’action comme la GoPro HERO 13 et l’Insta360 Ace Pro 2 pour les vidéos à large champ de vision. Final Cut Pro prend déjà en charge la lecture et l’écriture de formats APMP à 360°. Et, d’ici la fin de l’année, des logiciels de montage vidéo comme Canon EOS VR Utility et GoPro Player prendront en charge l’exportation de fichiers MOV ou MP4 avec la signalisation APMP. Pour les vidéos à 180° ou 360°, utilisez le logiciel fourni avec la caméra pour les opérations comme l’assemblage, la stabilisation et la correction d’images stéréo. Si votre logiciel de montage est déjà compatible avec APMP, exportez au format MOV ou MP4 avec la signalisation APMP incluse. Utilisez AirDrop ou iCloud pour transférer les fichiers vers l’Apple Vision Pro. Si le logiciel de votre caméra ne prend pas encore en charge APMP, exportez au format 180° ou 360° en utilisant des métadonnées sphériques. Utilisez ensuite l’utilitaire macOS avconvert en ligne de commande ou depuis le Finder en effectuant un Ctrl-clic sur une ou plusieurs vidéos. Transférez les fichiers vers l’Apple Vision Pro via AirDrop ou iCloud. APMP est idéal pour la signalisation de vidéos projetées via des workflows multimédias complets, y compris la capture, le montage et la livraison. Voici un exemple de workflow en 180° stéréoscopique où la signalisation APMP peut s’appliquer à chaque étape. Capturez le contenu à l’aide des codecs HEVC, RAW ou ProRes, puis effectuez le montage avec ProRes. Pour la capture et le montage 3D, vous pouvez utiliser les formats à trames empaquetées, multivues, fichiers séparés pour chaque œil ou deux pistes vidéo dans un seul fichier. Ici, la capture nécessite 2 fichiers vidéo, tandis que le montage est effectué avec une image à trames empaquetées côte à côte. Encodez et publiez avec le codec HEVC multivue (MV-HEVC), pour une diffusion et une lecture optimisées sur visionOS. Maintenant que nous avons vu la spécification APMP et les workflows types, voici les nouvelles fonctionnalités disponibles dans macOS et visionOS 26 pour utiliser les fichiers APMP avec les API multimédias existantes. Voyons d’abord les fonctionnalités de conversion de ressources. Comme l’adoption de la signalisation APMP prendra du temps, nous avons ajouté à AVFoundation une fonctionnalité qui identifie les ressources compatibles utilisant la signalisation Spherical Metadata V1 ou V2. Les contenus à 180° ou 360° compatibles utilisent une projection équirectangulaire et peuvent être stéréoscopiques à trames empaquetées ou monoscopiques. Passez l’option de création de ressource ShouldParseExternalSphericalTags pour reconnaître le contenu sphérique directement compatible et générer les extensions de description de format appropriées. Cela permettra aux autres API système de traiter la ressource comme si elle utilisait APMP. Vérifiez la présence de l’extension de description de format convertedFromExternalSphericalTags pour déterminer si les métadonnées sphériques ont été analysées. visionOS 26 prend en charge les paramètres de projection d’objectif et les modes de champ de vision les plus utilisés par les fabricants tels que GoPro et Insta360. Quick Look suggère la conversion de ce type de fichier à l’ouverture. Pour permettre la conversion de contenu à large champ de vision dans vos apps, utilisez l’objet ParametricImmersiveAssetInfo du framework ImmersiveMediaSupport. Il génère une description du format vidéo contenant une projection ParametricImmersive avec les paramètres intrinsèques et de distorsion pour les modèles de caméras compatibles. Utilisez la propriété isConvertible pour voir si les métadonnées d’une caméra compatible ont été détectées, puis remplacez la description de format de la piste vidéo par une nouvelle. Les API système utilisant cette ressource reconnaîtront ainsi le contenu comme APMP à large champ de vision. Consultez l’exemple d’application « Converting projected video to Apple Projected Media Profile » pour savoir comment générer des formats APMP prêts à être diffusés. Vous pouvez lire les vidéos APMP à l’aide d’API multimédias système familières. Les frameworks CoreMedia et AVFoundation ont été mis à jour pour prendre en charge l’identification et la lecture des médias projetés. Si vous devez identifier une ressource conforme à un profil APMP, pour ajouter un badge ou préparer une expérience de lecture spécifique, vous pouvez utiliser AVAssetPlaybackAssistant et rechercher l’option de configuration de projection non rectiligne. Pour en savoir plus sur la création d’expériences de lecture vidéo APMP, regardez « Support immersive video playback in visionOS apps ».
Pour une analyse approfondie, examinez d’abord les caractéristiques du média pour déterminer si la piste vidéo indique une projection non rectiligne. Examinez ensuite projectionKind pour déterminer avec précision le type de projection signalé. L’extension de description de format viewPackingKind permet d’identifier les contenus à trames empaquetées, aussi bien côte à côte ou au-dessous/en dessous. Pour monter des données projetées, utilisez l’objet AVVideoComposition du framework AVFoundation et familiarisez-vous avec CMTaggedBuffers. Les CMTaggedDynamicBuffers sont utilisés dans plusieurs API pour les contenus stéréoscopiques, y compris les API de montage comme AVVideoComposition. CMTaggedDynamicBuffer permet de spécifier certaines propriétés des tampons sous-jacents, appelées CM Tags. Chaque CM Tag contient une catégorie et une valeur. Voici un exemple de CM Tag représentant une catégorie StereoView pour l’œil gauche.
Ces tampons peuvent être regroupés en ensembles associés, comme dans cet exemple de vidéo stéréoscopique montrant des CVPixelBuffers pour l’œil gauche et l’œil droit. Pour permettre le montage vidéo stéréoscopique avec AVVideoComposition, nous avons ajouté une API qui spécifie le format des tampons balisés produits par un compositeur et une méthode pour les transmettre aux requêtes de composition. outputBufferDescription spécifie le type de CMTaggedBuffers que le compositeur devra générer. Définissez-le avant de lancer la composition. Une fois générée la paire stéréoscopique de CMTaggedBuffers, appelez la fonction finish et passez les tampons balisés.
Maintenant que j’ai expliqué comment convertir, lire et monter des ressources APMP, passons au processus de création.
Dans cet exemple de code pour une vidéo monoscopique en 360°, j’utilise AVAssetWriter pour créer la ressource. J’utilise CompressionPropertyKey pour spécifier le type de projection équirectangulaire. Les propriétés de compression sont passées à AVAssetWriterInput à l’aide de la propriété de dictionnaire outputSettings avec AVVideoCompressionPropertiesKey.
Je vais maintenant parler des recommandations pour la publication de contenu APMP.
Voici les limites recommandées pour la lecture sous visionOS. Le codec vidéo doit être encodé en HEVC Main ou Main 10, avec sous-échantillonnage de la chrominance 4:2:0. Les primaires de couleur Rec 709 ou P3-D65 sont recommandées. Le mode stéréo peut être monoscopique ou stéréoscopique. La résolution suggérée en 10 bits est 7680 x 3840 en monoscopique et 4320 x 4320 par œil pour le stéréoscopique. Les fréquences d’images varient en fonction de la résolution et de la profondeur de bits, mais 30 i/s est recommandé pour les vidéos monoscopiques 8K 10 bits ou stéréoscopiques 4K. Les paramètres d’encodage du débit binaire dépendent du contenu et doivent être choisis en fonction de votre cas d’utilisation, avec une limite maximale de 150 Mbit/s en pic. Des infos supplémentaires sur le profil stéréo MV-HEVC utilisé par Apple sont disponibles dans le document « Apple HEVC Stereo Video Interoperability Profile » sur developer.apple.com. L’outil Advanced Video Quality Tool (AVQT) prend désormais en charge les formats immersifs tels que 3D, Spatial et APMP en 180° et 360°, avec des améliorations algorithmiques pour une meilleure précision. AVQT est utile pour évaluer la qualité perceptuelle de contenu vidéo compressé et affiner les paramètres de l’encodeur vidéo. Il est également utile pour optimiser les débits des niveaux HLS. Les nouveautés incluent le calcul de métriques de qualité tenant compte des projections équirectangulaires et demi-équirectangulaires. La spécification HTTP Live Streaming prend désormais en charge la diffusion de contenu AMPM, et les derniers outils HLS du site web Apple Developer ont été mis à jour pour prendre en charge la publication APMP. Voici un exemple de manifeste pour une ressource stéréoscopique en 180°. Le changement clé se trouve dans la balise EXT-X-STREAM-INFORMATION. L’attribut REQ-VIDEO-LAYOUT spécifie une projection stéréo demi-équirectangulaire. Notez que le segment map doit également contenir une extension formatDescription signalant la projection demi-équirectangulaire et les informations de vues stéréo. Pour connaître les dernières infos sur les débits HLS par niveau et la création HLS, consultez « HLS authoring specification » sur le site web des développeurs d’Apple. L’audio spatial est aussi essentiel que la vidéo pour créer une expérience immersive captivante. Dans le monde réel, le son peut venir de n’importe où. Pour recréer cette expérience, il faut une technologie capable de représenter l’ensemble du champ sonore. C’est pourquoi nous avons conçu le codec Apple Positional Audio Codec (APAC). Une fonctionnalité clé d’APAC est l’encodage audio ambisonique, qui garantit une capture haute fidélité du champ sonore. L’audio ambisonique est une technique d’enregistrement, de mixage et de lecture de l’audio spatial sur une sphère complète.
Les enregistrements ambisoniques ne sont pas liés à une disposition spécifique de haut-parleur, car le champ sonore est encodé mathématiquement à l’aide de fonctions harmoniques sphériques.
La capture audio ambisonique repose sur un réseau de microphones disposés pour enregistrer l’environnement sonore 3D. Grâce au traitement numérique du signal, ces enregistrements sont transformés en signaux directionnels correspondant à des composantes harmoniques sphériques. La combinaison de tous ces signaux donne une représentation précise du champ sonore d’origine. En ambisonie, le terme « ordre » désigne le nombre de composantes sphériques servant à représenter un mixage audio. Le premier ordre comprend 4 composantes, ou canaux : 1 canal omnidirectionnel et 3 canaux directionnels représentant les axes avant-arrière, gauche-droite et haut-bas. L’ambisonie du deuxième ordre utilise 9 composantes, tandis que celle de troisième ordre en utilise 16. Les ambisonies d’ordre supérieur offrent une résolution spatiale plus élevée. APAC est un codec audio spatial à haute efficacité recommandé pour l’encodage de l’audio spatial, y compris l’ambisonie avec la vidéo APMP. APAC est décodé sur toutes les plates-formes Apple, à l’exception de watchOS. L’encodeur APAC intégré, accessible via AVAssetWriter sur les plateformes iOS, macOS et visionOS, prend en charge l’ambisonie d’ordre 1, 2 et 3. Ce code indique les paramètres de sortie minimaux requis pour encoder l’ambisonie d’ordre 1, 2 ou 3 à l’aide d’AVAssetWriter. Les débits recommandés pour l’ambisonie encodée avec APAC pour l’APMP vont de 384 kb/s pour l’ordre 1 à 768 kb/s pour l’ordre 3. L’audio APAC peut être segmenté et diffusé via HLS. Voici un exemple de vidéo équirectangulaire monoscopique avec de l’audio APAC encodant une piste ambisonique d’ordre 3.
Maintenant que vous avez découvert APMP, ajoutez sa prise en charge dans votre app ou service afin de permettre la lecture, le montage et le partage de contenu immersifs générés par les utilisateurs. Si vous êtes un fabricant de caméras, intégrez l’APMP pour rendre possible la lecture dans l’écosystème Apple. Adoptez l’APAC pour offrir un champ sonore immersif à partir d’un micro ambisonique, couplé à votre vidéo immersive. Merci de votre attention ! Je vais maintenant capturer une vidéo stéréoscopique en 180°.
-
-
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.