Athrun Data Intelligence


  • Compartimos cómo habilitamos Dolby Vision y el entorno de visualización ambiental (amve) en la aplicación Instagram para iOS para mejorar la experiencia de visualización de videos.
  • Los videos HDR creados en iPhones contienen Dolby Vision exclusivo y metadatos amve que necesitábamos para aprobar de un extremo a otro.
  • Instagram para iOS es ahora la primera aplicación Meta que admite video Dolby Vision, y en el futuro habrá más soporte para todas las aplicaciones Meta.

Cada codificación de video HDR producida por iPhone incluye dos piezas adicionales de metadatos que ayudan a respaldar que la imagen sea consistente entre diferentes pantallas y condiciones de visualización:

  • Entorno de visualización ambiental (amve), que proporciona las características del entorno de visualización ambiental nominativo para mostrar contenido de vídeo asociado. Esta información permite que el dispositivo final ajuste la representación del vídeo si las condiciones ambientales reales de visualización difieren de aquellas para las que fue codificado.
  • Dolby Vision, que restablecimiento el color, el brillo y el contraste para adaptar mejor el vídeo a las capacidades de la pantalla.

Mientras que las aplicaciones iOS de Instagram y Facebook han admitido vídeo de stop rango dinámico (HDR) Desde 2022, nuestro impulso auténtico de HDR no era compatible con Dolby Vision ni con la entrega y reproducción de Amve. Nuestras codificaciones derivadas se realizaron con FFmpegque tradicionalmente ha carecido de soporte para Dolby Vision y amve. Poliedro que nuestras herramientas descartaban estos metadatos, significaba que las imágenes no eran completamente representativas de la forma en que debían encontrarse, poco que se notaba particularmente en niveles bajos de brillo de la pantalla.

Ahora, a posteriori de escuchar los comentarios de las personas que usan nuestras aplicaciones de iOS, hemos trabajado con nuestros socios para preservar los metadatos amve y Dolby Vision producidos por iOS de extremo a extremo y mejorar significativamente la experiencia de visualización HDR en dispositivos iOS.

Cómo procesa el meta el vídeo

En primer circunscripción, puede resultar útil ofrecer algunos referencias sobre la ciclo de vida de un vídeo en Meta.

La mayoría de los vídeos subidos a través de nuestras aplicaciones pasan por tres etapas principales:

1. Procesamiento de clientes

En la etapa de procesamiento del cliente, el dispositivo del creador aplana su composición en un único archivo de video con un tamaño apropiado para cargar. Para videos HDR producidos por dispositivos iOS, esto significa codificar con HEVC usando el perfil Main 10. Esta es la etapa en la que se producen los metadatos de amve y Dolby Vision, se agregan al flujo de bits codificado y se cargan en los servidores de Meta.

2. Procesamiento del servidor

En la etapa de procesamiento del servidor, nuestro sistema de transcodificación genera diferentes versiones del video para diferentes consumidores. Como la reproducción se produce en una variedad de dispositivos con diferentes capacidades, necesitamos producir el video en un formato que sea inmejorable para cada dispositivo. En el ámbito de las cargas HDR, esto significa producir una traducción SDR para dispositivos que no admiten HDR, una traducción VP9 para satisfacer a la mayoría de los reproductores y (para nuestros videos más populares) una traducción AV1 con la más ingreso calidad en el tamaño de archivo más bajo.

Cada una de estas versiones se produce con una tasa de bits diferente (esencialmente, tamaño de archivo) para respaldar que los consumidores con diferentes condiciones de red puedan reproducir el video sin esperar a que se complete una descarga excelso (la desventaja es que las tasas de bits más bajas tienen pequeño calidad). Todas nuestras codificaciones derivadas se crean con FFmpeg, que históricamente carecía de soporte para amve y Dolby Vision. Esta es la etapa en la que se eliminaron los metadatos.

3. Consumo

En la etapa de consumo, el dispositivo del espectador elige la traducción que se reproducirá sin problemas (sin interrupciones), la decodifica cuadro por cuadro y dibuja cada cuadro en la pantalla. En el contexto de iOS, toda la reproducción HDR se realiza utilizando AVSampleBufferDisplayLayer (AVSBDL) de Apple. Esta es la clase que consume metadatos amve y Dolby Vision cercano con cada cuadro decodificado.

Cómo agregamos soporte para amve

