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
 

Videos

Abrir menú Cerrar menú
  • Colecciones
  • Todos los videos
  • Información

Más videos

  • Información
  • Resumen
  • Código
  • Más información sobre Apple Projected Media Profile

    Observa cómo el Apple Projected Media Profile (APMP) permite proyecciones de 180º/360º y de campo de visión amplio en archivos QuickTime y MP4 con la señalización de uso extendido de video. Analizaremos el uso de herramientas y estructuras proporcionadas por el SO para convertir, leer/escribir, editar y codificar medios con APMP. Revisaremos las capacidades de Apple Positional Audio Codec (APAC) para crear y entregar contenido de audio espacial para las experiencias más envolventes.

    Capítulos

    • 0:00 - Introducción
    • 1:12 - Fundamentos del video no rectilíneo
    • 3:42 - Especificación del perfil de medios proyectados de Apple
    • 5:59 - Captura de contenido y flujos de APMP
    • 8:33 - Capacidades de conversión de activos
    • 10:45 - Lectura de video de APMP
    • 11:47 - Edición de video de APMP
    • 13:42 - Publicación de videos de APMP
    • 16:14 - Apple Positional Audio Codec

    Recursos

    • 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
      • Video HD
      • Video SD

    Videos relacionados

    WWDC25

    • Admite reproducción de video envolvente en apps de visionOS
    • Conoce las tecnologías de Apple Immersive Video
    • Explora experiencias de video para visionOS
    • Novedades de la web espacial

    WWDC22

    • What’s new in AVQT

    WWDC21

    • Evaluate videos with the Advanced Video Quality Tool
  • Buscar este video…
    • 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 - Introducción
    • Obtén información sobre cómo se representa la proyección de video no rectilínea en archivos QuickTime. Descubre nuevas API para crear, editar y publicar videos APMP con Audio Espacial. Este video está destinado a proveedores de cámaras, desarrolladores de software de edición de videos y desarrolladores de apps que tienen interés en el contenido multimedia inmersivo, particularmente para visionOS.

    • 1:12 - Fundamentos del video no rectilíneo
    • visionOS 26 presenta el Apple Projected Media Profile, que admite varios formatos de video no rectilíneos además de los videos tradicionales 2D, 3D y espaciales. Este perfil incluye proyecciones mitad equirrectangulares para videos de 180 grados, proyecciones equirrectangulares para videos de 360 grados y proyecciones paramétricas para videos de campo de visión amplio capturados con lentes gran angular u ojo de pez. Las proyecciones equirrectangulares asignan coordenadas esféricas a un marco rectangular con ángulos de latitud y longitud. Las proyecciones inmersivas paramétricas tienen en cuenta los parámetros de distorsión de la lente, como la distancia focal, el centro óptico, la inclinación y la distorsión radial, que corrige la distorsión de barril que se observa comúnmente en lentes gran angular. Esto permite una representación más precisa e inmersiva del contenido de video de campo de visión amplio.

    • 3:42 - Especificación del perfil de medios proyectados de Apple
    • Apple Projected Media Profile (APMP) permite la señalización de proyecciones de 180°, 360° y campo de visión amplio. Con las API de Apple puedes trabajar con contenido APMP en archivos QuickTime y MP4. Los nuevos cuadros dentro de Video Extended Usage (vexu) en visionOS 26 especifican los tipos de proyección, los parámetros de lente y la forma en que se organizan las vistas. Estos cuadros permiten la representación de diversos formatos de contenido multimedia inmersivo, como videos monoscópicos equirrectangulares y estereoscópicos de 180 grados.

    • 5:59 - Captura de contenido y flujos de APMP
    • Varias cámaras y software de edición admiten APMP para capturar y editar videos de 180 y 360 grados. La señalización con APMP se usa en todo el flujo de trabajo (captura, edición y entrega) para una reproducción eficiente en dispositivos visionOS. Para el software que no es compatible con APMP, puedes usar metadatos esféricos y la utilidad avconvert para la conversión antes de transferir archivos al Apple Vision Pro.

    • 8:33 - Capacidades de conversión de activos
    • macOS y visionOS 26 presentan nuevas capacidades para trabajar con archivos APMP. AVFoundation ahora reconoce activos esféricos compatibles y sintetiza la señalización con APMP. visionOS 26 cuenta con soporte integrado para los parámetros de proyección de lentes y los modos de campo de visión de los proveedores de cámaras más populares, lo que permite la conversión automática al abrirlos. Usa las nuevas estructuras y objetos para convertir el contenido de campo de visión amplio al formato APMP para que las API del sistema lo puedan reconocer.

    • 10:45 - Lectura de video de APMP
    • Las estructuras CoreMedia y AVFoundation actualizadas en visionOS te permiten leer e identificar videos APMP mediante las API de contenido multimedia del sistema. AVAssetPlaybackAssistant se puede usar para verificar configuraciones de proyección no rectilíneas, y la extensión de descripción de formato viewPackingKind admite la organización de cuadros uno al lado del otro y por encima y por debajo para experiencias de reproducción de video inmersivas.

    • 11:47 - Edición de video de APMP
    • El objeto AVVideoComposition de AVFoundation y CMTaggedDynamicBuffer se usan para la edición estereoscópica de videos. CMTaggedDynamicBuffer, que contiene etiquetas CM con categorías y valores, agrupa búferes relacionados como CVPixelBuffer para el ojo izquierdo y derecho. Para habilitar la edición estereoscópica, define outputBufferDescription y pasa búferes etiquetados a las solicitudes de composición después de construir el par estereoscópico.

    • 13:42 - Publicación de videos de APMP
    • La publicación de contenido APMP en visionOS debe usar la codificación HEVC Main o Main 10 con resoluciones y colores primarios específicos. El modo estéreo puede ser monoscópico o estereoscópico, y las velocidades de cuadro y de bits recomendadas varían según la resolución. La herramienta de calidad de video avanzada (AVQT) de Apple se actualizó para admitir formatos inmersivos y evaluar la calidad de los videos. HLS se mejoró para admitir la transmisión APMP, y hay herramientas y pautas actualizadas disponibles en el sitio web de Apple Developer.

    • 16:14 - Apple Positional Audio Codec
    • Apple Positional Audio Codec (APAC) es una tecnología diseñada para codificar audio ambisónico a fin de permitir experiencias de Audio Espacial inmersivas. El audio ambisónico es una técnica para la grabación y la reproducción de campos sonoros de esfera completa. Usa funciones matemáticas y un conjunto de micrófonos que permiten que el sonido provenga de cualquier dirección. APAC admite ambisónicos de primer, segundo y tercer orden. Las órdenes superiores proporcionan una mayor resolución espacial. El códec es altamente eficiente y se recomienda para codificar audio espacial con videos APMP. APAC decodifica en todas las principales plataformas de Apple, excepto watchOS, y permite la segmentación y transmisión de audio a través de HLS.

Developer Footer

  • Videos
  • WWDC25
  • Más información sobre 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