Filmer depuis deux caméras d'iPhone à la fois semble simple en théorie — le téléphone a déjà plusieurs objectifs à l'arrière. En pratique, faire tourner deux flux caméra simultanément et les transformer en deux fichiers vidéo propres et synchronisés demande une bonne dose de coordination. Voici ce qui se passe réellement.
Tout commence par une seule session caméra partagée
Le framework caméra d'Apple, AVFoundation, suppose normalement qu'une application utilise une caméra à la fois. Depuis iOS 13, un type de session spécifique — AVCaptureMultiCamSession — permet à une application d'ajouter plusieurs entrées caméra à une seule session, afin que les deux puissent fonctionner en parallèle au lieu que l'une bloque l'autre.
Chaque caméra obtient son propre pipeline de sortie
Une fois deux caméras rattachées à la session, chacune a besoin de sa propre sortie : son propre flux de données vidéo, décodé image par image, sur sa propre file de traitement. Faire tourner les deux sur la même file créerait un goulot d'étranglement ; une application multi-caméra bien conçue traite donc les images de la caméra grand-angle et celles de la caméra ultra grand-angle sur des files de dispatch séparées, en parallèle.
Enregistrer signifie écrire deux fichiers, image par image, en synchronisation
Enregistrer une vidéo, ce n'est pas juste « sauvegarder ce que voit la caméra » — chaque image doit être encodée et écrite dans un fichier dès son arrivée, en temps réel, assez vite pour suivre le flux en direct. Avec deux caméras, cela signifie faire tourner deux encodeurs indépendants et deux fichiers de sortie indépendants à la fois, chacun alimenté par les images de sa propre caméra.
La partie délicate est de les garder synchronisés. Chaque image porte un horodatage précis, et les sessions d'enregistrement des deux fichiers démarrent à partir d'un temps de référence partagé, de sorte que l'image N du fichier vertical et l'image N du fichier horizontal représentent le même instant. Si vous mettez en pause puis reprenez en cours d'enregistrement, la durée de la pause doit être soustraite de façon identique à chaque horodatage suivant sur les deux fichiers — sinon les deux vidéos se désynchronisent dès la reprise.
Le mode mono-objectif fait le même travail avec une seule caméra
Quand une seule caméra physique est utilisée, le « second fichier » est produit en recadrant une zone de chaque image de la première caméra, en temps réel, avant qu'elle ne soit transmise à son propre encodeur séparé. Cela doit se produire assez vite pour suivre la vidéo en direct — généralement 24 à 60 fois par seconde — donc un recadrage efficace (réutiliser des tampons mémoire plutôt que d'en allouer de nouveaux à chaque image) compte pour éviter que le téléphone ne surchauffe ou ne perde des images pendant un long enregistrement.
Les photos fonctionnent différemment de la vidéo
Capturer une photo fixe en mode double objectif signifie généralement déclencher une vraie capture photo sur une caméra (pour la pleine résolution et qualité) tout en récupérant la dernière image vidéo en direct de l'autre caméra pour l'utiliser comme image fixe — car déclencher deux captures photo complètes en même temps n'est pas ainsi que le matériel caméra est conçu pour fonctionner. C'est aussi pourquoi le « mode photo » d'une application double caméra ne joue qu'un seul son de déclencheur, même si deux images en ressortent.
DualFrame gère cette synchronisation automatiquement — en double objectif comme en mono-objectif, les deux fichiers restent synchronisés à travers les pauses, reprises et arrêts.
Découvrir DualFramePourquoi cela ne fonctionne que sur certains matériels
Faire tourner deux encodeurs à la fois, en temps réel, en 4K, est réellement exigeant — c'est pourquoi Apple limite l'API MultiCam aux appareils disposant d'assez de capacité de traitement d'image dédiée. Consultez notre guide sur quels iPhone prennent en charge l'enregistrement multi-caméra pour les détails, ou la page DualFrame pour iPhone pour voir comment c'est mis en pratique.