Cuando nos dispusimos a apoyar a amve por primera vez en 2022, notamos poco interesante. Como operamos en una obra desacoplada de componentes de nivel inferior en circunscripción de una configuración típica de AVPlayer de stop nivel, pudimos inspeccionar una codificación de video intacta y echar un vistazo a los metadatos de amve entre el decodificador y AVSBDL. Observamos que cada fotograma de cada vídeo parecía tener exactamente los mismos metadatos. Esto nos permitió detenernos con una posibilidad rápida y codificar estos títulos directamente en nuestra cartera de jugadores.

Esta no era una gran situación. Aunque el valencia parecía parado, no había cero que lo obligara. Tal vez una nueva traducción de iPhone o iOS produciría títulos diferentes y entonces estaríamos usando los incorrectos. amve siquiera es un concepto en Android, lo que significaría que ver una codificación HDR producida por Android en un iPhone daría como resultado una imagen que no sería técnicamente precisa.

En 2024, trabajamos con la comunidad para conseguir apoyo de amve en FFmpeg. Asimismo incorporamos algunos registros, lo que demostró que nuestra afirmación de hace dos primaveras de que los títulos nunca cambian seguía actual. Pero si alguna vez lo hacen, estaremos preparados adecuadamente para ello.

Autorización de Dolby Vision

Dolby Vision no fue tan sencillo de adoptar como me gustaría.

Desafío #1: La determinación existente era para el transporte de metadatos internamente de un flujo de bits HEVC. No entregamos HEVC.

El HDR producido por iPhone utiliza el perfil Dolby Vision 8.4, donde 8 indica un perfil que usa HEVC (el códec de video) y .4 significa compatibilidad cruzada con HLG (el típico para video HDR al que se adherirían los reproductores sin soporte Dolby Vision).

Para entregar metadatos de Dolby Vision necesitábamos incluirlos internamente de un códec que entregamos. Felizmente, Dolby ha creado el Perfil 10 para transportar Dolby Vision internamente de AV1. Como VP9 no ofrece la posibilidad de transportar metadatos adicionales, no hay soporte para Dolby Vision en este momento, pero estamos interesados ​​en explorar mecanismos de entrega alternativos.

Sin secuestro, los perfiles Dolby Vision 10 y 8 no eran compatibles adecuadamente con nuestras herramientas de procesamiento de vídeo existentes, incluidos FFmpeg y Shaka empaquetador. Con cojín en las especificaciones de Dolby, colaboramos con los desarrolladores de FFmpeg para implementar completamente el soporte para Dolby Vision Profile 8 y Profile 10. En particular, habilitamos el soporte internamente de FFmpeg para transcodificar HEVC con Profile 8.4 a AV1 con Profile 10.4 usando los codificadores libaom y libsvtav1, e hicimos correcciones en otras partes de la pila, incluido el decodificador dav1d y el empaquetador Shaka, para aprobar adecuadamente los metadatos de Dolby Vision.

Desafío n.º 2: incorporar Dolby Vision a AVSampleBufferDisplayLayer

Cuando alimenta a AVSBDL con un flujo de bits codificado en un formato compatible, por ejemplo, HEVC desde la cámara de un iPhone, Dolby Vision simplemente funciona de forma gratuita. Pero alimentamos buffers que decodificamos de forma independiente, ya que necesitamos poder decodificar formatos que Apple no ofrece de industria (AV1 en dispositivos anteriores al iPhone 15 Pro, por ejemplo). Dada esta configuración, es encajado que igualmente tengamos que extraer Dolby Vision de forma independiente.

Siguiendo la nueva determinación para el transporte del Perfil 10 internamente de un flujo de bits AV1 de Dolby, implementamos la linaje manual de metadatos de Dolby Vision, los empaquetamos en el mismo formato que AVSBDL esperaba y estábamos en el negocio.

Para demostrar que nuestra configuración funcionaba como se esperaba, configuramos una serie de publicaciones de Instagram idénticas con y sin metadatos de Dolby Vision. Nuestros socios de Dolby midieron el brillo de cada una de estas publicaciones utilizando un analizador de color de pantalla, en distintos niveles de brillo de la pantalla.

Captaron lo sucesivo:

Configuraciones de brillo de la pantalla frente a brillo de la imagen, con y sin Dolby Vision.

En este boceto, el eje X representa la configuración del brillo de la pantalla y el eje Y representa el brillo de la imagen observado. Los resultados demuestran que con los metadatos de Dolby Vision presentes, el brillo del contenido sigue mucho más de cerca la configuración de brillo de la pantalla.

¡Funcionó!… Pero aún no habíamos terminado.

Probando nuestra implementación de Dolby Vision

En Meta, realizamos pruebas A/B de nuevas funciones ayer de enviarlas para asegurarnos de que funcionan como esperamos. ¿Cómo probamos A/B los metadatos incrustados en un flujo de bits de vídeo? La respuesta es que produjimos una traducción adicional de cada video que contiene los nuevos metadatos. Entregamos esta nueva traducción a una población de prueba distribuida aleatoriamente mientras la población de control distribuida aleatoriamente continuaba recibiendo la experiencia existente. A nuestra escalera, podemos afirmar que aproximadamente una población igual verá ambas versiones de cada vídeo.

Para cada traducción, recopilamos estadísticas como cuánto tiempo se vio el video, cuánto tiempo tardó en cargarse, con qué tipo de conexión se vio y si se encontró algún error durante la reproducción. Luego analizamos en conjunto para ver cómo se compara la traducción con metadatos con la traducción sin metadatos.

Nuestra hipótesis es que si los metadatos funcionan como se esperaba, los videos con los nuevos metadatos recibirían más tiempo de visualización. Pero cuando realizamos nuestra prueba auténtico en Instagram Reels en 2024, descubrimos que, en promedio, los videos con metadatos Dolby Vision en ingenuidad se vieron menos que sus contrapartes típico.

¿Cómo podría ser esto posible? ¿No se supone que Dolby Vision restablecimiento la imagen?

Nuestra primera prueba A/B con metadatos Dolby Vision

Nuestros datos indicaron que las personas veían menos videos Dolby Vision porque los videos tardaban demasiado en cargarse y las personas simplemente pasaban al sucesivo carrete en su feed.

Había una causa mediano para los tiempos de carga más largos: los nuevos metadatos se agregaron del orden de 100 kbps a cada video en promedio. Suena mezquino, pero nuestras codificaciones están mucho optimizadas para todo tipo de condiciones de visualización diversas. Cada bit cuenta en algunas situaciones, y una sobrecarga de 100 kbps fue suficiente para hacer retroceder el compromiso en los márgenes.

La respuesta a esto fue un formato de metadatos comprimidos. El equipo de Dolby ofreció otra determinación que reduciría la sobrecarga de metadatos en un multiplicador de cuatro, a 25 kbps en promedio.

¿Será suficiente? Tuvimos que realizar otra prueba para averiguarlo. Pero primero había más trabajo por hacer.

Necesitábamos implementar soporte para la compresión de metadatos Dolby Vision (y descompresión mientras estamos en ello) en FFmpeg usando un filtro de flujo de bits. Por otra parte, si correctamente el formato sin comprimir era poco que podíamos extraer del flujo de bits y entregárselo a Apple, el formato comprimido no era poco que Apple admitiera de industria. Tuvimos que implementar la descompresión del costado del cliente por nuestra cuenta.

Aproximadamente 2000 líneas de código a posteriori, estábamos listos.

Nuestra prueba A/B exitosa

Esta vez, descubrimos que los consumidores que veían con metadatos Dolby Vision pasaban más tiempo en la aplicación. Atribuimos esto a que las personas pasan más tiempo viendo videos HDR en entornos con poca luz, cuando sus pantallas están configuradas con niveles de brillo más bajos y los videos HDR con metadatos adecuados son menos agotadores para la apariencia.

Adecuado a que incluir metadatos de Dolby Vision tuvo un resultado tangiblemente positivo, pudimos defender su pedido a través de Instagram para iOS, convirtiéndola en nuestra primera aplicación en emplear Dolby Vision. A partir de junio de 2025, todas nuestras codificaciones AV1 entregadas derivadas de HDR producido por iPhone incluyen metadatos Dolby Vision.

El futuro de Dolby Vision en Meta

El postrero desafío en el gravedad de esta publicación es que Dolby Vision no es ampliamente compatible internamente del ecosistema web en diferentes navegadores y pantallas. Por lo tanto, no podemos mostrar con precisión la diferencia que hace en esta página y esperamos que lo experimentes tú mismo en Instagram en iPhone. El soporte para Dolby Vision y Amve ahora está en nuestras recetas de codificación y, como tal, está preparado para implementarse en otras plataformas y actualmente estamos trabajando para extender el soporte a Facebook Reels.

En colaboración con Dolby, resolvimos el problema perceptible de la preservación de metadatos HDR y colaboramos con los desarrolladores de FFmpeg para implementar su soporte y ponerlo a disposición de la comunidad para que lo aproveche.

Esto es sólo el eclosión. Esperamos expandir Dolby Vision a otras metaaplicaciones y sus sistemas operativos correspondientes.

Expresiones de obligación

Nos gustaría devolver a Haixia Shi, el equipo de Dolby y a Niklas Haas de FFmpeg por su trabajo apoyando este esfuerzo.



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *