Documentation des formats FFmpeg
1 Description
Ce document décrit les formats pris en charge (muxers et demuxers) fournis par la bibliothèque libavformat.
2 Options de format
La bibliothèque libavformat fournit quelques options globales génériques, qui peuvent être définies sur tous les muxers et demuxers. De plus, chaque muxer ou demuxer peut prendre en charge des options dites privées, propres à ce composant.
Les options peuvent être définies en spécifiant -option valeur dans les outils FFmpeg, ou en définissant explicitement la valeur dans les options d'AVFormatContext, ou encore en utilisant l'API libavutil/opt.h pour un usage programmatique.
La liste des options prises en charge est la suivante :
avioflags flags (input/output)
Valeurs possibles :
‘direct’
Réduit la mise en tampon.
probesize integer (input)
Définit la taille de sondage en octets, c'est-à-dire la taille des données à analyser pour obtenir les informations du flux. Une valeur plus élevée permet de détecter davantage d'informations lorsqu'elles sont dispersées dans le flux, mais augmente la latence. Doit être un entier non inférieur à 32. La valeur par défaut est 5000000.
max_probe_packets integer (input)
Définit le nombre maximal de paquets mis en tampon lors du sondage d'un codec. La valeur par défaut est 2500 paquets.
packetsize integer (output)
Définit la taille de paquet.
fflags flags
Définit les indicateurs de format. Certains ne sont implémentés que pour un nombre limité de formats.
Valeurs possibles pour les fichiers d'entrée :
‘discardcorrupt’
Ignore les paquets corrompus.
‘fastseek’
Active, pour certains formats, un positionnement rapide mais imprécis.
‘genpts’
Génère les PTS manquants si le DTS est présent.
‘igndts’
Ignore le DTS si le PTS est également défini. Lorsque le PTS est défini, la valeur du DTS est réglée sur NOPTS. Ceci est ignoré lorsque l'indicateur nofillin est défini.
‘ignidx’
Ignore l'index.
‘nobuffer’
Réduit la latence introduite par la mise en tampon lors de l'analyse initiale des flux d'entrée.
‘nofillin’
Ne remplit pas les valeurs manquantes dans les champs de paquet qui peuvent être calculées exactement.
‘noparse’
Désactive les AVParsers, ce qui nécessite aussi +nofillin.
‘sortdts’
Essaie d'entrelacer les paquets de sortie par DTS. À l'heure actuelle, disponible uniquement pour les AVI dotés d'un index.
Valeurs possibles pour les fichiers de sortie :
‘autobsf’
Applique automatiquement les filtres bitstream requis par le format de sortie. Activé par défaut.
‘bitexact’
N'écrit que des données indépendantes de la plateforme, de la compilation et de l'horodatage. Cela garantit que les sommes de contrôle des fichiers et des données sont reproductibles et concordent d'une plateforme à l'autre. Son usage principal est le test de non-régression.
‘flush_packets’
Écrit les paquets immédiatement.
‘shortest’
Arrête le multiplexage à la fin du flux le plus court. Il peut être nécessaire d'augmenter max_interleave_delta pour éviter de vider les flux les plus longs avant la fin de fichier (EOF).
seek2any integer (input)
Autorise, si pris en charge, le positionnement sur des images non clés au niveau du demuxer lorsque réglé sur 1. La valeur par défaut est 0.
analyzeduration integer (input)
Indique le nombre de microsecondes analysées pour sonder l'entrée. Une valeur plus élevée permet de détecter des informations plus précises, mais augmente la latence. La valeur par défaut est 5 000 000 microsecondes, soit 5 secondes.
cryptokey hexadecimal string (input)
Définit la clé de déchiffrement.
indexmem integer (input)
Définit la mémoire maximale utilisée pour l'index d'horodatage (par flux).
rtbufsize integer (input)
Définit la mémoire maximale utilisée pour la mise en tampon des images en temps réel.
fdebug flags (input/output)
Affiche des informations de débogage spécifiques.
Valeurs possibles :
‘ts’
Affiche les informations d'horodatage.
‘id3v2’
Affiche les données des frames ID3v2 lors du démultiplexage de fichiers contenant des balises ID3v2.
max_delay integer (input/output)
Définit le délai maximal de multiplexage ou de démultiplexage, en microsecondes.
fpsprobesize integer (input)
Définit le nombre d'images utilisées pour sonder les fps.
audio_preload integer (output)
Définit le nombre de microsecondes d'avance avec lequel les paquets audio doivent être entrelacés.
chunk_duration integer (output)
Définit la durée en microsecondes de chaque bloc (chunk).
chunk_size integer (output)
Définit la taille en octets de chaque bloc (chunk).
err_detect, f_err_detect flags (input)
Définit les indicateurs de détection d'erreur. f_err_detect est obsolète et ne doit être utilisé que via l'outil ffmpeg.
Valeurs possibles :
‘crccheck’
Vérifie les CRC intégrés.
‘bitstream’
Détecte les écarts par rapport aux spécifications du bitstream.
‘buffer’
Détecte une longueur de bitstream incorrecte.
‘explode’
Interrompt le décodage dès la détection d'une erreur mineure.
‘careful’
Considère comme des erreurs les éléments qui enfreignent la spécification et qui n'ont jamais été observés en pratique.
‘compliant’
Considère comme des erreurs tous les manquements à la spécification.
‘aggressive’
Considère comme une erreur tout ce qu'un encoder raisonnable ne devrait pas faire.
max_interleave_delta integer (output)
Définit la durée maximale de mise en tampon pour l'entrelacement. Cette durée est exprimée en microsecondes et vaut par défaut 10000000 (10 secondes).
Pour garantir que tous les flux sont correctement entrelacés, libavformat attend d'avoir au moins un paquet pour chaque flux avant d'écrire réellement des paquets dans le fichier de sortie. Lorsque certains flux sont "épars" (c'est-à-dire présentent de grands écarts entre paquets successifs), cela peut entraîner une mise en tampon excessive.
Ce champ indique la différence maximale entre les horodatages du premier et du dernier paquet de la file de multiplexage, au-delà de laquelle libavformat écrit un paquet en sortie, qu'il ait ou non mis en file un paquet pour tous les flux.
S'il est réglé sur 0, libavformat continue de mettre les paquets en tampon jusqu'à disposer d'un paquet pour chaque flux, quelle que soit la différence maximale d'horodatage entre les paquets mis en tampon.
use_wallclock_as_timestamps integer (input)
Utilise l'horloge murale comme horodatage si réglé sur 1. La valeur par défaut est 0.
avoid_negative_ts integer (output)
Valeurs possibles :
‘make_non_negative’
Décale les horodatages pour les rendre non négatifs. Notez que cela n'affecte que les horodatages négatifs en tête de flux, et non les horodatages négatifs non monotones.
‘make_zero’
Décale les horodatages de sorte que le premier horodatage soit 0.
‘auto (default)’
Active le décalage lorsque le format cible l'exige.
‘disabled’
Désactive le décalage des horodatages.
Lorsque le décalage est activé, tous les horodatages de sortie sont décalés de la même valeur. La désynchronisation entre audio, vidéo et sous-titres ainsi que les différences relatives d'horodatage sont préservées telles qu'elles auraient été sans décalage.
skip_initial_bytes integer (input)
Définit le nombre d'octets à ignorer avant de lire l'en-tête et les images lorsque réglé sur 1. La valeur par défaut est 0.
correct_ts_overflow integer (input)
Corrige les dépassements ponctuels d'horodatage lorsque réglé sur 1. La valeur par défaut est 1.
flush_packets integer (output)
Vidange le flux d'E/S sous-jacent après chaque paquet. La valeur par défaut est -1 (auto), ce qui signifie que c'est le protocole sous-jacent qui décide ; 1 active l'option et a pour effet de réduire la latence, 0 la désactive et peut, dans certains cas, augmenter le débit d'E/S.
output_ts_offset offset (output)
Définit le décalage temporel de sortie.
offset doit être une spécification de durée ; voir (ffmpeg-utils) la section Time duration du manuel ffmpeg-utils(1).
Le décalage est ajouté par le muxer aux horodatages de sortie.
Spécifier un décalage positif signifie que les flux correspondants sont retardés de la durée spécifiée dans offset. La valeur par défaut est 0 (ce qui signifie qu'aucun décalage n'est appliqué).
format_whitelist list (input)
Liste de demuxers autorisés séparés par ",". Par défaut, tous sont autorisés.
dump_separator string (input)
Séparateur utilisé pour séparer les champs affichés en ligne de commande au sujet des paramètres du flux. Par exemple, pour séparer les champs par des retours à la ligne et une indentation :
ffprobe -dump_separator "
" -i ~/videos/matrixbench_mpeg2.mpg
max_streams integer (input)
Indique le nombre maximal de flux. Cela permet de rejeter les fichiers qui nécessiteraient trop de ressources en raison d'un nombre de flux trop élevé.
skip_estimate_duration_from_pts bool (input)
Ignore l'estimation de la durée d'entrée si elle nécessite un sondage supplémentaire du PTS en fin de fichier. À l'heure actuelle, applicable pour MPEG-PS et MPEG-TS.
duration_probesize integer (input)
Définit la taille de sondage, en octets, pour l'estimation de la durée d'entrée lorsqu'un sondage supplémentaire du PTS en fin de fichier est réellement nécessaire (à l'heure actuelle : MPEG-PS et MPEG-TS). Cette option s'adresse aux utilisateurs intéressés par un meilleur sondage des durées pour lui-même, ou indirectement du fait de l'utilisation du demuxer concat, par exemple. Le cas d'usage typique est un flux MPEG-TS CBR à débit binaire élevé, avec une forte mise en tampon vidéo et se terminant proprement avec des PTS similaires pour la vidéo et l'audio : dans un tel scénario, le grand écart physique entre le dernier paquet vidéo et le dernier paquet audio impose de lire de nombreux octets pour obtenir la durée du flux vidéo. Un autre cas d'usage est celui où le comportement de sondage par défaut n'atteint qu'une seule image vidéo qui n'est pas la dernière du flux en raison d'un réordonnancement des images, si bien que la durée n'est pas exacte. Définir cette option a un impact sur les performances même pour de petits fichiers, car la taille de sondage est fixe. Le comportement par défaut est un compromis polyvalent, largement adaptatif, mais la taille de sondage ne sera pas étendue pour obtenir les durées des flux à tout prix. Doit être un entier non inférieur à 1, ou 0 pour le comportement par défaut.
strict, f_strict integer (input/output)
Indique avec quelle rigueur suivre les normes. f_strict est obsolète et ne doit être utilisé que via l'outil ffmpeg.
Valeurs possibles :
‘very’
se conforme strictement à une version antérieure et plus stricte de la spécification ou du logiciel de référence
‘strict’
se conforme strictement à tout ce qui est dans la spécification, quelles qu'en soient les conséquences
‘normal’ ‘unofficial’
autorise les extensions non officielles
‘experimental’
autorise les éléments expérimentaux non normalisés, ainsi que les decoders et encoders expérimentaux (inachevés / en cours de développement / peu testés). Remarque : les decoders expérimentaux peuvent présenter un risque de sécurité ; ne les utilisez pas pour décoder des entrées non fiables.
2.1 Spécificateurs de flux de format
Les spécificateurs de flux de format permettent de sélectionner un ou plusieurs flux correspondant à des propriétés spécifiques.
La sémantique exacte des spécificateurs de flux est définie par la fonction avformat_match_stream_specifier(), déclarée dans l'en-tête libavformat/avformat.h et documentée dans (ffmpeg) la section Stream specifiers du manuel ffmpeg(1).
3 Demuxers
Les demuxers sont des éléments configurés dans FFmpeg capables de lire les flux multimédias d'un type de fichier particulier.
Lorsque vous configurez votre build FFmpeg, tous les demuxers pris en charge sont activés par défaut. Vous pouvez lister tous les demuxers disponibles avec l'option de configuration --list-demuxers.
Vous pouvez désactiver tous les demuxers avec l'option de configuration --disable-demuxers, et activer/désactiver sélectivement chaque demuxer avec les options --enable-demuxer=DEMUXER / --disable-demuxer=DEMUXER.
L'option -demuxers des outils ff* affiche la liste des demuxers activés. Utilisez -formats pour voir une liste combinée des demuxers et muxers activés.
La description de certains des demuxers disponibles à l'heure actuelle suit.
3.1 aa
Demuxer Audible Format 2, 3 et 4.
Ce demuxer sert à démultiplexer les fichiers Audible Format 2, 3 et 4 (.aa).
3.2 aac
Demuxer AAC Raw Audio Data Transport Stream.
Ce demuxer sert à démultiplexer une entrée ADTS contenant un unique flux AAC, ainsi que d'éventuelles balises ID3v1/2 ou APE.
3.3 apng
Demuxer Animated Portable Network Graphics.
Ce demuxer sert à démultiplexer les fichiers APNG. Tous les en-têtes, à l'exception de la signature PNG, jusqu'au premier chunk fcTL (non inclus), sont transmis en tant qu'extradata. Les images sont ensuite découpées comme étant l'ensemble des chunks compris entre deux chunks fcTL, ou entre le dernier chunk fcTL et le chunk IEND.
-ignore_loop bool
Ignore la variable de boucle du fichier si elle est définie. Activé par défaut.
-max_fps int
Fréquence d'images maximale, en images par seconde. La valeur par défaut de 0 n'impose aucune limite.
-default_fps int
Fréquence d'images par défaut, en images par seconde, lorsqu'aucune n'est spécifiée dans le fichier (0 signifiant aussi rapide que possible). La valeur par défaut est 15.
3.4 asf
Demuxer Advanced Systems Format.
Ce demuxer sert à démultiplexer les fichiers ASF et les flux réseau MMS.
-no_resync_search bool
N'essaie pas de se resynchroniser en recherchant un certain code de démarrage optionnel.
3.5 concat
Demuxer de script de concaténation virtuelle.
Ce demuxer lit une liste de fichiers et d'autres directives à partir d'un fichier texte, et les démultiplexe les uns après les autres, comme si tous leurs paquets avaient été multiplexés ensemble.
Les horodatages des fichiers sont ajustés de sorte que le premier fichier commence à 0 et que chaque fichier suivant commence là où le précédent se termine. Notez que cet ajustement est effectué globalement et peut provoquer des écarts si tous les flux n'ont pas exactement la même longueur.
Tous les fichiers doivent avoir les mêmes flux (mêmes codecs, même base de temps, etc.).
La durée de chaque fichier est utilisée pour ajuster les horodatages du fichier suivant : si la durée est incorrecte (par exemple parce qu'elle a été calculée à partir du débit binaire ou parce que le fichier est tronqué), cela peut provoquer des artefacts. La directive duration permet de remplacer la durée stockée dans chaque fichier.
3.5.1 Syntaxe
Le script est un fichier texte en ASCII étendu, avec une directive par ligne. Les lignes vides, les espaces de début de ligne et les lignes commençant par ’#’ sont ignorés. La directive suivante est reconnue :
file path
Chemin du fichier à lire ; les caractères spéciaux et les espaces doivent être échappés avec une barre oblique inverse ou des apostrophes simples.
Toutes les directives relatives aux fichiers qui suivent s'appliquent à ce fichier.
ffconcat version 1.0
Identifie le type et la version du script.
Pour que FFmpeg reconnaisse le format automatiquement, cette directive doit apparaître exactement telle quelle (sans espace supplémentaire ni marque d'ordre des octets) sur la toute première ligne du script.
duration dur
Durée du fichier. Cette information peut être spécifiée à partir du fichier ; la spécifier ici peut être plus efficace ou utile si l'information du fichier n'est pas disponible ou exacte.
Si la durée est définie pour tous les fichiers, il est alors possible de se positionner dans l'ensemble de la vidéo concaténée.
inpoint timestamp
Point d'entrée du fichier. Lorsque le demuxer ouvre le fichier, il se positionne instantanément sur l'horodatage spécifié. Le positionnement est effectué de sorte que tous les flux puissent être présentés avec succès au point d'entrée.
Cette directive fonctionne mieux avec les codecs à images intra, car avec les codecs à images non intra, des paquets supplémentaires sont généralement obtenus avant le point d'entrée réel, et le contenu décodé contiendra très probablement aussi des images antérieures au point d'entrée.
Pour chaque fichier, les paquets antérieurs au point d'entrée du fichier auront des horodatages inférieurs à l'horodatage de début calculé du fichier (négatif dans le cas du premier fichier), et la durée des fichiers (si elle n'est pas spécifiée par la directive duration) sera réduite en fonction de leur point d'entrée spécifié.
En raison d'éventuels paquets antérieurs au point d'entrée spécifié, les horodatages des paquets peuvent se chevaucher entre deux fichiers concaténés.
outpoint timestamp
Point de sortie du fichier. Lorsque le demuxer atteint l'horodatage de décodage spécifié dans l'un des flux, il le traite comme une condition de fin de fichier et ignore le paquet en cours ainsi que tous les paquets restants de tous les flux.
Le point de sortie est exclusif, ce qui signifie que le demuxer ne produira aucun paquet dont l'horodatage de décodage est supérieur ou égal au point de sortie.
Cette directive fonctionne mieux avec les codecs à images intra et les formats dans lesquels tous les flux sont étroitement entrelacés. Avec les codecs à images non intra, des paquets supplémentaires dont le presentation timestamp est postérieur au point de sortie sont généralement obtenus ; le contenu décodé contiendra donc très probablement aussi des images postérieures au point de sortie. Si les flux ne sont pas étroitement entrelacés, il se peut que tous les paquets de tous les flux avant le point de sortie ne soient pas obtenus, et il pourrait n'être possible de décoder que le flux le plus précoce jusqu'au point de sortie.
La durée des fichiers (si elle n'est pas spécifiée par la directive duration) sera réduite en fonction de leur point de sortie spécifié.
file_packet_metadata key=value
Métadonnées des paquets du fichier. Les métadonnées spécifiées seront définies pour chaque paquet du fichier. Cette directive peut être spécifiée plusieurs fois pour ajouter plusieurs entrées de métadonnées. Cette directive est obsolète ; utilisez file_packet_meta à la place.
file_packet_meta key value
Métadonnées des paquets du fichier. Les métadonnées spécifiées seront définies pour chaque paquet du fichier. Cette directive peut être spécifiée plusieurs fois pour ajouter plusieurs entrées de métadonnées.
option key value
Option pour accéder au fichier, l'ouvrir et le sonder. Peut être présente plusieurs fois.
stream
Introduit un flux dans le fichier virtuel. Toutes les directives relatives aux flux qui suivent s'appliquent au dernier flux introduit. Certaines propriétés de flux doivent être définies afin de permettre d'identifier les flux correspondants dans les sous-fichiers. Si aucun flux n'est défini dans le script, les flux du premier fichier sont copiés.
exact_stream_id id
Définit l'id du flux. Si cette directive est donnée, la chaîne correspondant à cet id dans les sous-fichiers sera utilisée. Ceci est particulièrement utile pour les fichiers MPEG-PS (VOB), où l'ordre des flux n'est pas fiable.
stream_meta key value
Métadonnées du flux. Peut être présente plusieurs fois.
stream_codec value
Codec du flux.
stream_extradata hex_string
Extradata de la chaîne, encodée en hexadécimal.
chapter id start end
Ajoute un chapitre. id est un identifiant unique, pouvant être petit et consécutif.
3.5.2 Options
Ce demuxer accepte l'option suivante :
safe
Si réglé sur 1, rejette les chemins de fichiers et directives non sûrs. Un chemin de fichier est considéré comme sûr s'il ne contient pas de spécification de protocole, s'il est relatif et si tous ses composants ne contiennent que des caractères de l'ensemble de caractères portable (lettres, chiffres, point, tiret bas et trait d'union), sans point en début de composant.
Si réglé sur 0, tout nom de fichier est accepté.
La valeur par défaut est 1.
auto_convert
Si réglé sur 1, tente d'effectuer des conversions automatiques sur les données de paquet pour rendre les flux concaténables. La valeur par défaut est 1.
À l'heure actuelle, la seule conversion consiste à ajouter le filtre bitstream h264_mp4toannexb aux flux H.264 au format MP4. Ceci est nécessaire notamment en cas de changements de résolution.
segment_time_metadata
Si réglé sur 1, chaque paquet contiendra les métadonnées lavf.concat.start_time et lavf.concat.duration, qui correspondent au start_time et à la durée des segments de fichier respectifs dans la sortie concaténée, exprimés en microsecondes. La métadonnée de durée n'est définie que si elle est connue à partir du fichier concat. La valeur par défaut est 0.
3.5.3 Exemples
-
Utilisez des noms de fichiers absolus et incluez quelques commentaires :
# my first filename file /mnt/share/file-1.wav # my second filename including whitespace file '/mnt/share/file 2.wav' # my third filename including whitespace plus single quote file '/mnt/share/file 3'\''.wav' -
Autorisez le sondage automatique du format d'entrée, utilisez des noms de fichiers sûrs et définissez la durée du premier fichier :
ffconcat version 1.0 file file-1.wav duration 20.0 file subdir/file-2.wav
3.6 dash
Demuxer Dynamic Adaptive Streaming over HTTP.
Ce demuxer présente tous les AVStreams trouvés dans le manifeste. En définissant les indicateurs discard sur les AVStreams, l'appelant peut décider quels flux recevoir réellement. Chaque flux reflète les propriétés id et bandwidth de la <Representation> sous forme de clés de métadonnées nommées respectivement "id" et "variant_bitrate".
3.6.1 Options
Ce demuxer accepte l'option suivante :
cenc_decryption_key
Clé par défaut de 16 octets, en hexadécimal, pour déchiffrer les fichiers chiffrés à l'aide d'ISO Common Encryption (CENC/AES-128 CTR ; ISO/IEC 23001-7).
cenc_decryption_keys
Dictionnaire d'ID de clé de 16 octets => clé de 16 octets, les deux en hexadécimal, pour déchiffrer les fichiers chiffrés à l'aide d'ISO Common Encryption (CENC/AES-128 CTR ; ISO/IEC 23001-7).
3.7 dvdvideo
Demuxer DVD-Video, reposant sur libdvdnav et libdvdread.
Permet d'ingérer directement des titres DVD, en particulier des PGC séquentiels, dans un pipeline de conversion. Les ressources de menu, telles que la vidéo ou l'audio d'arrière-plan, peuvent également être démultiplexées à partir des coordonnées du menu (au mieux).
Les périphériques blocs (lecteurs DVD), les fichiers ISO et les structures de répertoires sont acceptés. Il s'active avec -f dvdvideo placé devant l'une de ces entrées.
Ce demuxer ne dispose d'AUCUN code de déchiffrement, quel qu'il soit. Vous êtes seul face aux DVD chiffrés et ne devez attendre aucune assistance à ce sujet.
La lecture sous-jacente est gérée par libdvdnav, et l'analyse de la structure par libdvdread. FFmpeg doit être compilé avec la prise en charge des bibliothèques GPL disponible, ainsi qu'avec les options de configuration --enable-libdvdnav et --enable-libdvdread.
Il est nécessaire de fournir soit le "title number" souhaité, soit des coordonnées PGC/PG exactes. De nombreux lecteurs et outils DVD open source peuvent aider à obtenir cette information. Si rien n'est spécifié, le demuxer utilise par défaut le titre 1, ce qui fonctionne pour de nombreux disques. Toutefois, en raison de la flexibilité du format, il est recommandé de vérifier manuellement. De nombreux disques sont produits de façon inhabituelle ou avec des en-têtes invalides.
Si l'entrée est un véritable lecteur DVD, notez que certains lecteurs peuvent échouer silencieusement lors de la lecture de secteurs défectueux du disque, renvoyant à la place des bits aléatoires, ce qui constitue en réalité des données corrompues. Ce phénomène est particulièrement marqué sur les disques vieillissants ou en décomposition. Une seconde passe et des vérifications d'intégrité seraient nécessaires pour détecter la corruption. Il ne s'agit pas d'un problème de FFmpeg.
3.7.1 Contexte
DVD-Video n'est pas, au sens traditionnel, un format de container linéaire directement accessible. Il permet au contraire une lecture complexe et programmatique de flux MPEG-PS soigneusement multiplexés, stockés dans des fichiers VOB sans en-tête. Pour l'utilisateur final, ces flux sont simplement appelés "titres", mais la séquence de lecture logique réelle est définie par un ou plusieurs "PGC", ou Program Group Chains, au sein du titre. Le PGC est à son tour composé de plusieurs "PG", ou Programs", qui sont les segments vidéo proprement dits (ordonnés séquentiellement pour un long métrage typique). La structure du PGC, ainsi que la disposition des flux et les métadonnées, sont stockées dans des fichiers IFO qui doivent être analysés. Les PGC peuvent être vus, en termes plus simples, comme des listes de lecture.
Un véritable lecteur DVD repose sur l'interaction de l'utilisateur avec une interface graphique via des menus et sur une VM interne pour piloter le déroulement du démultiplexage. En général, l'utilisateur navigue (via les menus) ou est automatiquement redirigé vers le PGC de son choix. Pendant ce processus et la lecture qui s'ensuit, la VM interne du lecteur DVD maintient également un état et exécute des instructions pouvant provoquer des sauts vers différents secteurs en cours de lecture. C'est pourquoi libdvdnav intervient, une lecture linéaire des blobs MPEG-PS du disque (VOB) n'étant pas suffisante, dans de nombreux cas, pour produire la bonne séquence.
Il existe de nombreuses autres structures DVD (un sujet vaste) qui ne seront pas abordées ici. Les paquets NAV, en particulier, sont traités par ce demuxer afin d'établir un minutage précis, mais ne sont pas émis en tant que flux. Pour une bonne compréhension d'ensemble, reportez-vous à : https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures
3.7.2 Options
Ce demuxer accepte les options suivantes :
title int
Le numéro de titre à lire. Doit être défini si pgc et pg ne le sont pas. Non applicable aux menus. La valeur par défaut est 0 (auto), qui sélectionne pour l'instant uniquement le premier titre disponible (titre 1) et avertit l'utilisateur des implications.
chapter_start int
Le numéro de chapitre, ou PTT (part-of-title), à partir duquel commencer. Non applicable aux menus. La valeur par défaut est 1.
chapter_end int
Le numéro de chapitre, ou PTT (part-of-title), auquel se terminer. Non applicable aux menus. La valeur par défaut est 0, valeur spéciale signalant une fin au dernier chapitre possible.
angle int
Le numéro d'angle vidéo, désignant ce qui est essentiellement un flux vidéo supplémentaire composé d'images alternées entrelacées dans les VOB. Non applicable aux menus. La valeur par défaut est 1.
region int
Le code de région à utiliser pour la lecture. Certains disques peuvent s'en servir pour définir par défaut la lecture selon un angle particulier dans différentes régions. Cette option n'affecte pas le code de région d'un véritable lecteur DVD lorsqu'il est utilisé comme entrée. Non applicable aux menus. La valeur par défaut est 0, "monde".
menu bool
Démultiplexe les ressources de menu au lieu de naviguer dans un titre. Nécessite les coordonnées exactes du menu (menu_lu, menu_vts, pgc, pg). La valeur par défaut est false.
menu_lu int
La langue de menu à démultiplexer. Sur un DVD, les menus sont regroupés par langue. La valeur par défaut est 1, la première unité de langue.
menu_vts int
Le VTS où réside le menu, ou 0 s'il s'agit d'un menu VMG (niveau racine). La valeur par défaut est 1, menu du premier VTS.
pgc int
Le PGC d'entrée à partir duquel démarrer la lecture, en conjonction avec pg. Alternative à la définition de title. Les marqueurs de chapitre ne sont pas pris en charge pour le moment. Doit être défini explicitement pour les menus. La valeur par défaut est 0, résolution automatique à partir de la valeur de title.
pg int
Le PG d'entrée à partir duquel démarrer la lecture, en conjonction avec pgc. Alternative à la définition de title. Les marqueurs de chapitre ne sont pas pris en charge pour le moment. La valeur par défaut est 1, le premier PG du PGC.
preindex bool
Cette option permet d'obtenir des marqueurs de chapitre (PTT) précis et une mesure de durée exacte, ce qui nécessite une seconde passe de lecture, lente, afin d'indexer les horodatages des marqueurs de chapitre à partir des paquets NAV. C'est un travail supplémentaire peu idéal pour de véritables lecteurs optiques. Il est recommandé, et plus rapide, d'utiliser cette option avec une copie de sauvegarde de la structure du DVD stockée sur un disque dur. Incompatible avec pgc et pg. La valeur par défaut est 0, false.
trim bool
Ignore les cellules de remplissage (c'est-à-dire les cellules de moins d'une seconde) en début de PGC. De nombreux disques comportent des segments de remplissage au début du PGC, souvent constitués de données inutiles destinées à contrôler la vitesse de mise en tampon d'un véritable lecteur DVD, sans autre valeur informative réelle. Non applicable aux menus. La valeur par défaut est 1, true.
3.7.3 Exemples
-
Ouvrez le titre 3 d'une structure de DVD donnée :
ffmpeg -f dvdvideo -title 3 -i <path to DVD> ... -
Ouvrez les chapitres 3 à 6 du titre 1 d'une structure de DVD donnée :
ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ... -
Ouvrez uniquement le chapitre 5 du titre 1 d'une structure de DVD donnée :
ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ... -
Démultiplexez le menu avec la langue 1 du VTS 1, PGC 1, en commençant au PG 1 :
ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
3.8 ea
Demuxer de format Electronic Arts Multimedia.
Ce format est utilisé par divers jeux Electronic Arts.
3.8.1 Options
merge_alpha bool
Normalement, le canal alpha VP6 (s'il existe) est renvoyé comme flux vidéo secondaire ; définir cette option permet au demuxer de renvoyer un flux vidéo unique contenant le canal alpha en plus de la vidéo ordinaire.
3.9 imf
Demuxer Interoperable Master Format.
Ce demuxer présente les flux audio et vidéo trouvés dans une IMF Composition, telle que spécifiée dans SMPTE ST 2067-2.
ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...
Si -assetmaps n'est pas spécifié, le demuxer recherche un fichier nommé ASSETMAP.xml dans le même répertoire que le CPL.
3.10 flv, live_flv, kux
Demuxer Adobe Flash Video Format.
Ce demuxer sert à démultiplexer les fichiers FLV et les flux réseau RTMP. Dans le cas de flux réseau en direct, si le format est forcé, l'option live_flv peut être utilisée à la place de flv pour survivre aux discontinuités d'horodatage. KUX est une variante de flv utilisée sur la plateforme Youku.
ffmpeg -f flv -i myfile.flv ...
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
-flv_metadata bool
Alloue les flux en fonction du contenu du tableau onMetaData.
-flv_ignore_prevtag bool
Ignore la taille de la valeur previous tag.
-flv_full_metadata bool
Produit en sortie tout le contexte de onMetadata.
3.11 gif
Demuxer GIF animé.
Il accepte les options suivantes :
min_delay
Définit le délai minimal valide entre les images, en centièmes de seconde. La plage va de 0 à 6000. La valeur par défaut est 2.
max_gif_delay
Définit le délai maximal valide entre les images, en centièmes de seconde. La plage va de 0 à 65535. La valeur par défaut est 65535 (environ onze minutes), la valeur maximale autorisée par la spécification.
default_delay
Définit le délai par défaut entre les images, en centièmes de seconde. La plage va de 0 à 6000. La valeur par défaut est 10.
ignore_loop
Les fichiers GIF peuvent contenir des informations indiquant de boucler un certain nombre de fois (ou indéfiniment). Si ignore_loop est réglé sur 1, le paramètre de boucle de l'entrée est ignoré et aucun bouclage n'a lieu. S'il est réglé sur 0, le bouclage a lieu et se répète le nombre de fois indiqué par le GIF. La valeur par défaut est 1.
Par exemple, avec le filtre overlay, superposez un GIF en boucle infinie sur une autre vidéo :
ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv
Notez que, dans l'exemple ci-dessus, l'option shortest du filtre overlay est utilisée pour terminer la vidéo de sortie à la longueur du fichier d'entrée le plus court, qui dans ce cas est input.mp4, le GIF de cet exemple bouclant indéfiniment.
3.12 hls
Demuxer HLS
Demuxer Apple HTTP Live Streaming.
Ce demuxer présente tous les AVStreams de tous les flux variants. Le champ id est défini sur le numéro d'index du variant de débit binaire. En définissant les indicateurs discard sur les AVStreams (en appuyant sur ’a’ ou ’v’ dans ffplay), l'appelant peut décider quels flux variants recevoir réellement. Le débit binaire total du variant auquel appartient le flux est disponible dans une clé de métadonnées nommée "variant_bitrate".
Il accepte les options suivantes :
live_start_index
index de segment à partir duquel démarrer les flux en direct (les valeurs négatives partent de la fin).
prefer_x_start
préfère utiliser #EXT-X-START, si présent dans la playlist, plutôt que live_start_index.
allowed_extensions
liste d'extensions de fichiers, séparées par ’,’, auxquelles hls est autorisé à accéder.
extension_picky
Ceci bloque le sondage des extensions non autorisées. Cela exige également que tous les segments disponibles aient des extensions correspondant au format, sauf mpegts, qui est toujours autorisé. Il est recommandé de définir correctement les listes blanches plutôt que de dépendre des extensions. Activé par défaut.
max_reload
Nombre maximal de tentatives de rechargement d'une liste insuffisante. La valeur par défaut est 1000.
m3u8_hold_counters
Le nombre maximal de chargements de m3u8 lorsqu'il se rafraîchit sans nouveaux segments. La valeur par défaut est 1000.
http_persistent
Utilise des connexions HTTP persistantes. Applicable uniquement aux flux HTTP. Activé par défaut.
http_multiple
Utilise plusieurs connexions HTTP pour le téléchargement des segments HTTP. Activé par défaut pour les serveurs HTTP/1.1.
http_seekable
Utilise des requêtes HTTP partielles pour le téléchargement des segments HTTP. 0 = désactivé, 1 = activé, -1 = auto. La valeur par défaut est auto.
seg_format_options
Définit les options du demuxer des segments média à l'aide d'une liste de paires clé=valeur séparées par :.
seg_max_retry
Nombre maximal de rechargements d'un segment en cas d'erreur, utile lorsque le saut de segment en cas d'erreur réseau n'est pas souhaité. La valeur par défaut est 0.
3.13 image2
Demuxer de fichiers image.
Ce demuxer lit à partir d'une liste de fichiers image spécifiée par un motif. La syntaxe et la signification du motif sont définies par l'option pattern_type.
Le motif peut contenir un suffixe utilisé pour déterminer automatiquement le format des images contenues dans les fichiers.
La taille, le pixel format et le format de chaque image doivent être identiques pour tous les fichiers de la séquence.
Ce demuxer accepte les options suivantes :
framerate
Définit la fréquence d'images du flux vidéo. La valeur par défaut est 25.
loop
Si réglé sur 1, boucle sur l'entrée. La valeur par défaut est 0.
pattern_type
Sélectionne le type de motif utilisé pour interpréter le nom de fichier fourni.
pattern_type accepte l'une des valeurs suivantes.
none
Désactive la correspondance de motif ; la vidéo ne contiendra donc que l'image spécifiée. Cette option est à utiliser si vous ne souhaitez pas créer de séquences à partir de plusieurs images et que vos noms de fichiers peuvent contenir des caractères spéciaux de motif.
sequence
Sélectionne un type de motif de séquence, utilisé pour spécifier une séquence de fichiers indexés par des nombres séquentiels.
Un motif de séquence peut contenir la chaîne "%d" ou "%0Nd", qui indique la position des caractères représentant un nombre séquentiel dans chaque nom de fichier correspondant au motif. Si la forme "%d0Nd" est utilisée, la chaîne représentant le nombre dans chaque nom de fichier est complétée par des zéros, et N est le nombre total de chiffres complétés par des zéros représentant ce nombre. Le caractère littéral ’%’ peut être spécifié dans le motif par la chaîne "%%".
Si le motif de séquence contient "%d" ou "%0Nd", le premier nom de fichier de la liste de fichiers spécifiée par le motif doit contenir un nombre compris, bornes incluses, entre start_number et start_number+start_number_range-1, et tous les nombres suivants doivent être séquentiels.
Par exemple, le motif "img-%03d.bmp" correspondra à une séquence de noms de fichiers de la forme img-001.bmp, img-002.bmp, ..., img-010.bmp, etc. ; le motif "i%%m%%g-%d.jpg" correspondra à une séquence de noms de fichiers de la forme i%m%g-1.jpg, i%m%g-2.jpg, ..., i%m%g-10.jpg, etc.
Notez que le motif ne doit pas nécessairement contenir "%d" ou "%0Nd" ; par exemple, pour convertir un unique fichier image img.jpeg, la commande suivante peut être employée :
ffmpeg -i img.jpeg img.png
glob
Sélectionne un type de motif à caractères génériques (glob).
Le motif est interprété comme un motif glob(). Cette option n'est sélectionnable que si libavformat a été compilé avec la prise en charge du globbing.
La valeur par défaut est sequence.
pixel_format
Définit le pixel format des images à lire. S'il n'est pas spécifié, le pixel format est déduit du premier fichier image de la séquence.
start_number
Définit l'index du fichier correspondant au motif de fichier image à partir duquel commencer la lecture. La valeur par défaut est 0.
start_number_range
Définit la plage d'intervalle d'index à vérifier lors de la recherche du premier fichier image de la séquence, à partir de start_number. La valeur par défaut est 5.
ts_from_file
Si réglé sur 1, définit l'horodatage de l'image sur la date de modification du fichier image. Notez que la monotonie des horodatages n'est pas garantie : les images se succèdent dans le même ordre que sans cette option. La valeur par défaut est 0. Si réglé sur 2, définit l'horodatage de l'image sur la date de modification du fichier image avec une précision à la nanoseconde.
video_size
Définit la taille vidéo des images à lire. Si elle n'est pas spécifiée, la taille vidéo est déduite du premier fichier image de la séquence.
export_path_metadata
Si réglé sur 1, ajoute deux champs supplémentaires aux métadonnées trouvées en entrée, les rendant également disponibles pour d'autres filtres (voir le filtre drawtext pour des exemples). La valeur par défaut est 0. Les champs supplémentaires sont décrits ci-dessous :
lavf.image2dec.source_path
Correspond au chemin complet du fichier d'entrée en cours de lecture.
lavf.image2dec.source_basename
Correspond au nom du fichier en cours de lecture.
3.13.1 Exemples
-
Utilisez
ffmpegpour créer une vidéo à partir des images de la séquence de fichiers img-001.jpeg, img-002.jpeg, ..., en supposant une fréquence d'images d'entrée de 10 images par seconde :ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv -
Comme ci-dessus, mais en commençant la lecture à partir du fichier d'index 100 de la séquence :
ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv -
Lisez les images correspondant au motif glob "*.png", c'est-à-dire tous les fichiers se terminant par le suffixe ".png" :
ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
3.14 libgme
La bibliothèque Game Music Emu est une collection d'émulateurs de fichiers de musique de jeux vidéo.
Voir https://bitbucket.org/mpyne/game-music-emu/overview pour plus d'informations.
Il accepte les options suivantes :
track_index
Définit l'index de la piste à démultiplexer. Le demuxer ne peut exporter qu'une seule piste. Les index de piste commencent à 0. Par défaut, la première piste est choisie. Le nombre de pistes est exporté comme entrée de métadonnées tracks.
sample_rate
Définit la fréquence d'échantillonnage de la piste exportée. La plage va de 1000 à 999999. La valeur par défaut est 44100.
max_size (bytes)
Le demuxer met en tampon la totalité du fichier en mémoire. Ajustez cette valeur pour définir la taille maximale du tampon, qui sert également de plafond pour la taille des fichiers pouvant être lus. La valeur par défaut est 50 MiB.
3.15 libmodplug
Demuxer de module basé sur ModPlug
Voir https://github.com/Konstanty/libmodplug
Il exporte un flux audio de 2 canaux, 16 bits, 44.1 kHz. Une option permet aussi d'exporter un flux vidéo pal8 de 16 couleurs, avec ou sans métadonnées affichées.
Il accepte les options suivantes :
noise_reduction
Applique un simple filtre passe-bas. Les valeurs possibles sont 1 (activé) ou 0 (désactivé). La valeur par défaut est 0.
reverb_depth
Définit la quantité de réverbération. La plage est 0-100. La valeur par défaut est 0.
reverb_delay
Définit le délai en ms, limité à la plage 40-250 ms. La valeur par défaut est 0.
bass_amount
Applique une expansion des basses, aussi appelée XBass ou megabass. La plage va de 0 (faible) à 100 (fort). La valeur par défaut est 0.
bass_range
Définit la coupure, c'est-à-dire la limite supérieure des fréquences graves. La plage est 10-100 Hz. La valeur par défaut est 0.
surround_depth
Applique un effet surround Dolby Pro-Logic. La plage va de 0 (faible) à 100 (fort). La valeur par défaut est 0.
surround_delay
Définit le délai surround en ms, limité à la plage 5-40 ms. La valeur par défaut est 0.
max_size
Le demuxer met en tampon la totalité du fichier en mémoire. Ajustez cette valeur pour définir la taille maximale du tampon, qui sert également de plafond pour la taille des fichiers pouvant être lus. La plage va de 0 à 100 MiB. 0 supprime la limite de taille du tampon (déconseillé). La valeur par défaut est 5 MiB.
video_stream_expr
Chaîne évaluée via l'API eval pour attribuer des couleurs au flux vidéo généré. Les variables utilisables sont x, y, w, h, t, speed, tempo, order, pattern et row.
video_stream
Génère un flux vidéo. Les valeurs possibles sont 1 (activé) ou 0 (désactivé). La valeur par défaut est 0.
video_stream_w
Définit la largeur de l'image vidéo en ’chars’, un char représentant 8 pixels. La plage est 20-512. La valeur par défaut est 30.
video_stream_h
Définit la hauteur de l'image vidéo en ’chars’, un char représentant 8 pixels. La plage est 20-512. La valeur par défaut est 30.
video_stream_ptxt
Affiche des métadonnées sur le flux vidéo. Comprend speed, tempo, order, pattern, row et ts (temps en ms). Les valeurs possibles sont 1 (activé) ou 0 (désactivé). La valeur par défaut est 1.
3.16 libopenmpt
Demuxer de module basé sur libopenmpt
Voir https://lib.openmpt.org/libopenmpt/ pour plus d'informations.
Certains fichiers comportent plusieurs subsongs (pistes), réglables avec l'option subsong.
Il accepte les options suivantes :
subsong
Définit l'index du subsong. Peut être ’all’, ’auto’, ou l'index du subsong. Les index de subsong commencent à 0. La valeur par défaut est ’auto’.
La valeur par défaut consiste à laisser libopenmpt choisir.
layout
Définit la disposition des canaux. Les valeurs valides sont les dispositions à 1, 2 et 4 canaux. La valeur par défaut est STEREO.
sample_rate
Définit la fréquence d'échantillonnage de sortie de libopenmpt. La plage va de 1000 à INT_MAX. La valeur par défaut est 48000.
3.17 mcc
Demuxer pour les fichiers MacCaption MCC ; il prend en charge les versions MCC 1.0 et 2.0. Les fichiers MCC stockent des données VANC, qui peuvent inclure des sous-titres codés (EIA-608 et CEA-708), un timecode auxiliaire, des données pan-scan, etc. Par défaut, pour des raisons de compatibilité ascendante, le demuxer MCC extrait uniquement les sous-titres codés EIA-608 et CEA-708 et renvoie un flux EIA_608, en ignorant toutes les autres données VANC. Vous pouvez le configurer pour qu'il renvoie toutes les données VANC dans un flux de données SMPTE_436M_ANC en définissant -eia608_extract 0
3.17.1 Exemples
- Convertissez un fichier MCC au format Scenarist (SCC) :
ffmpeg -i CC.mcc -c:s copy CC.scc
Notez que le format SCC ne prend en charge que l'EIA-608 ; cette conversion supprime donc toutes les autres données, telles que les extensions CEA-708.
- Fusionnez un fichier MCC dans un fichier MXF :
ffmpeg -i video_and_audio.mxf -eia608_extract 0 -i CC.mcc -c copy -map 0 -map 1 out.mxf
Cette opération conserve toutes les données VANC et les insère dans le fichier MXF de sortie sous la forme d'un flux de données SMPTE_436M_ANC.
3.18 mov/mp4/3gp
Demuxer pour le Quicktime File Format et l'ISO/IEC Base Media File Format (ISO/IEC 14496-12 ou MPEG-4 Part 12, ISO/IEC 15444-12 ou JPEG 2000 Part 12).
Extensions enregistrées : mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v
3.18.1 Options
Ce demuxer accepte les options suivantes :
enable_drefs
Active le chargement des pistes externes ; désactivé par défaut. Activer cette option peut, en théorie, entraîner une fuite d'informations dans certains cas d'usage.
use_absolute_path
Autorise le chargement des pistes externes via des chemins absolus ; désactivé par défaut. Activer cette option présente un risque de sécurité. Elle ne doit être activée que si la source est connue pour être non malveillante.
seek_streams_individually
Lors d'un positionnement, identifie individuellement le point le plus proche dans chaque flux et démultiplexe les paquets de ce flux à partir du point identifié. Cela peut produire une séquence de paquets différente de celle obtenue par un démultiplexage linéaire depuis le début. La valeur par défaut est true.
ignore_editlist
Ignore tous les atomes de liste de montage (edit list). Par défaut, le demuxer modifie l'index du flux pour refléter la chronologie décrite par la liste de montage. La valeur par défaut est false.
advanced_editlist
Modifie l'index du flux pour refléter la chronologie décrite par la liste de montage. ignore_editlist doit être défini à false pour que cette option soit effective. Si ignore_editlist et cette option sont tous deux définis à false, seul le début de l'index du flux est modifié pour refléter le temps d'attente initial ou l'horodatage de départ décrit par la liste de montage. La valeur par défaut est true.
ignore_chapters
N'analyse pas les chapitres. Cela inclut les tags/moments GoPro ’HiLight’. Notez que les chapitres ne sont analysés que lorsque l'entrée permet le positionnement. La valeur par défaut est false.
use_mfra_for
Pour une entrée fragmentée permettant le positionnement, définit l'horodatage de départ du fragment à partir de la box media fragment random access, si elle est présente.
Les options suivantes sont disponibles :
‘auto’
Détecte automatiquement s'il faut définir les horodatages mfra comme PTS ou DTS (par défaut)
‘dts’
Définit les horodatages mfra comme DTS
‘pts’
Définit les horodatages mfra comme PTS
‘0’
N'utilise pas la boîte mfra pour définir les horodatages
use_tfdt
Pour une entrée fragmentée, définit l'horodatage de départ du fragment à baseMediaDecodeTime à partir de la box tfdt. Activé par défaut, ce qui privilégie l'usage de la box tfdt pour définir le DTS. Désactivez cette option pour utiliser earliest_presentation_time de la box sidx. Dans les deux cas, l'horodatage de la box mfra est utilisé s'il est disponible et si use_mfra_for est défini à pts ou dts.
export_all
Exporte les box non reconnues à l'intérieur de la box udta comme entrées de métadonnées. Les quatre premiers caractères du type de box servent de clé. La valeur par défaut est false.
export_xmp
Exporte l'intégralité du contenu de la box XMP_ et de la box uuid sous forme de chaîne avec la clé xmp. Notez que si export_all est activé et pas cette option, le contenu de la box XMP_ est tout de même exporté, mais avec la clé XMP_. La valeur par défaut est false.
activation_bytes
Clé de 4 octets requise pour déchiffrer les fichiers Audible AAX et AAX+. Voir la sous-section Audible AAX ci-dessous.
audible_fixed_key
Clé fixe utilisée pour traiter les fichiers Audible AAX/AAX+. Elle est préconfigurée et ne devrait donc pas avoir besoin d'être spécifiée.
decryption_key
Clé par défaut de 16 octets, en hexadécimal, pour déchiffrer les fichiers chiffrés avec ISO Common Encryption (CENC/AES-128 CTR ; ISO/IEC 23001-7).
decryption_keys
Dictionnaire associant un ID de clé de 16 octets => une clé de 16 octets, tous deux en hexadécimal, pour déchiffrer les fichiers chiffrés avec ISO Common Encryption (CENC/AES-128 CTR ; ISO/IEC 23001-7).
max_stts_delta
Des deltas d'échantillons très élevés écrits dans la box stts d'un trak peuvent occasionnellement être intentionnels, mais sont généralement le résultat d'une erreur d'écriture ou servent à stocker une valeur négative pour la correction du dts lorsqu'ils sont traités comme des entiers signés 32 bits. Cette option permet à l'utilisateur de définir une limite supérieure, au-delà de laquelle le delta est ramené à 1. Les valeurs supérieures à cette limite, lorsqu'elles deviennent négatives après conversion en int32, servent à ajuster le dts par la suite.
L'unité est l'échelle de temps de la piste. La plage va de 0 à UINT_MAX. La valeur par défaut est UINT_MAX - 48000*10, ce qui permet une correction du dts allant jusqu'à 10 secondes pour les flux audio 48 kHz tout en couvrant 99.9% de la plage uint32.
interleaved_read
Entrelace les paquets de plusieurs pistes au niveau du demuxer. Pour les fichiers mal entrelacés, cela évite les problèmes de lecture causés par de grands écarts entre les paquets de différentes pistes, le format MOV/MP4 n'imposant aucune contrainte de placement des paquets. Cela peut toutefois provoquer un positionnement excessif sur des fichiers très mal entrelacés, en raison du positionnement entre les pistes ; désactiver cette option peut donc éviter des problèmes d'E/S, au détriment de la lecture.
3.18.2 Audible AAX
Les fichiers Audible AAX sont des fichiers M4B chiffrés, qui peuvent être déchiffrés en spécifiant un secret d'activation de 4 octets.
ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4
3.19 mpegts
Demuxer de flux de transport MPEG-2.
Ce demuxer accepte les options suivantes :
resync_size
Définit la limite de taille pour la recherche d'une nouvelle synchronisation. La valeur par défaut est 65536.
skip_unknown_pmt
Ignore les PMT des programmes non définis dans la PAT. La valeur par défaut est 0.
fix_teletext_pts
Remplace les valeurs PTS et DTS des paquets télétexte par les horodatages calculés à partir du PCR du premier programme dont le flux télétexte fait partie et qui n'est pas rejeté. La valeur par défaut est 1 ; définissez cette option à 0 si vous voulez conserver les valeurs PTS et DTS des paquets télétexte inchangées.
ts_packetsize
Option de sortie indiquant la taille brute des paquets en octets. Affiche la taille brute de paquet détectée ; ne peut pas être définie par l'utilisateur.
scan_all_pmts
Analyse et combine tous les PMT. La valeur est un entier compris entre -1 et 1 (-1 signifie réglage automatique, 1 signifie activé, 0 signifie désactivé). La valeur par défaut est -1.
merge_pmt_versions
Réutilise les flux existants lorsque la version d'un PMT est mise à jour et que les flux élémentaires changent de PID. La valeur par défaut est 0.
max_packet_size
Définit la taille maximale, en octets, des paquets émis par le demuxer. Les charges utiles dépassant cette taille sont réparties sur plusieurs paquets. La plage va de 1 à INT_MAX/2. La valeur par défaut est 204800 octets.
3.20 mpjpeg
Demuxer pour MJPEG encapsulé dans du MIME multipart.
Ce demuxer permet de lire du MJPEG, où chaque image est représentée comme une partie d'un flux multipart/x-mixed-replace.
strict_mime_boundary
L'implémentation par défaut applique une norme souple à la détection des limites MIME multipart, afin d'éviter toute régression avec les nombreux points d'accès existants qui ne génèrent pas un flux MIME MJPEG correct. Activer cette option en la définissant à 1 entraîne une vérification plus stricte de la valeur de limite.
3.21 rawvideo
Demuxer de vidéo brute.
Ce demuxer permet de lire des données vidéo brutes. Comme aucun en-tête ne spécifie les paramètres vidéo supposés, l'utilisateur doit les indiquer lui-même pour permettre un décodage correct des données.
Ce demuxer accepte les options suivantes :
framerate
Définit la fréquence d'images de la vidéo d'entrée. La valeur par défaut est 25.
pixel_format
Définit le pixel format de la vidéo d'entrée. La valeur par défaut est yuv420p.
stride
Définit la taille de ligne de l'image en octets ; requis uniquement en présence d'un remplissage supplémentaire. Pour les formats multiplans, stride est une liste des tailles de ligne pour chaque plan.
video_size
Définit la taille de la vidéo d'entrée. Cette valeur doit être spécifiée explicitement.
Par exemple, pour lire un fichier rawvideo input.raw avec ffplay, en supposant un pixel format rgb24, une taille vidéo de 320x240 et une fréquence de 10 images par seconde, utilisez la commande :
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
Pour lire un rawvideo avec ffplay, en supposant un pixel format yuv420p, une taille vidéo de 1080x1920, avec 8 octets de remplissage sur chaque ligne du plan Y et 4 octets de remplissage sur le plan UV,
ffplay -f rawvideo -pixel_format yuv420p -video_size 1080x1920 -stride 1088,544,544 input.raw
3.22 rcwt
RCWT (Raw Captions With Time) est un format natif de ccextractor, un outil open source couramment utilisé pour traiter les sources de sous-titres codés (CC) 608/708. Pour plus d'informations sur ce format, voir (ffmpeg-formats)rcwtenc.
Ce demuxer implémente la spécification telle qu'elle existait en mars 2024, laquelle est restée stable et inchangée depuis avril 2014.
3.22.1 Exemples
- Effectuez le rendu des CC en ASS à l'aide du decoder intégré :
ffmpeg -i CC.rcwt.bin CC.ass
Notez que si votre sortie semble vide, il peut être nécessaire de définir manuellement l'option data_field du decoder pour choisir le sous-flux CC souhaité.
- Convertissez une sauvegarde RCWT au format Scenarist (SCC) :
ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
Notez que le format SCC ne prend pas en charge toutes les extensions CC pouvant être stockées dans un RCWT (comme l'EIA-708).
3.23 sbg
Demuxer de scripts SBaGen.
Ce demuxer lit le langage de script utilisé par SBaGen http://uazu.net/sbagen/ pour générer des séances de battements binauraux. Un script SBG ressemble à ceci :
-SE
a: 300-2.5/3 440+4.5/0
b: 300-2.5/0 440+4.5/3
off: -
NOW == a
+0:07:00 == b
+0:14:00 == a
+0:21:00 == b
+0:30:00 off
Un script SBG peut mélanger des horodatages absolus et relatifs. Si le script n'utilise que des horodatages absolus (y compris l'heure de début du script) ou que des horodatages relatifs, sa disposition est fixe et la conversion est directe. En revanche, si le script mélange les deux types d'horodatages, la référence NOW pour les horodatages relatifs est prise à partir de l'heure courante au moment de la lecture du script, et la disposition du script est figée selon cette référence. Cela signifie que si le script est directement lu, les horaires réels correspondent aux horodatages absolus à la précision de l'horloge du contrôleur audio près, mais que si l'utilisateur met la lecture en pause ou se positionne d'une manière ou d'une autre, tous les horaires sont décalés en conséquence.
3.24 tedcaptions
Sous-titres JSON utilisés pour les TED Talks.
TED ne fournit pas de liens vers les sous-titres, mais ceux-ci peuvent être déduits de la page. Le fichier tools/bookmarklets.html de l'arborescence source de FFmpeg contient un bookmarklet permettant de les révéler.
Ce demuxer accepte l'option suivante :
start_time
Définit l'heure de début du TED talk, en millisecondes. La valeur par défaut est 15000 (15 s). Elle sert à synchroniser les sous-titres avec les vidéos téléchargeables, car celles-ci comportent une intro de 15 s.
Exemple : convertissez les sous-titres dans un format compris par la plupart des lecteurs :
ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
3.25 vapoursynth
Wrapper Vapoursynth.
Pour des raisons de sécurité, les scripts Vapoursynth ne sont pas détectés automatiquement ; le format d'entrée doit donc être forcé. Pour les outils CLI ff*, ajoutez -f vapoursynth avant l'entrée -i yourscript.vpy.
Ce demuxer accepte l'option suivante :
max_script_size
Le demuxer met en tampon la totalité du script en mémoire. Ajustez cette valeur pour définir la taille maximale du tampon, qui sert également de plafond pour la taille des scripts pouvant être lus. La valeur par défaut est 1 MiB.
3.26 w64
Demuxer audio Sony Wave64.
Ce demuxer accepte les options suivantes :
max_size
Voir l'option correspondante du demuxer wav.
3.27 wav
Demuxer audio RIFF Wave.
Ce demuxer accepte les options suivantes :
ignore_length bool
Si activé, ignore la taille du chunk data et continue la lecture jusqu'à la fin du fichier. Peut être utile pour lire des fichiers corrompus ou partiels dont l'en-tête n'a pas été correctement mis à jour, mais interprétera mal les fichiers comportant des chunks non audio après le chunk data. Désactivé par défaut.
max_size
Spécifie la taille maximale, en octets, des paquets démultiplexés. Par défaut, cette valeur est fixée à 0, ce qui signifie qu'une valeur raisonnable est choisie en fonction du format d'entrée.
3.28 webp
Demuxer WebP animé.
Il accepte les options suivantes :
-min_delay int
Définit le délai minimal valide entre les images, en millisecondes. La plage va de 0 à 60000. La valeur par défaut est 10.
-max_webp_delay int
Définit le délai maximal valide entre les images, en millisecondes. La plage va de 0 à 16777215. La valeur par défaut est 16777215 (plus de quatre heures), soit la valeur maximale autorisée par la spécification.
-default_delay int
Définit le délai par défaut entre les images, en millisecondes. La plage va de 0 à 60000. La valeur par défaut est 100.
-ignore_loop bool
Les fichiers WebP peuvent contenir des informations permettant de boucler un certain nombre de fois (ou indéfiniment). Si ignore_loop est défini à true, le réglage de boucle de l'entrée est ignoré et aucune boucle n'a lieu. S'il est défini à false, la boucle a lieu et se répète le nombre de fois indiqué par le WebP. La valeur par défaut est true.
usebgcolor bool
Les fichiers WebP contiennent une indication de couleur d'arrière-plan dans le chunk ANIM, mais la spécification WebP précise que les applications de visualisation ne sont pas tenues de l'utiliser. Si usebgcolor est défini à true, l'indication de couleur d'arrière-plan est utilisée ; sinon, un noir transparent est utilisé pour l'arrière-plan. La valeur par défaut est false.
4 Muxers
Les muxers sont des éléments configurables de FFmpeg qui permettent d'écrire des flux multimédias dans un type de fichier particulier.
Lorsque vous configurez votre build FFmpeg, tous les muxers pris en charge sont activés par défaut. Vous pouvez lister tous les muxers disponibles avec l'option de configuration --list-muxers.
Vous pouvez désactiver tous les muxers avec l'option de configuration --disable-muxers, et activer/désactiver sélectivement chaque muxer avec les options --enable-muxer=MUXER / --disable-muxer=MUXER.
L'option -muxers des outils ff* affiche la liste des muxers activés. Utilisez -formats pour voir une liste combinée des demuxers et muxers activés.
Une description de certains des muxers disponibles à l'heure actuelle suit.
4.1 Muxers bruts
Cette section traite des muxers bruts. Ils acceptent un seul flux correspondant au codec désigné. Ils ne stockent ni horodatages ni métadonnées. L'extension reconnue est la même que le nom du muxer, sauf indication contraire.
Elle comprend les muxers suivants. Le type de média et les éventuelles extensions permettant de sélectionner automatiquement le muxer à partir de l'extension de sortie sont également indiqués.
‘ac3 audio ’
Dolby Digital, également appelé AC-3.
‘adx audio ’
Audio CRI Middleware ADX.
Ce muxer écrit le nombre total d'échantillons près du début du premier paquet lorsque la sortie permet le positionnement et que ce nombre peut être stocké sur 32 bits.
‘aptx audio ’
aptX (Audio Processing Technology for Bluetooth)
‘aptx_hd audio (aptxdh)’
Audio aptX HD (Audio Processing Technology for Bluetooth)
‘avs2 video (avs, avs2)’
Vidéo AVS2-P2 (Audio Video Standard - Second generation - Part 2) / IEEE 1857.4
‘avs3 video (avs3)’
Vidéo AVS3-P2 (Audio Video Standard - Third generation - Part 2) / IEEE 1857.10
‘cavsvideo video (cavs)’
AVS chinois (Audio Video Standard - First generation)
‘codec2raw audio ’
Audio Codec 2.
Aucune extension n'est enregistrée ; le nom du format doit donc être fourni, par exemple avec l'outil CLI ffmpeg via -f codec2raw.
‘data any ’
Muxer de données générique.
Ce muxer accepte un seul flux, quel que soit le codec ou le type. Le flux d'entrée doit être sélectionné avec l'option -map de l'outil CLI ffmpeg.
Aucune extension n'est enregistrée ; le nom du format doit donc être fourni, par exemple avec l'outil CLI ffmpeg via -f data.
‘dfpwm audio (dfpwm)’
Muxer audio DFPWM1a brut (Dynamic Filter Pulse With Modulation).
‘dirac video (drc, vc2)’
Vidéo BBC Dirac.
Le codec Dirac Pro en est un sous-ensemble et est normalisé sous le nom SMPTE VC-2.
‘dnxhd video (dnxhd, dnxhr)’
Vidéo Avid DNxHD.
Elle est normalisée sous le nom SMPTE VC-3. Accepte les flux DNxHR.
‘dts audio ’
Audio DTS Coherent Acoustics (DCA)
‘eac3 audio ’
Dolby Digital Plus, également appelé Enhanced AC-3
‘evc video (evc)’
Vidéo MPEG-5 Essential Video Coding (EVC) / EVC / MPEG-5 Part 1 EVC
‘g722 audio ’
Audio ITU-T G.722
‘g723_1 audio (tco, rco)’
Audio ITU-T G.723.1
‘g726 audio ’
Audio ITU-T G.726 big-endian ("left-justified").
Aucune extension n'est enregistrée ; le nom du format doit donc être fourni, par exemple avec l'outil CLI ffmpeg via -f g726.
‘g726le audio ’
Audio ITU-T G.726 little-endian ("right-justified").
Aucune extension n'est enregistrée ; le nom du format doit donc être fourni, par exemple avec l'outil CLI ffmpeg via -f g726le.
‘gsm audio ’
Audio Global System for Mobile Communications
‘h261 video ’
Vidéo ITU-T H.261
‘h263 video ’
Vidéo ITU-T H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
‘h264 video (h264, 264)’
Vidéo ITU-T H.264 / MPEG-4 Part 10 AVC. Le bitstream doit être converti en syntaxe Annex B s'il est en mode length-prefixed.
‘hevc video (hevc, h265, 265)’
Vidéo ITU-T H.265 / MPEG-H Part 2 HEVC. Le bitstream doit être converti en syntaxe Annex B s'il est en mode length-prefixed.
‘m4v video ’
Vidéo MPEG-4 Part 2
‘mjpeg video (mjpg, mjpeg)’
Vidéo Motion JPEG
‘mlp audio ’
Meridian Lossless Packing, également appelé Packed PCM
‘mp2 audio (mp2, m2a, mpa)’
Audio MPEG-1 Audio Layer II
‘mpeg1video video (mpg, mpeg, m1v)’
Vidéo MPEG-1 Part 2.
‘mpeg2video video (m2v)’
Vidéo ITU-T H.262 / MPEG-2 Part 2
‘obu video ’
Muxer AV1 low overhead Open Bitstream Units.
Des OBU de délimiteur temporel sont insérées dans toutes les unités temporelles du flux.
‘rawvideo video (yuv, rgb)’
Vidéo brute non compressée.
‘sbc audio (sbc, msbc)’
Audio Bluetooth SIG low-complexity subband codec
‘truehd audio (thd)’
Audio Dolby TrueHD
‘vc1 video ’
Vidéo SMPTE 421M / VC-1
4.1.1 Exemples
- Stockez des images vidéo brutes avec le muxer ‘rawvideo’ en utilisant
ffmpeg:ffmpeg -f lavfi -i testsrc -t 10 -s hd1080p testsrc.yuv
Comme le muxer rawvideo ne stocke pas les informations relatives à la taille et au format, ces informations doivent être fournies lors du démultiplexage du fichier :
ffplay -video_size 1920x1080 -pixel_format rgb24 -f rawvideo testsrc.rgb
4.2 Muxers PCM bruts
Cette section traite des muxers audio PCM (Pulse-Code Modulation) bruts.
Ils acceptent un seul flux correspondant au codec désigné. Ils ne stockent ni horodatages ni métadonnées. L'extension reconnue est la même que le nom du muxer.
Elle comprend les muxers suivants. L'extension supplémentaire facultative permettant de sélectionner automatiquement le muxer à partir de l'extension de sortie est également indiquée entre parenthèses.
‘alaw (al)’
PCM A-law
‘f32be’
PCM 32 bits à virgule flottante big-endian
‘f32le’
PCM 32 bits à virgule flottante little-endian
‘f64be’
PCM 64 bits à virgule flottante big-endian
‘f64le’
PCM 64 bits à virgule flottante little-endian
‘mulaw (ul)’
PCM mu-law
‘s16be’
PCM signé 16 bits big-endian
‘s16le’
PCM signé 16 bits little-endian
‘s24be’
PCM signé 24 bits big-endian
‘s24le’
PCM signé 24 bits little-endian
‘s32be’
PCM signé 32 bits big-endian
‘s32le’
PCM signé 32 bits little-endian
‘s8 (sb)’
PCM signé 8 bits
‘u16be’
PCM non signé 16 bits big-endian
‘u16le’
PCM non signé 16 bits little-endian
‘u24be’
PCM non signé 24 bits big-endian
‘u24le’
PCM non signé 24 bits little-endian
‘u32be’
PCM non signé 32 bits big-endian
‘u32le’
PCM non signé 32 bits little-endian
‘u8 (ub)’
PCM non signé 8 bits
‘vidc’
PCM Archimedes VIDC
4.3 Muxers de flux programme MPEG-1/MPEG-2
Cette section traite des formats appartenant à la famille MPEG-1 et MPEG-2 Systems.
Le format MPEG-1 Systems (également appelé ISO/IEEC 11172-1 ou flux programme MPEG-1) a été adopté comme format de piste multimédia stockée sur VCD (Video Compact Disc).
La norme MPEG-2 Systems (également appelée ISO/IEEC 13818-1) couvre deux formats de container, l'un appelé flux de transport et l'autre flux programme ; seul ce dernier est traité ici.
Le format flux programme MPEG-2 (également appelé VOB, d'après l'extension de fichier correspondante) est une extension du flux programme MPEG-1 : en plus de prendre en charge différents codecs pour les flux audio et vidéo, il stocke également les sous-titres et les métadonnées de navigation. Le flux programme MPEG-2 a été adopté pour stocker les flux multimédias sur les supports SVCD et DVD.
Cette section comprend les muxers suivants.
‘mpeg (mpg,mpeg)’
Muxer MPEG-1 Systems / flux programme MPEG-1.
‘vcd’
Muxer MPEG-1 Systems / flux programme MPEG-1 (VCD).
Ce muxer permet de générer des pistes dans le format accepté par les supports de stockage VCD (Video Compact Disc).
Il est identique au muxer ‘mpeg’, à quelques différences près.
‘vob’
Muxer flux programme MPEG-2 (VOB).
‘dvd’
Muxer flux programme MPEG-2 (DVD VOB).
Ce muxer permet de générer des pistes dans le format accepté par les supports de stockage DVD (Digital Versatile Disc).
Il est identique au muxer ‘vob’, à quelques différences près.
‘svcd (vob)’
Muxer flux programme MPEG-2 (SVCD VOB).
Ce muxer permet de générer des pistes dans le format accepté par les supports de stockage SVCD (Super Video Compact Disc).
Il est identique au muxer ‘vob’, à quelques différences près.
4.3.1 Options
muxrate rate
Définit le débit de multiplexage défini par l'utilisateur, exprimé en nombre de bits/s. Si non spécifié, le débit de multiplexage calculé automatiquement est utilisé. La valeur par défaut est 0.
preload delay
Définit le délai initial de démultiplexage-décodage en microsecondes. La valeur par défaut est 500000.
4.4 Muxers MOV/MPEG-4/ISOMBFF
Cette section couvre les formats appartenant à la famille QuickTime / MOV, y compris le format MPEG-4 Part 14 et le format ISO de fichier multimédia de base (ISOBMFF). Ces formats partagent une structure commune basée sur le format ISO de fichier multimédia de base (ISOBMFF).
Le format MOV a été développé à l'origine pour Apple QuickTime. Il a ensuite servi de base au format MPEG-4 Part 1 (devenu par la suite Part 14), également connu sous le nom d'ISO/IEC 14496-1. Ce format a ensuite été généralisé en ISOBMFF, également nommé format MPEG-4 Part 12, ISO/IEC 14496-12, ou ISO/IEC 15444-12.
Il comprend les muxers suivants.
‘3gp’
Format Third Generation Partnership Project (3GPP) pour les services multimédias 3G UMTS.
‘3g2’
Format Third Generation Partnership Project 2 (3GP2 ou 3GPP2) pour les services multimédias 3G CDMA2000, similaire à ‘3gp’ avec des extensions et des limitations.
‘f4v’
Format Adobe Flash Video.
‘ipod’
Format de fichier audio MPEG-4, identique à MOV/MP4 mais limité aux flux audio, généralement lu sur l'appareil Apple ipod.
‘ismv’
Format Microsoft IIS (Internet Information Services) Smooth Streaming Audio/Video (ISMV ou ISMA). Il est basé sur le format MPEG-4 Part 14 avec quelques variantes incompatibles, utilisé pour diffuser des fichiers multimédias vers le serveur Microsoft IIS.
‘mov’
Format du lecteur QuickTime, identifié par l'extension .mov.
‘mp4’
Format MP4 ou MPEG-4 Part 14.
‘psp’
Variante du format MP4/MPEG-4 Part 14 pour PlayStation Portable. Elle est basée sur le format MPEG-4 Part 14 avec quelques variantes incompatibles, utilisée pour lire des fichiers sur les appareils PlayStation.
4.4.1 Fragmentation
Les muxers ‘mov’, ‘mp4’ et ‘ismv’ prennent en charge la fragmentation. Normalement, un fichier MOV/MP4 stocke en un seul emplacement toutes les métadonnées relatives à tous les paquets.
Ces données sont généralement écrites à la fin du fichier, mais elles peuvent être déplacées au début pour améliorer la lecture, en ajoutant +faststart à -movflags, ou en utilisant l'outil qt-faststart).
Un fichier fragmenté se compose de plusieurs fragments, dans lesquels les paquets et les métadonnées les concernant sont stockés ensemble. L'écriture d'un fichier fragmenté présente l'avantage de rester décodable même si l'écriture est interrompue (alors qu'un fichier MOV/MP4 normal est indécodable s'il n'est pas correctement finalisé), et de nécessiter moins de mémoire lors de l'écriture de fichiers très longs (car l'écriture d'un fichier MOV/MP4 normal conserve en mémoire les informations de chaque paquet jusqu'à la fermeture du fichier). L'inconvénient est qu'il est moins compatible avec les autres applications.
La fragmentation est activée en définissant l'une des options qui déterminent la façon de découper le fichier en fragments :
frag_duration frag_size min_frag_duration movflags +frag_keyframe movflags +frag_custom
Si plusieurs conditions sont spécifiées, les fragments sont découpés dès que l'une des conditions spécifiées est remplie. Fait exception l'option min_frag_duration, qui doit être remplie pour que l'une des autres conditions s'applique.
4.4.2 Options
brand brand_string
Remplace le major brand (marque principale).
empty_hdlr_name bool
Active l'omission de l'écriture du nom dans une boîte hdlr. La valeur par défaut est false.
encryption_key key
définit la clé de chiffrement du média au format hexadécimal
encryption_kid kid
définit l'identifiant de la clé de chiffrement du média au format hexadécimal
encryption_scheme scheme
configure le schéma de chiffrement ; les valeurs autorisées sont ‘none’ et ‘cenc-aes-ctr’
frag_duration duration
Crée des fragments d'une durée de duration microsecondes.
frag_interleave number
Entrelace les échantillons au sein des fragments (nombre maximal d'échantillons consécutifs ; plus la valeur est basse, plus l'entrelacement est serré, mais avec davantage de surcharge). La valeur par défaut est 0.
frag_size size
crée des fragments contenant jusqu'à size octets de données utiles
iods_audio_profile profile
spécifie le numéro iods pour l'atome de profil audio (de -1 à 255) ; la valeur par défaut est -1
iods_video_profile profile
spécifie le numéro iods pour l'atome de profil vidéo (de -1 à 255) ; la valeur par défaut est -1
ism_lookahead num_entries
spécifie le nombre d'entrées d'anticipation pour les fichiers ISM (de 0 à 255) ; la valeur par défaut est 0
min_frag_duration duration
ne crée pas de fragments plus courts que duration microsecondes
moov_size bytes
Réserve de l'espace pour l'atome moov au début du fichier au lieu de le placer à la fin. Si l'espace réservé est insuffisant, le multiplexage échoue.
mov_gamma gamma
spécifie la valeur gamma de l'atome gama (nombre décimal de 0 à 10) ; la valeur par défaut est 0.0 et doit être définie conjointement avec + movflags
movflags flags
Définit divers commutateurs de multiplexage. Les indicateurs suivants sont utilisables :
‘cmaf’
écrit une sortie MP4 fragmentée compatible CMAF (Common Media Application Format)
‘dash’
écrit une sortie MP4 fragmentée compatible DASH (Dynamic Adaptive Streaming over HTTP)
‘default_base_moof’
Comme l'indicateur ‘omit_tfhd_offset’, cet indicateur évite d'écrire le champ base_data_offset absolu dans les atomes tfhd, mais y parvient en utilisant à la place le nouvel indicateur default-base-is-moof. Cet indicateur est apparu avec la norme 14496-12:2012. Il peut faciliter l'analyse des fragments dans certains cas (en évitant de baser le calcul de l'emplacement des fragments de piste sur la fin implicite du fragment de piste précédent).
‘delay_moov’
retarde l'écriture du moov initial jusqu'au découpage du premier fragment, ou jusqu'au premier vidage de fragment
‘disable_chpl’
Désactive les marqueurs de chapitre Nero (atome chpl). Normalement, les chapitres Nero et une piste de chapitres QuickTime sont tous deux écrits dans le fichier. Avec cette option activée, seule la piste de chapitres QuickTime est écrite. Les chapitres Nero peuvent provoquer des échecs lorsque le fichier est retraité par certains logiciels de balisage, comme mp3Tag 2.61a et iTunes 11.3 ; d'autres versions sont vraisemblablement affectées également.
‘faststart’
Effectue une seconde passe déplaçant l'index (atome moov) au début du fichier. Cette opération peut prendre du temps et ne fonctionne pas dans diverses situations telles que la sortie fragmentée ; elle n'est donc pas activée par défaut.
‘frag_custom’
Permet à l'appelant de choisir manuellement le moment de découper les fragments, en appelant av_write_frame(ctx, NULL) pour écrire un fragment avec les paquets écrits jusque-là. (Cela n'est utile qu'avec d'autres applications intégrant libavformat, pas depuis ffmpeg.)
‘frag_discont’
signale que le fragment suivant est discontinu par rapport aux précédents
‘frag_every_frame’
fragmente à chaque image
‘frag_keyframe’
démarre un nouveau fragment à chaque keyframe vidéo
‘global_sidx’
écrit un index sidx global au début du fichier
‘isml’
crée un flux Smooth Streaming en direct (destiné à être poussé vers un point de publication)
‘negative_cts_offsets’
Active l'utilisation de la version 1 de la boîte CTTS, dans laquelle les décalages CTS peuvent être négatifs. Cela permet à l'échantillon initial d'avoir un DTS/CTS de zéro et réduit le besoin de listes d'édition dans certains cas, comme les pistes vidéo avec B-frames. De plus, cela facilite la conformité aux directives d'interopérabilité DASH-IF.
Cette option est définie implicitement lors de l'écriture de fichiers ‘ismv’ (Smooth Streaming).
‘omit_tfhd_offset’
N'écrit aucun base_data_offset absolu dans les atomes tfhd. Cela évite de lier les fragments à des positions d'octets absolues dans le fichier/les flux.
‘prefer_icc’
Lors de l'écriture de l'atome colr, privilégie l'utilisation du profil ICC s'il existe dans les données annexes des paquets du flux.
‘rtphint’
ajoute des pistes d'indication RTP (RTP hinting) au fichier de sortie
‘separate_moof’
Écrit un atome moof (movie fragment) distinct pour chaque piste. Normalement, les paquets de toutes les pistes sont écrits dans un même atome moof (ce qui est légèrement plus efficace), mais avec cette option activée, le muxer écrit une paire moof/mdat pour chaque piste, ce qui facilite la séparation des pistes.
‘skip_sidx’
Ignore l'écriture de l'atome sidx. Lorsque la surcharge de débit binaire due à l'atome sidx est élevée, cette option peut être utilisée dans les cas où l'atome sidx n'est pas obligatoire. Lorsque l'indicateur ‘global_sidx’ est activé, cette option est ignorée.
‘skip_trailer’
n'écrit pas le trailer mfra/tfra/mfro pour les fichiers fragmentés
‘use_metadata_tags’
utilise l'atome mdta pour les métadonnées
‘write_colr’
écrit l'atome colr même si les informations de couleur ne sont pas spécifiées. Cet indicateur est expérimental, il peut être renommé ou modifié ; ne pas l'utiliser depuis des scripts.
‘write_gama’
écrit l'atome gama obsolète
‘hybrid_fragmented’
Pour la récupérabilité, écrit le fichier de sortie comme un fichier fragmenté. Cela permet de lire le fichier intermédiaire pendant son écriture (en particulier si le processus d'écriture est interrompu de façon anormale). Une fois l'écriture terminée, le fichier est converti en un fichier normal, non fragmenté, plus compatible et permettant un positionnement plus simple et plus rapide.
Si l'écriture est interrompue, le fichier intermédiaire peut être remultiplexé manuellement pour obtenir un fichier normal, non fragmenté, à partir de ce qui avait été écrit dans le fichier inachevé.
movie_timescale scale
Définit l'échelle de temps écrite dans la boîte d'en-tête de film (mvhd). La plage est de 1 à INT_MAX. La valeur par défaut est 1000.
rtpflags flags
Ajoute des pistes d'indication RTP au fichier de sortie.
Les indicateurs suivants peuvent être utilisés :
‘h264_mode0’
utilise le mode 0 pour H.264 en RTP
‘latm’
utilise la mise en paquets MP4A-LATM au lieu de MPEG4-GENERIC pour l'AAC
‘rfc2190’
utilise la mise en paquets RFC 2190 au lieu de RFC 4629 pour H.263
‘send_bye’
envoie des paquets RTCP BYE à la fin
‘skip_rtcp’
n'envoie pas de rapports d'expéditeur RTCP
skip_iods bool
ignore l'écriture de l'atome iods (la valeur par défaut est true)
use_editlist bool
utilise la liste d'édition (la valeur par défaut est auto)
use_stream_ids_as_track_ids bool
utilise les identifiants de flux comme identifiants de piste (la valeur par défaut est false)
video_track_timescale scale
Définit l'échelle de temps utilisée pour les pistes vidéo. La plage est de 0 à INT_MAX. Si elle est définie à 0, l'échelle de temps est déterminée automatiquement d'après la base de temps native du flux. La valeur par défaut est 0.
write_btrt bool
Force ou désactive l'écriture de la boîte bitrate à l'intérieur de la boîte stsd d'une piste. Cette boîte contient la taille du tampon de décodage (en octets), le débit binaire maximal et le débit binaire moyen de la piste. La boîte est omise si aucune de ces valeurs ne peut être calculée. La valeur par défaut est -1 ou auto, ce qui n'écrit la boîte qu'en mode MP4.
write_prft option
Écrit une boîte producer time reference (PRFT) avec une source temporelle spécifiée pour le champ NTP de la boîte PRFT. La valeur ‘wallclock’ indique l'heure murale comme source temporelle, et la valeur ‘pts’ indique les valeurs PTS des paquets d'entrée comme source temporelle.
write_tmcd bool
Spécifie on pour forcer l'écriture d'une piste de timecode, off pour la désactiver, et auto pour n'écrire une piste de timecode que pour les sorties mov et mp4 (valeur par défaut).
Définir la valeur sur ‘pts’ ne s'applique qu'à un cas d'usage d'encodage en direct, où les valeurs PTS sont définies comme l'heure murale à la source. Par exemple, un cas d'usage d'encodage avec une source de capture decklink où video_pts et audio_pts sont définis sur ‘abs_wallclock’.
4.4.3 Exemples
- Pousser du contenu Smooth Streaming en temps réel vers un point de publication sur IIS avec le muxer ‘ismv’, en utilisant
ffmpeg:ffmpeg -re <normal input/transcoding options> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
4.5 a64
Muxer vidéo A64 Commodore 64.
Ce muxer accepte un unique flux vidéo au codec a64_multi ou a64_multi5.
4.6 ac4
Muxer audio AC-4 brut.
Ce muxer accepte un unique flux audio ac4.
4.6.1 Options
write_crc bool
si activé, écrit une somme de contrôle CRC pour chaque paquet dans la sortie ; la valeur par défaut est false
4.7 adts
Muxer Audio Data Transport Stream.
Il accepte un unique flux AAC.
4.7.1 Options
write_id3v2 bool
Active l'écriture de tags ID3v2.4 au début du flux. Désactivé par défaut.
write_apetag bool
Active l'écriture de tags APE à la fin du flux. Désactivé par défaut.
write_mpeg2 bool
Active le positionnement à 1 du bit de version MPEG dans l'en-tête de frame ADTS, indiquant MPEG-2. La valeur par défaut est 0, indiquant MPEG-4.
4.8 aea
Muxer audio MD STUDIO.
Ce muxer accepte un unique flux audio ATRAC1, à un ou deux canaux, avec une fréquence d'échantillonnage de 44100 Hz.
Le format AEA permettant de stocker le titre de la piste, ce muxer écrit également dans le container le titre issu des métadonnées du flux.
4.9 aiff
Muxer Audio Interchange File Format.
4.9.1 Options
write_id3v2 bool
Active l'écriture des tags ID3v2 lorsque défini à 1. La valeur par défaut est 0 (désactivé).
id3v2_version bool
Sélectionne la version d'ID3v2 à écrire. Seules les versions 3 et 4 (c'est-à-dire ID3v2.3 et ID3v2.4) sont prises en charge pour l'instant. La valeur par défaut est la version 4.
4.10 alp
Muxer audio du jeu Lego Racers de High Voltage Software.
Il accepte un unique flux ADPCM_IMA_ALP avec au maximum 2 canaux et une fréquence d'échantillonnage n'excédant pas 44100 Hz.
Extensions : tun, pcm
4.10.1 Options
type type
Définit le type de fichier.
type accepte les valeurs suivantes :
‘tun’
Définit le type de fichier comme musique. Doit avoir une fréquence d'échantillonnage de 22050 Hz.
‘pcm’
Définit le type de fichier comme sfx.
‘auto’
Définit le type de fichier selon l'extension du fichier de sortie. .pcm donne le type pcm, sinon le type tun est défini. (valeur par défaut)
4.11 amr
Muxer audio 3GPP AMR (Adaptive Multi-Rate).
Il accepte un unique flux audio contenant un flux AMR NB.
4.12 amv
Muxer du format AMV (Actions Media Video).
4.13 apm
Muxer audio APM d'Ubisoft Rayman 2.
Il accepte un unique flux audio ADPCM IMA APM.
4.14 apng
Muxer Animated Portable Network Graphics.
Il accepte un unique flux vidéo APNG.
4.14.1 Options
final_delay delay
Force un délai, exprimé en secondes, après la dernière image de chaque répétition. La valeur par défaut est 0.0.
plays repetitions
spécifie le nombre de fois où le contenu est lu ; 0 provoque une boucle infinie, avec 1 il n'y a pas de boucle
4.14.2 Exemples
- Utilisez
ffmpegpour générer une sortie APNG avec 2 répétitions, avec un délai d'une demi-seconde après la première répétition :ffmpeg -i INPUT -final_delay 0.5 -plays 2 out.apng
4.15 argo_asf
Muxer audio ASF d'Argonaut Games.
Il accepte un unique flux audio ADPCM.
4.15.1 Options
version_major version
remplace la version majeure du fichier, spécifiée sous forme d'entier ; la valeur par défaut est 2
version_minor version
remplace la version mineure du fichier, spécifiée sous forme d'entier ; la valeur par défaut est 1
name name
Intègre un nom de fichier dans le fichier ; s'il n'est pas spécifié, le nom du fichier de sortie est utilisé. Le nom est tronqué à 8 caractères.
4.16 argo_cvg
Muxer audio CVG d'Argonaut Games.
Il accepte un unique flux audio ADPCM mono à 22050 Hz.
Les options loop et reverb définissent les indicateurs correspondants dans l'en-tête, qui peuvent ensuite être récupérés pour traiter le flux audio en conséquence.
4.16.1 Options
skip_rate_check bool
ignore la vérification de la fréquence d'échantillonnage (la valeur par défaut est false)
loop bool
définit l'indicateur de boucle (la valeur par défaut est false)
reverb boolean
définit l'indicateur de reverb (la valeur par défaut est true)
4.17 asf, asf_stream
Muxer audio Advanced / Active Systems (or Streaming) Format.
La variante ‘asf_stream’ doit être choisie pour la diffusion en continu.
Notez que Windows Media Audio (wma) et Windows Media Video (wmv) utilisent également ce muxer.
4.17.1 Options
packet_size size
Définit la taille des paquets du muxer, en nombre d'octets. Ajuster ce paramètre peut réduire la fragmentation des données ou la surcharge du muxer selon votre source. La valeur par défaut est 3200, le minimum est 100, le maximum est 64Ki.
4.18 ass
Muxer de sous-titres ASS/SSA (SubStation Alpha).
Il accepte un unique flux de sous-titres ASS.
4.18.1 Options
ignore_readorder bool
Écrit immédiatement les événements de dialogue, même s'ils sont désordonnés ; la valeur par défaut est false, sinon ils sont mis en cache jusqu'à ce que l'événement temporel attendu soit trouvé.
4.19 ast
Muxer AST (Audio Stream).
Ce format est utilisé pour lire l'audio sur certains jeux Nintendo Wii.
Il accepte un unique flux audio.
Les options loopstart et loopend permettent de définir une section du fichier à boucler pour les lecteurs respectant ces options.
4.19.1 Options
loopstart start
Spécifie la position de début de boucle, exprimée en millisecondes, de -1 à INT_MAX ; si -1 est défini, aucune boucle n'est spécifiée (valeur par défaut -1) et la valeur loopend est ignorée.
loopend end
Spécifie la position de fin de boucle, exprimée en millisecondes, de 0 à INT_MAX ; la valeur par défaut est 0, et si 0 est défini, la durée totale du flux est utilisée.
4.20 au
Muxer audio SUN AU.
Il accepte un unique flux audio.
4.21 avi
Muxer Audio Video Interleaved.
AVI est un format propriétaire développé par Microsoft, puis formellement spécifié par la suite via la spécification Open DML.
En raison de différences entre les implémentations des lecteurs, il peut être nécessaire de définir certaines options pour garantir que la sortie générée soit correctement lue par le lecteur cible.
4.21.1 Options
flipped_raw_rgb bool
Si définie à true, stocke une hauteur positive pour les bitmaps RGB bruts, indiquant que le bitmap est stocké de bas en haut. Notez que cette option ne retourne pas le bitmap, ce qui doit être fait manuellement au préalable, par exemple avec le filtre ‘vflip’. La valeur par défaut est false et indique que le bitmap est stocké de haut en bas.
reserve_index_space size
Réserve la quantité d'octets spécifiée pour l'index maître OpenDML de chaque flux dans l'en-tête du fichier. Par défaut, des index maîtres supplémentaires sont intégrés dans les paquets de données s'il ne reste plus d'espace dans le premier index maître, et sont liés entre eux sous forme de chaîne d'index. Cette structure d'index peut poser problème dans certains cas d'usage, par exemple avec un logiciel tiers qui s'appuie strictement sur la spécification d'index OpenDML, ou lorsque le positionnement dans le fichier est lent. Réserver suffisamment d'espace d'index dans l'en-tête du fichier évite ces problèmes.
L'espace d'index requis dépend de la taille du fichier de sortie et doit avoisiner 16 octets par gigaoctet. Lorsque cette option est omise ou définie à zéro, l'espace d'index nécessaire est estimé.
La valeur par défaut est 0.
write_channel_mask bool
Écrit le masque de disposition des canaux dans l'en-tête du flux audio.
Cette option est activée par défaut. Désactiver le masque de canaux peut être utile dans des scénarios spécifiques, par exemple lors de la fusion de plusieurs flux audio en un seul pour assurer la compatibilité avec les logiciels ne prenant en charge qu'un seul flux audio en AVI (voir (ffmpeg-filters)la section "amerge" du manuel ffmpeg-filters).
4.22 avif
Muxer de format d'image AV1 (Alliance for Open Media Video codec 1).
Ce muxer stocke des images encodées avec le codec AV1.
Il accepte un ou deux flux vidéo. Si deux flux vidéo sont fournis, le second doit contenir un unique plan stockant le masque alpha.
Si plusieurs images sont fournies, la sortie générée est considérée comme un AVIF animé, et le nombre de boucles peut être spécifié avec l'option loop.
Ceci est basé sur la spécification de l'Alliance for Open Media, disponible à l'URL https://aomediacodec.github.io/av1-avif.
4.22.1 Options
loop count
nombre de fois où boucler un AVIF animé ; 0 spécifie une boucle infinie, la valeur par défaut est 0
movie_timescale timescale
Définit l'échelle de temps écrite dans la boîte d'en-tête de film (mvhd). La plage est de 1 à INT_MAX. La valeur par défaut est 1000.
4.23 avm2
Muxer de format ShockWave Flash (SWF) / ActionScript Virtual Machine 2 (AVM2).
Il accepte un flux audio, un flux vidéo, ou les deux.
4.24 bit
Muxer de format de fichier G.729 (.bit).
Il accepte un unique flux audio G.729.
4.25 caf
Muxer Apple CAF (Core Audio Format).
Il accepte un unique flux audio.
4.26 codec2
Muxer audio Codec2.
Il accepte un unique flux audio codec2.
4.27 chromaprint
Muxers d'empreinte Chromaprint.
Pour activer la compilation de ce filtre, vous devez configurer FFmpeg avec --enable-chromaprint.
Ce muxer transmet les données audio à la bibliothèque Chromaprint, qui génère une empreinte pour les données audio fournies. Voir : https://acoustid.org/chromaprint
Il prend en entrée un unique flux audio brut signé 16 bits en boutisme natif, avec au maximum 2 canaux.
4.27.1 Options
algorithm version
Sélectionne la version de l'algorithme à utiliser pour l'empreinte. La plage est de 0 à 4. La version 3 active la détection de silence. La valeur par défaut est 1.
fp_format format
Format dans lequel produire l'empreinte. Accepte les options suivantes :
‘base64’
Empreinte compressée en Base64 (par défaut)
‘compressed’
Empreinte binaire compressée
‘raw’
Empreinte binaire brute
silence_threshold threshold
Seuil de détection du silence. La plage va de -1 à 32767, -1 désactivant la détection de silence. La détection de silence ne peut être utilisée qu'avec la version 3 de l'algorithme.
La détection de silence doit être désactivée pour une utilisation avec le service AcoustID. La valeur par défaut est -1.
4.28 crc
Muxer CRC (Cyclic Redundancy Check).
Ce muxer calcule et affiche le CRC Adler-32 de toutes les images audio et vidéo d'entrée. Par défaut, les images audio sont converties en audio brut signé 16 bits et les images vidéo en vidéo brute avant le calcul du CRC.
La sortie du muxer consiste en une seule ligne de la forme : CRC=0xCRC, où CRC est un nombre hexadécimal complété par des zéros sur 8 chiffres, contenant le CRC de toutes les images d'entrée décodées.
Voir aussi le muxer framecrc.
4.28.1 Exemples
-
Utilisez
ffmpegpour calculer le CRC de l'entrée et le stocker dans le fichier out.crc :ffmpeg -i INPUT -f crc out.crc -
Utilisez
ffmpegpour afficher le CRC sur la sortie standard avec la commande :ffmpeg -i INPUT -f crc - -
Vous pouvez sélectionner le format de sortie de chaque image avec
ffmpegen spécifiant le codec et le format audio et vidéo. Par exemple, pour calculer le CRC de l'audio d'entrée converti en PCM non signé 8 bits et de la vidéo d'entrée convertie en vidéo MPEG-2, utilisez la commande :ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
4.29 dash
Muxer Dynamic Adaptive Streaming over HTTP (DASH).
Ce muxer crée des segments et des fichiers de manifeste conformément à la norme MPEG-DASH ISO/IEC 23009-1:2014 et à ses mises à jour ultérieures.
Pour plus d'informations, voir :
- Spécification ISO DASH : http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
- Spécification WebM DASH : https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
Ce muxer crée un fichier de manifeste MPD (Media Presentation Description) et des fichiers de segments pour chaque flux. Les fichiers de segments sont placés dans le même répertoire que le fichier de manifeste MPD.
Le nom de fichier du segment peut contenir des identifiants prédéfinis utilisés dans la section SegmentTemplate du manifeste, tels que définis dans la section 5.3.9.4.4 de la norme.
Les identifiants disponibles sont $RepresentationID$, $Number$, $Bandwidth$ et $Time$. En plus des identifiants standards, un identifiant $ext$ spécifique à ffmpeg est également pris en charge. Lorsqu'il est spécifié, ffmpeg remplace $ext$ dans le nom de fichier par l'extension du format de multiplexage, telle que mp4, webm, etc.
4.29.1 Options
adaptation_sets adaptation_sets
Assigne des flux à des ensembles d'adaptation, spécifiés dans la section AdaptationSets du manifeste MPD.
Un ensemble d'adaptation regroupe un ou plusieurs flux accessibles comme un unique sous-ensemble, par exemple des flux correspondants encodés à différentes tailles, sélectionnables par l'utilisateur selon la bande passante disponible, ou différents flux audio dans différentes langues.
Chaque ensemble d'adaptation est spécifié avec la syntaxe :
id=index,streams=streams
où index doit être un indice numérique, et streams une séquence d'indices de flux séparés par des ,. Plusieurs ensembles d'adaptation peuvent être spécifiés, séparés par des espaces.
Pour associer tous les flux vidéo (ou audio) à un ensemble d'adaptation, v (ou a) peut être utilisé comme identifiant de flux à la place des ID.
Lorsqu'aucune assignation n'est définie, un ensemble d'adaptation est créé par défaut pour chaque flux.
Les champs optionnels suivants peuvent également être spécifiés :
descriptor
Définit le descripteur tel que défini par ISO/IEC 23009-1:2014/Amd.2:2015.
Par exemple :
<SupplementalProperty schemeIdUri=\"urn:mpeg:dash:srd:2014\" value=\"0,0,0,1,1,2,2\"/>
La chaîne du descripteur doit être une balise XML auto-fermante.
frag_duration
Remplace la durée globale de fragment spécifiée par l'option frag_duration.
frag_type
Remplace le type global de fragment spécifié par l'option frag_type.
seg_duration
Remplace la durée globale de segment spécifiée par l'option seg_duration.
trick_id
Marque un ensemble d'adaptation comme contenant des flux destinés à être utilisés en Trick Mode pour l'ensemble d'adaptation référencé.
Voici quelques exemples de valeurs possibles pour l'option adaptation_sets :
id=0,seg_duration=2,frag_duration=1,frag_type=duration,streams=v id=1,seg_duration=2,frag_type=none,streams=a
id=0,seg_duration=2,frag_type=none,streams=0 id=1,seg_duration=10,frag_type=none,trick_id=0,streams=1
dash_segment_type type
Définit le type des fichiers de segments DASH.
Valeurs possibles :
‘auto’
Le format des fichiers de segments DASH est sélectionné en fonction du codec du flux. C'est le mode par défaut.
‘mp4’
les fichiers de segments DASH seront au format ISOBMFF/MP4
‘webm’
les fichiers de segments DASH seront au format WebM
extra_window_size size
Définit le nombre maximal de segments conservés en dehors du manifeste avant leur suppression du disque.
format_options options_list
Définit les options du format de container (mp4/webm) à l'aide d'une liste de paramètres key=value séparés par :. Les valeurs contenant le caractère spécial : doivent être échappées.
frag_duration duration
Définit la durée en secondes des fragments au sein des segments ; une valeur fractionnaire peut également être définie.
frag_type type
Définit le type d'intervalle pour la fragmentation.
Valeurs possibles :
‘auto’
définit un fragment par segment
‘every_frame’
fragmente à chaque image
‘duration’
fragmente à des intervalles de temps spécifiques
‘pframes’
fragmente aux keyframes et selon le réordonnancement des P-frames qui suivent (vidéo uniquement, expérimental)
global_sidx bool
Écrit un atome SIDX global. Applicable uniquement pour une sortie mp4 en fichier unique, en mode non-streaming.
hls_master_name file_name
Nom de la playlist principale HLS. La valeur par défaut est master.m3u8.
hls_playlist bool
Génère des fichiers de playlist HLS. La playlist principale est générée avec le nom de fichier spécifié par l'option hls_master_name. Un fichier de playlist média est généré pour chaque flux, avec des noms de fichiers media_0.m3u8, media_1.m3u8, etc.
http_opts http_opts
Spécifie une liste d'options key=value séparées par : à transmettre au protocole HTTP sous-jacent. Applicable uniquement pour une sortie HTTP.
http_persistent bool
Utilise des connexions HTTP persistantes. Applicable uniquement pour une sortie HTTP.
http_user_agent user_agent
Remplace le champ User-Agent dans l'en-tête HTTP. Applicable uniquement pour une sortie HTTP.
ignore_io_errors bool
Ignore les erreurs d'E/S lors de l'ouverture et de l'écriture. Utile pour les exécutions de longue durée avec sortie réseau. Désactivé par défaut.
index_correction bool
Active ou désactive la logique de correction de l'index de segment. Applicable uniquement lorsque use_template est activé et use_timeline désactivé. Désactivé par défaut.
Lorsqu'elle est activée, cette logique surveille le flux des index de segments. Si la valeur d'index de segment d'un flux ne se situe pas à la position temps réel attendue, la logique corrige cette valeur d'index.
Cette logique est généralement nécessaire dans les cas d'usage de diffusion en direct. Les fluctuations de bande passante réseau sont fréquentes lors des diffusions de longue durée. Chaque fluctuation peut faire prendre du retard aux index de segments par rapport à la position temps réel attendue.
init_seg_name init_name
Nom de gabarit DASH à utiliser pour le segment d'initialisation. La valeur par défaut est init-stream$RepresentationID$.$ext$. $ext$ est remplacé par l'extension de nom de fichier propre au format de segment.
ldash bool
Active le Low-latency DASH en contraignant la présence et les valeurs de certains éléments. Désactivé par défaut.
lhls bool
Active le Low-latency HLS (LHLS). Ajoute une balise #EXT-X-PREFETCH avec l'URI du segment courant. L'équipe du lecteur hls.js tente de normaliser une spécification LHLS ouverte. Le brouillon de la spécification est disponible à https://github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md.
Cette option tente de se conformer à la spécification ouverte ci-dessus. Elle active automatiquement les options streaming et hls_playlist. Il s'agit d'une fonctionnalité expérimentale.
Note : il ne s'agit pas de la version LHLS d'Apple. Voir https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis
master_m3u8_publish_rate segment_intervals_count
Publie la playlist maîtresse de façon répétée après le nombre spécifié d'intervalles de segments.
max_playback_rate rate
Définit la vitesse de lecture maximale indiquée comme appropriée pour permettre aux clients d'ajuster automatiquement la latence de lecture et l'occupation du tampon pendant une lecture normale.
media_seg_name segment_name
Nom de gabarit DASH à utiliser pour les segments média. La valeur par défaut est chunk-stream$RepresentationID$-$Number%05d$.$ext$. $ext$ est remplacé par l'extension de nom de fichier propre au format de segment.
method method
Utilise la méthode HTTP donnée pour créer les fichiers de sortie. Généralement définie sur PUT ou POST.
min_playback_rate rate
Définit le débit de lecture minimal indiqué comme approprié pour permettre aux clients d'ajuster automatiquement la latence de lecture et l'occupation du tampon pendant une lecture normale.
mpd_profile flags
Définit un ou plusieurs profils de manifeste MPD.
Valeurs possibles :
‘dash’
profil live MPEG-DASH du format ISO de fichier multimédia de base
‘dvb_dash’
profil DVB-DASH
La valeur par défaut est dash.
remove_at_exit bool
Active ou désactive la suppression de tous les segments à la fin. Désactivé par défaut.
seg_duration duration
Définit la durée du segment en secondes (une valeur fractionnaire peut être définie). La valeur est traitée comme la durée moyenne du segment lorsque l'option use_template est activée et l'option use_timeline désactivée, et comme la durée minimale du segment dans tous les autres cas.
La valeur par défaut est 5.
single_file bool
Active ou désactive le stockage de tous les segments dans un seul fichier, accédé au moyen de plages d'octets. Désactivé par défaut.
Le nom du fichier unique peut être spécifié avec l'option single_file_name ; s'il n'est pas spécifié, le nom de base du fichier de manifeste avec l'extension du format de sortie est utilisé.
single_file_name file_name
Nom de gabarit DASH à utiliser pour l'élément baseURL du manifeste. Implique que l'option single_file soit définie sur true. Dans le gabarit, $ext$ est remplacé par l'extension de nom de fichier propre au format de segment.
availability_start_time_ms milliseconds
Définit l'attribut availabilityStartTime du MPD comme un temps Unix epoch en millisecondes. Si défini à 0, l'heure système au moment de l'écriture du premier paquet est utilisée. Ceci est utile pour les sorties en direct nécessitant un temps de début de disponibilité stable entre les redémarrages.
streaming bool
Active ou désactive le mode de sortie en streaming par chunks. Dans ce mode, chaque image constitue un fragment moof formant un chunk. Désactivé par défaut.
suggested_presentation_delay duration
Définit l'attribut suggestedPresentationDelay du MPD. Si défini à 0, la durée du dernier segment est utilisée.
target_latency target_latency
Définit une latence cible visée en secondes pour la diffusion (une valeur fractionnaire peut être définie). Applicable uniquement lorsque les options streaming et write_prft sont activées. Il s'agit d'un champ informatif que les clients peuvent utiliser pour mesurer la latence du service.
timeout timeout
Définit le délai d'expiration des opérations d'E/S de socket, exprimé en secondes (une valeur fractionnaire peut être définie). Applicable uniquement pour une sortie HTTP.
update_period period
Définit la période de mise à jour du MPD, pour le contenu dynamique. L'unité est la seconde. Si définie à 0, la période est calculée automatiquement.
La valeur par défaut est 0.
use_template bool
Active ou désactive l'utilisation de SegmentTemplate au lieu de SegmentList dans le manifeste. Activé par défaut.
use_timeline bool
Active ou désactive l'utilisation de SegmentTimeline au sein de la section SegmentTemplate du manifeste. Activé par défaut.
utc_timing_url url
URL de la page renvoyant l'horodatage UTC au format ISO, par exemple https://time.akamai.com/?iso
window_size size
Définit le nombre maximal de segments conservés dans le manifeste, en supprimant le plus ancien. Ceci est utile pour la diffusion en direct.
Si la valeur est 0, tous les segments sont conservés dans le manifeste. La valeur par défaut est 0.
write_prft write_prft
Écrit des éléments Producer Reference Time sur les flux pris en charge. Cela active également l'écriture de boîtes prft dans le muxer sous-jacent. Applicable uniquement lorsque l'option utc_url est activée. Elle est définie sur auto par défaut, auquel cas le muxer tente de ne l'activer que dans les modes qui le nécessitent.
4.29.2 Exemple
Génère une sortie DASH en lisant une source d'entrée en temps réel avec ffmpeg.
Deux flux multimédias sont générés à partir du fichier d'entrée, tous deux contenant un flux vidéo encodé via ‘libx264’ et un flux audio encodé avec ‘libfdk_aac’. Le premier flux multimédia contient une vidéo au débit binaire de 800k et un audio au débit par défaut, le second avec une vidéo mise à l'échelle en 320x170 pixels à 300k et un audio rééchantillonné à 22005 Hz.
L'option window_size ne conserve que les 5 derniers segments, d'une durée par défaut de 5 secondes.
ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \
-b:v:0 800k -profile:v:0 main \
-b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline -ar:a:1 22050 \
-bf 1 -keyint_min 120 -g 120 -sc_threshold 0 -b_strategy 0 \
-use_timeline 1 -use_template 1 -window_size 5 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /path/to/out.mpd
4.30 daud
Muxer audio D-Cinema.
Il accepte un unique flux audio à 6 canaux, rééchantillonné à 96000 Hz et encodé avec le codec ‘pcm_24daud’.
4.30.1 Exemple
Utilisez ffmpeg pour multiplexer l'audio d'entrée dans une disposition de canaux ‘5.1’ rééchantillonnée à 96000Hz :
ffmpeg -i INPUT -af aresample=96000,pan=5.1 slow.302
Pour les versions de ffmpeg antérieures à 7.0, il peut être nécessaire d'utiliser le filtre ‘asetnsamples’ pour limiter la taille des paquets multiplexés, car ce format ne prend pas en charge le multiplexage de paquets de plus de 65535 octets (3640 échantillons). Pour les versions plus récentes de ffmpeg, l'audio est automatiquement découpé en paquets de 36000 octets (2000 échantillons).
4.31 dv
Muxer DV (Digital Video).
Il accepte exactement un flux vidéo ‘dvvideo’ et au maximum deux flux audio ‘pcm_s16’. D'autres contraintes sont définies par les propriétés de la vidéo, qui doit correspondre à un profil DV pris en charge, ainsi que par la fréquence d'images.
4.31.1 Exemple
Utilisez ffmpeg pour convertir l'entrée :
ffmpeg -i INPUT -s:v 720x480 -pix_fmt yuv411p -r 29.97 -ac 2 -ar 48000 -y out.dv
4.32 ffmetadata
Muxer de métadonnées FFmpeg.
Ce muxer écrit les métadonnées des flux au format ‘ffmetadata’.
Voir (ffmpeg-formats)le chapitre Métadonnées pour plus d'informations sur le format.
4.32.1 Exemple
Utilisez ffmpeg pour extraire les métadonnées d'un fichier d'entrée vers un fichier metadata.ffmeta au format ‘ffmetadata’ :
ffmpeg -i INPUT -f ffmetadata metadata.ffmeta
4.33 fifo
Muxer FIFO (First-In First-Out).
Le pseudo-muxer ‘fifo’ permet de séparer l'encodage et le multiplexage en utilisant une file d'attente FIFO (premier entré, premier sorti) et en exécutant le muxer réel dans un thread séparé.
Cela est particulièrement utile en combinaison avec le muxer tee et permet d'envoyer des données vers plusieurs destinations avec des niveaux de fiabilité, de vitesse d'écriture et de latence différents.
Le muxer cible est soit sélectionné à partir du nom de sortie, soit spécifié via l'option fifo_format.
Le comportement du muxer ‘fifo’ en cas de remplissage de la file d'attente ou d'échec de la sortie (par exemple si un paquet ne peut pas être écrit vers la sortie) est configurable :
- La sortie peut être redémarrée de façon transparente, avec un délai configurable entre les tentatives, basé sur le temps réel ou sur le temps du flux traité.
- L'encodage peut être bloqué pendant une défaillance temporaire, ou se poursuivre en abandonnant les paquets de façon transparente si la file d'attente FIFO se remplit.
Les utilisateurs de l'API doivent savoir que les fonctions de rappel (interrupt_callback, io_open et io_close) utilisées dans son AVFormatContext doivent être thread-safe.
4.33.1 Options
attempt_recovery bool
En cas d'échec, tente de récupérer la sortie. Cela est particulièrement utile avec une sortie réseau, car cela permet de redémarrer le streaming de façon transparente. Par défaut, cette option est réglée sur false.
drop_pkts_on_overflow bool
Si réglé sur true, en cas de remplissage de la file FIFO, les paquets sont abandonnés plutôt que de bloquer l'encoder. Cela permet de poursuivre le streaming sans retarder l'entrée, au prix de l'omission d'une partie du flux. Par défaut, cette option est réglée sur false ; dans ce cas, l'encoder est bloqué jusqu'à ce que le muxer traite une partie des paquets, sans qu'aucun ne soit perdu.
fifo_format format_name
Spécifie le nom du format. Utile s'il ne peut pas être deviné à partir du suffixe du nom de sortie.
format_opts options
Spécifie les options de format pour le muxer sous-jacent. Les options du muxer peuvent être spécifiées sous forme d'une liste de paires key=value séparées par ’:’.
max_recovery_attempts count
Définit le nombre maximal de tentatives de récupération infructueuses consécutives au-delà duquel la sortie échoue définitivement. Par défaut, cette option est réglée sur 0 (illimité).
queue_size size
Spécifie la taille de la file d'attente en nombre de paquets. La valeur par défaut est 60.
recover_any_error bool
Si réglé sur true, la récupération est tentée quel que soit le type d'erreur à l'origine de l'échec. Par défaut, cette option est réglée sur false, et pour certaines erreurs (généralement permanentes), la récupération n'est pas tentée même si l'option attempt_recovery est réglée sur true.
recovery_wait_streamtime bool
Si réglé sur false, le temps réel est utilisé pour attendre la tentative de récupération (c'est-à-dire que la récupération est tentée après le délai spécifié par l'option recovery_wait_time).
Si réglé sur true, c'est le temps du flux traité qui est pris en compte à la place (c'est-à-dire que la récupération est tentée après avoir écarté les paquets correspondant à l'option recovery_wait_time).
Par défaut, cette option est réglée sur false.
recovery_wait_time duration
Spécifie le délai d'attente en secondes avant la prochaine tentative de récupération après l'échec de la précédente. La valeur par défaut est 5.
restart_with_keyframe bool
Spécifie s'il faut attendre une keyframe après une récupération suite à un débordement de la file ou à un échec. Cette option est réglée sur false par défaut.
timeshift duration
Met en tampon le nombre de paquets spécifié et retarde l'écriture de la sortie. Notez que la valeur de l'option queue_size doit être suffisamment grande pour stocker les paquets destinés au timeshift. À la fin de l'entrée, le tampon fifo est vidé à vitesse réelle.
4.33.2 Exemple
Utilisez ffmpeg pour diffuser vers un serveur RTMP, poursuivre le traitement du flux à vitesse réelle même en cas de défaillance temporaire (panne réseau), et tenter indéfiniment de récupérer le streaming toutes les secondes :
ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv \
-drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 \
-map 0:v -map 0:a rtmp://example.com/live/stream_name
4.34 film_cpk
Muxer Sega film (.cpk).
Ce format était utilisé comme format interne par plusieurs jeux Sega.
Pour plus d'informations sur le format de fichier Sega film, consultez http://wiki.multimedia.cx/index.php?title=Sega_FILM.
Il accepte au maximum un flux vidéo ‘cinepak’ ou brut, et au maximum un flux audio.
4.35 filmstrip
Muxer Adobe Filmstrip.
Ce format est utilisé par plusieurs outils Adobe pour stocker un export filmstrip généré. Il accepte un unique flux vidéo brut.
4.36 fits
Muxer Flexible Image Transport System (FITS).
Ce format d'image est utilisé pour stocker des données astronomiques.
Pour plus d'informations sur ce format, consultez https://fits.gsfc.nasa.gov.
4.37 flac
Muxer audio FLAC brut.
Ce muxer accepte exactement un flux audio FLAC. Il est en outre possible d'ajouter des images avec la disposition ‘attached_pic’.
4.37.1 Options
write_header bool
écrit l'en-tête du fichier si réglé sur true, la valeur par défaut est true
4.37.2 Exemple
Utilisez ffmpeg pour stocker le flux audio d'un fichier d'entrée, accompagné de plusieurs images utilisées avec la disposition ‘attached_pic’ :
ffmpeg -i INPUT -i pic1.png -i pic2.jpg -map 0:a -map 1 -map 2 -disposition:v attached_pic OUTPUT
4.38 flv
Muxer Adobe Flash Video Format.
4.38.1 Options
flvflags flags
Valeurs possibles :
‘aac_seq_header_detect’
Place l'en-tête de séquence AAC en fonction des données du flux audio.
‘no_sequence_end’
Désactive la balise de fin de séquence.
‘no_metadata’
Désactive la balise de métadonnées.
‘no_duration_filesize’
Désactive duration et filesize dans les métadonnées lorsqu'ils sont égaux à zéro à la fin du flux. (Utilisé pour les flux en direct non positionnables).
‘add_keyframe_index’
Utilisé pour faciliter le positionnement ; en particulier pour le pseudo-streaming HTTP.
4.39 framecrc
Format de test CRC (Cyclic Redundancy Check) par paquet.
Ce muxer calcule et affiche le CRC Adler-32 pour chaque paquet audio et vidéo. Par défaut, les images audio sont converties en audio brut 16 bits signé et les images vidéo en vidéo brute avant le calcul du CRC.
La sortie du muxer se compose d'une ligne pour chaque paquet audio et vidéo, de la forme :
stream_index, packet_dts, packet_pts, packet_duration, packet_size, 0xCRC
CRC est un nombre hexadécimal complété par des zéros sur 8 chiffres, contenant le CRC du paquet.
4.39.1 Exemples
Par exemple, pour calculer le CRC des images audio et vidéo de INPUT, converties en paquets audio et vidéo bruts, et le stocker dans le fichier out.crc :
ffmpeg -i INPUT -f framecrc out.crc
Pour afficher les informations sur la sortie standard, utilisez la commande :
ffmpeg -i INPUT -f framecrc -
Avec ffmpeg, vous pouvez sélectionner le format de sortie vers lequel les images audio et vidéo sont encodées avant de calculer le CRC de chaque paquet, en spécifiant le codec audio et vidéo. Par exemple, pour calculer le CRC de chaque image audio d'entrée décodée convertie en PCM non signé 8 bits et de chaque image vidéo d'entrée décodée convertie en MPEG-2 vidéo, utilisez la commande :
ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
Voir aussi le muxer crc.
4.40 framehash
Format de test d'empreintes par paquet.
Ce muxer calcule et affiche une empreinte cryptographique pour chaque paquet audio et vidéo. Cela permet d'effectuer des vérifications d'égalité paquet par paquet sans avoir à réaliser individuellement une comparaison binaire sur chacun.
Par défaut, les images audio sont converties en audio brut 16 bits signé et les images vidéo en vidéo brute avant le calcul de l'empreinte, mais la sortie de conversions explicites vers d'autres codecs peut également être utilisée. Il utilise par défaut la fonction de hachage cryptographique SHA-256, mais prend en charge plusieurs autres algorithmes.
La sortie du muxer se compose d'une ligne pour chaque paquet audio et vidéo, de la forme :
stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash
hash est un nombre hexadécimal représentant l'empreinte calculée pour le paquet.
hash algorithm
Utilise la fonction de hachage cryptographique spécifiée par la chaîne algorithm. Les valeurs prises en charge sont MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (par défaut), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 et adler32.
4.40.1 Exemples
Pour calculer l'empreinte SHA-256 des images audio et vidéo de INPUT, converties en paquets audio et vidéo bruts, et la stocker dans le fichier out.sha256 :
ffmpeg -i INPUT -f framehash out.sha256
Pour afficher les informations sur la sortie standard, en utilisant la fonction de hachage MD5, utilisez la commande :
ffmpeg -i INPUT -f framehash -hash md5 -
Voir aussi le muxer hash.
4.41 framemd5
Format de test MD5 par paquet.
Il s'agit d'une variante du muxer framehash. Contrairement à ce dernier, il utilise par défaut la fonction de hachage MD5.
4.41.1 Exemples
Pour calculer l'empreinte MD5 des images audio et vidéo de INPUT, converties en paquets audio et vidéo bruts, et la stocker dans le fichier out.md5 :
ffmpeg -i INPUT -f framemd5 out.md5
Pour afficher les informations sur la sortie standard, utilisez la commande :
ffmpeg -i INPUT -f framemd5 -
Voir aussi les muxers framehash et md5.
4.42 gif
Muxer GIF animé.
Notez que le format GIF a une base de temps très grande : le délai entre deux images ne peut donc pas être inférieur à une centiseconde.
4.42.1 Options
loop bool
Définit le nombre de fois où la sortie boucle. Utilisez -1 pour aucune boucle, 0 pour boucler indéfiniment (valeur par défaut).
final_delay delay
Impose le délai (exprimé en centisecondes) après la dernière image. Chaque image se termine par un délai jusqu'à l'image suivante. La valeur par défaut est -1, une valeur spéciale indiquant au muxer de réutiliser le délai précédent. En cas de boucle, vous pourriez vouloir personnaliser cette valeur, par exemple pour marquer une pause.
4.42.2 Exemple
Encodez un gif bouclant 10 fois, avec un délai de 5 secondes entre les boucles :
ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
Remarque 1 : si vous souhaitez extraire les images dans des fichiers GIF séparés, vous devez forcer le muxer image2 :
ffmpeg -i INPUT -c:v gif -f image2 "out%d.gif"
4.43 gxf
Muxer General eXchange Format (GXF).
GXF a été développé par Grass Valley Group, puis normalisé par la SMPTE sous la référence SMPTE 360M, avant d'être étendu par la SMPTE RDD 14-2007 pour inclure les résolutions vidéo haute définition.
Il accepte au maximum un flux vidéo avec le codec ‘mjpeg’, ‘mpeg1video’, ‘mpeg2video’, ou ‘dvvideo’ avec la résolution ‘512x480’ ou ‘608x576’, ainsi que plusieurs flux audio à 48000Hz avec le codec ‘pcm16_le’.
4.44 hash
Format de test d'empreinte.
Ce muxer calcule et affiche une empreinte cryptographique de toutes les images audio et vidéo d'entrée. Cela permet d'effectuer des vérifications d'égalité sans avoir à réaliser une comparaison binaire complète.
Par défaut, les images audio sont converties en audio brut 16 bits signé et les images vidéo en vidéo brute avant le calcul de l'empreinte, mais la sortie de conversions explicites vers d'autres codecs peut également être utilisée. Les horodatages sont ignorés. Il utilise par défaut la fonction de hachage cryptographique SHA-256, mais prend en charge plusieurs autres algorithmes.
La sortie du muxer se compose d'une unique ligne de la forme : algo=hash, où algo est une courte chaîne représentant la fonction de hachage utilisée, et hash un nombre hexadécimal représentant l'empreinte calculée.
hash algorithm
Utilise la fonction de hachage cryptographique spécifiée par la chaîne algorithm. Les valeurs prises en charge sont MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (par défaut), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 et adler32.
4.44.1 Exemples
Pour calculer l'empreinte SHA-256 de l'entrée convertie en audio et vidéo bruts, et la stocker dans le fichier out.sha256 :
ffmpeg -i INPUT -f hash out.sha256
Pour afficher une empreinte MD5 sur la sortie standard, utilisez la commande :
ffmpeg -i INPUT -f hash -hash md5 -
Voir aussi le muxer framehash.
4.45 hds
Muxer HTTP Dynamic Streaming (HDS).
HTTP dynamic streaming, ou HDS, est une méthode de streaming à débit adaptatif développée par Adobe. HDS distribue du contenu vidéo MP4 sur des connexions HTTP. HDS peut être utilisé pour du streaming à la demande ou en direct.
Ce muxer crée un manifeste .f4m (Adobe Flash Media Manifest File), un fichier .abst (Adobe Bootstrap File) pour chaque flux, ainsi que des fichiers de segments dans un répertoire spécifié comme sortie.
Ces fichiers doivent être accessibles à un lecteur HDS via HTTPS pour qu'il puisse assurer la lecture du flux généré.
4.45.1 Options
extra_window_size int
nombre de fragments conservés hors du manifeste avant suppression du disque
min_frag_duration microseconds
durée minimale des fragments (en microsecondes), la valeur par défaut est 1 seconde (10000000)
remove_at_exit bool
supprime tous les fragments à la fin si réglé sur true
window_size int
nombre de fragments conservés dans le manifeste, si réglé sur une valeur différente de 0. Par défaut, tous les segments sont conservés dans le répertoire de sortie.
4.45.2 Exemple
Utilisez ffmpeg pour générer des fichiers HDS dans le répertoire output.hds à vitesse réelle :
ffmpeg -re -i INPUT -f hds -b:v 200k output.hds
4.46 hls
Muxer Apple HTTP Live Streaming, qui segmente le MPEG-TS conformément à la spécification HTTP Live Streaming (HLS).
Il crée un fichier de playlist et un ou plusieurs fichiers de segments. Le nom de fichier de sortie spécifie le nom de fichier de la playlist.
Par défaut, le muxer crée un fichier pour chaque segment produit. Ces fichiers portent le même nom que la playlist, suivi d'un numéro séquentiel et d'une extension .ts.
Veillez à exiger un GOP fermé lors de l'encodage et à définir la taille du GOP en fonction de votre contrainte de durée de segment.
Par exemple, pour convertir un fichier d'entrée avec ffmpeg :
ffmpeg -i in.mkv -c:v h264 -flags +cgop -g 30 -hls_time 1 out.m3u8
Cet exemple produit la playlist out.m3u8, ainsi que les fichiers de segments out0.ts, out1.ts, out2.ts, etc.
Voir aussi le muxer segment, qui fournit une implémentation de segmenteur plus générique et flexible, et peut être utilisé pour effectuer la segmentation HLS.
4.46.1 Options
hls_init_time duration
Définit la durée cible initiale des segments. La valeur par défaut est 0.
duration doit être une spécification de durée temporelle, voir (ffmpeg-utils)la section Time duration du manuel ffmpeg-utils(1).
Le segment est coupé à la prochaine keyframe une fois ce délai écoulé, pour la première liste m3u8. Une fois la playlist initiale remplie, ffmpeg coupe les segments à une durée égale à hls_time.
hls_time duration
Définit la durée cible des segments. La valeur par défaut est 2.
duration doit être une spécification de durée temporelle, voir (ffmpeg-utils)la section Time duration du manuel ffmpeg-utils(1). Le segment est coupé à la prochaine keyframe une fois ce délai écoulé.
hls_list_size size
Définit le nombre maximal d'entrées de la playlist. Si réglé sur 0, le fichier de liste contient tous les segments. La valeur par défaut est 5.
hls_delete_threshold size
Définit le nombre de segments non référencés à conserver sur le disque avant que hls_flags delete_segments ne les supprime. Augmentez cette valeur pour permettre aux clients de continuer à télécharger des segments récemment référencés dans la playlist. La valeur par défaut est 1, ce qui signifie que les segments plus anciens que hls_list_size+1 sont supprimés.
hls_start_number_source source
Démarre le numéro de séquence de la playlist (#EXT-X-MEDIA-SEQUENCE) selon la source spécifiée. Sauf si hls_flags single_file est réglé, cela spécifie également la source des numéros de séquence de départ des noms de fichiers de segments et de sous-titres. Dans tous les cas, si hls_flags append_list est réglé et que le numéro de séquence de la playlist lue est supérieur au numéro de séquence de départ spécifié, cette valeur est utilisée comme valeur de départ.
Il accepte les valeurs suivantes :
generic (par défaut)
Définit les numéros de départ selon la valeur de l'option start_number.
epoch
Définit le numéro de départ comme le nombre de secondes depuis l'epoch (1970-01-01 00:00:00).
epoch_us
Définit le numéro de départ comme le nombre de microsecondes depuis l'epoch (1970-01-01 00:00:00).
datetime
Définit le numéro de départ à partir de la date/heure courante au format YYYYmmddHHMMSS, par exemple 20161231235759.
start_number number
Démarre le numéro de séquence de la playlist (#EXT-X-MEDIA-SEQUENCE) à partir du numéro spécifié lorsque hls_start_number_source vaut generic (c'est le cas par défaut). Sauf si hls_flags single_file est réglé, cela spécifie également les numéros de séquence de départ des noms de fichiers de segments et de sous-titres. La valeur par défaut est 0.
hls_allow_cache bool
Spécifie explicitement si le client PEUT (1) ou NE DOIT PAS (0) mettre en cache les segments média.
hls_base_url baseurl
Ajoute baseurl à chaque entrée de la playlist. Utile pour générer des playlists avec des chemins absolus.
Notez que le numéro de séquence de la playlist doit être unique pour chaque segment, et qu'il ne faut pas le confondre avec le numéro de séquence du nom de fichier du segment, qui peut être cyclique, par exemple si l'option wrap est spécifiée.
hls_segment_filename filename
Définit le nom de fichier des segments. Sauf si l'option hls_flags est réglée avec ‘single_file’, filename est utilisé comme format de chaîne auquel le numéro de segment est ajouté.
Par exemple :
ffmpeg -i in.nut -hls_segment_filename 'file%03d.ts' out.m3u8
produit la playlist out.m3u8, ainsi que les fichiers de segments file000.ts, file001.ts, file002.ts, etc.
filename peut contenir un chemin absolu ou une spécification de chemin relatif, mais seule la partie nom de fichier, sans aucun chemin, figure dans la liste de segments m3u8. Si un chemin relatif est spécifié, le chemin des fichiers de segments créés est relatif au répertoire de travail courant. Lorsque strftime_mkdir est réglé, la valeur développée complète de filename est écrite dans la liste de segments m3u8.
Lorsque var_stream_map est réglé avec deux variant streams ou plus, le motif de filename doit contenir la chaîne "%v", laquelle est développée à la position de l'index du variant stream dans les noms de fichiers de segments générés.
Par exemple :
ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
-map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
-hls_segment_filename 'file_%v_%03d.ts' out_%v.m3u8
produit les ensembles de fichiers de segments des playlists : file_0_000.ts, file_0_001.ts, file_0_002.ts, etc. et file_1_000.ts, file_1_001.ts, file_1_002.ts, etc.
La chaîne "%v" peut être présente dans filename ou dans le nom du dernier répertoire contenant le fichier, mais seulement dans l'un des deux. (De plus, %v peut apparaître plusieurs fois dans le dernier sous-répertoire ou dans filename.) Si la chaîne %v est présente dans le nom du répertoire, des sous-répertoires sont créés après développement du motif de nom de répertoire. Cela permet de créer des segments correspondant à différents variant streams dans des sous-répertoires.
Par exemple :
ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
-map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
-hls_segment_filename 'vs%v/file_%03d.ts' vs%v/out.m3u8
produit les ensembles de fichiers de segments des playlists : vs0/file_000.ts, vs0/file_001.ts, vs0/file_002.ts, etc. et vs1/file_000.ts, vs1/file_001.ts, vs1/file_002.ts, etc.
strftime bool
Utilise strftime() sur filename pour développer le nom de fichier du segment avec l'heure locale. Le numéro de segment est également disponible dans ce mode, mais pour l'utiliser, il faut régler ‘second_level_segment_index’ dans hls_flag, %%d étant alors le spécificateur.
Par exemple :
ffmpeg -i in.nut -strftime 1 -hls_segment_filename 'file-%Y%m%d-%s.ts' out.m3u8
produit la playlist out.m3u8, ainsi que les fichiers de segments file-20160215-1455569023.ts, file-20160215-1455569024.ts, etc. Remarque : sur certains systèmes/environnements, le spécificateur %s n'est pas disponible. Voir la documentation de strftime().
Par exemple :
ffmpeg -i in.nut -strftime 1 -hls_flags second_level_segment_index -hls_segment_filename 'file-%Y%m%d-%%04d.ts' out.m3u8
produit la playlist out.m3u8, ainsi que les fichiers de segments file-20160215-0001.ts, file-20160215-0002.ts, etc.
strftime_mkdir bool
Utilisé avec strftime, il crée tous les sous-répertoires présents dans les valeurs développées de l'option hls_segment_filename.
Par exemple :
ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y%m%d/file-%Y%m%d-%s.ts' out.m3u8
crée un répertoire 201560215 (s'il n'existe pas), puis produit la playlist out.m3u8, ainsi que les fichiers de segments 20160215/file-20160215-1455569023.ts, 20160215/file-20160215-1455569024.ts, etc.
Par exemple :
ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y/%m/%d/file-%Y%m%d-%s.ts' out.m3u8
crée une hiérarchie de répertoires 2016/02/15 (si l'un d'eux n'existe pas), puis produit la playlist out.m3u8, ainsi que les fichiers de segments 2016/02/15/file-20160215-1455569023.ts, 2016/02/15/file-20160215-1455569024.ts, etc.
hls_segment_options options_list
Définit les options du format de sortie à l'aide d'une liste de paramètres key=value séparés par des deux-points. Les valeurs contenant le caractère spécial : doivent être échappées.
hls_key_info_file key_info_file
Utilise les informations de key_info_file pour le chiffrement des segments. La première ligne de key_info_file spécifie l'URI de la clé écrite dans la playlist. L'URL de la clé est utilisée pour accéder à la clé de chiffrement pendant la lecture. La deuxième ligne spécifie le chemin du fichier de clé utilisé pour obtenir la clé pendant le processus de chiffrement. Le fichier de clé est lu comme un unique tableau compact de 16 octets au format binaire. La troisième ligne, facultative, spécifie le vecteur d'initialisation (IV) sous forme de chaîne hexadécimale, à utiliser à la place du numéro de séquence du segment (valeur par défaut) pour le chiffrement. Toute modification de key_info_file entraîne le chiffrement des segments avec la nouvelle clé/le nouvel IV, ainsi qu'une entrée dans la playlist pour la nouvelle URI/le nouvel IV de clé si hls_flags periodic_rekey est activé.
Format du fichier key info :
key URI
key file path
IV (optional)
Exemples d'URI de clé :
http://server/file.key
/path/to/file.key
file.key
Exemples de chemins de fichier de clé :
file.key
/path/to/file.key
Exemple d'IV :
0123456789ABCDEF0123456789ABCDEF
Exemple de fichier key info :
http://server/file.key
/path/to/file.key
0123456789ABCDEF0123456789ABCDEF
Exemple de script shell :
#!/bin/sh
BASE_URL=${1:-'.'}
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
-hls_key_info_file file.keyinfo out.m3u8
hls_enc bool
Active (1) ou désactive (0) le chiffrement AES128. Lorsqu'il est activé, chaque segment généré est chiffré et la clé de chiffrement est enregistrée sous playlist name.key.
hls_enc_key key
Spécifie une clé de 16 octets pour chiffrer les segments ; par défaut, elle est générée aléatoirement.
hls_enc_key_url keyurl
Si réglé, keyurl est préfixé au nom de fichier de la clé dans la playlist à la place de baseurl.
hls_enc_iv iv
Spécifie le vecteur d'initialisation de 16 octets à utiliser pour chaque segment à la place de ceux générés automatiquement.
hls_segment_type flags
Valeurs possibles :
‘mpegts’
Génère les fichiers de segments au format MPEG-2 Transport Stream. Compatible avec toutes les versions de HLS.
‘fmp4’
Génère les fichiers de segments au format MP4 fragmenté, similaire à MPEG-DASH. Les fichiers fmp4 peuvent être utilisés à partir de la version 7 de HLS.
hls_fmp4_init_filename filename
Définit le nom de fichier de l'en-tête des fichiers de fragments ; le nom de fichier par défaut est init.mp4.
Lorsque strftime est activé, filename est développé vers le nom de fichier du segment avec l'heure locale.
Par exemple :
ffmpeg -i in.nut -hls_segment_type fmp4 -strftime 1 -hls_fmp4_init_filename "%s_init.mp4" out.m3u8
produit un fichier init de ce type : 1602678741_init.mp4.
hls_fmp4_init_resend bool
Renvoie le fichier init à chaque actualisation du fichier m3u8 ; la valeur par défaut est 0.
Lorsque var_stream_map est réglé avec deux variant streams ou plus, le motif de filename doit contenir la chaîne "%v" ; cette chaîne spécifie la position de l'index du variant stream dans les noms de fichiers init générés. La chaîne "%v" peut être présente dans filename ou dans le nom du dernier répertoire contenant le fichier. Si la chaîne est présente dans le nom du répertoire, des sous-répertoires sont créés après développement du motif de nom de répertoire. Cela permet de créer des fichiers init correspondant à différents variant streams dans des sous-répertoires.
hls_flags flags
Valeurs possibles :
‘single_file’
Si ce flag est réglé, le muxer stocke tous les segments dans un unique fichier MPEG-TS et utilise des plages d'octets dans la playlist. Les playlists HLS générées de cette façon ont le numéro de version 4.
Par exemple :
ffmpeg -i in.nut -hls_flags single_file out.m3u8
produit la playlist out.m3u8 et un unique fichier de segment, out.ts.
‘delete_segments’
Les fichiers de segments retirés de la playlist sont supprimés après une durée égale à la durée du segment plus la durée de la playlist.
‘append_list’
Ajoute les nouveaux segments à la fin de l'ancienne liste de segments, et retire #EXT-X-ENDLIST de l'ancienne liste de segments.
‘round_durations’
Arrondit les informations de durée dans les informations de segment du fichier de playlist en valeurs entières, au lieu d'utiliser des nombres à virgule flottante. En l'absence d'autres fonctionnalités nécessitant une version supérieure de HLS, cela permet à ffmpeg de produire un m3u8 en version 2 de HLS.
‘discont_start’
Ajoute la balise #EXT-X-DISCONTINUITY à la playlist, avant les informations du premier segment.
‘omit_endlist’
N'ajoute pas la balise EXT-X-ENDLIST à la fin de la playlist.
‘periodic_rekey’
Le fichier spécifié par hls_key_info_file est vérifié périodiquement afin de détecter les mises à jour des informations de chiffrement. Veillez à remplacer ce fichier de façon atomique, y compris le fichier contenant la clé de chiffrement AES.
‘independent_segments’
Ajoute la balise #EXT-X-INDEPENDENT-SEGMENTS aux playlists comportant des segments vidéo, lorsqu'il est garanti que tous les segments de cette playlist commencent par une keyframe.
‘iframes_only’
Ajoute la balise #EXT-X-I-FRAMES-ONLY aux playlists comportant des segments vidéo et ne pouvant lire que les I-frames en mode #EXT-X-BYTERANGE.
‘split_by_time’
Autorise les segments à commencer sur des images autres que des keyframes. Cela améliore le comportement sur certains lecteurs lorsque l'intervalle entre les keyframes est irrégulier, mais peut l'aggraver sur d'autres, et peut provoquer des anomalies lors du positionnement. Ce flag doit être utilisé avec l'option hls_time.
‘program_date_time’
Génère des balises EXT-X-PROGRAM-DATE-TIME.
‘second_level_segment_index’
Permet d'utiliser les index de segment comme %%d dans l'expression de l'option hls_segment_filename, en plus des valeurs de date/heure, lorsque l'option strftime est activée. Pour obtenir des nombres à largeur fixe avec des zéros de tête, le format %%0xd est disponible, x étant la largeur requise.
‘second_level_segment_size’
Permet d'utiliser la taille des segments (comptée en octets) comme %%s dans l'expression de l'option hls_segment_filename, en plus des valeurs de date/heure, lorsque strftime est activé. Pour obtenir des nombres à largeur fixe avec des zéros de tête, le format %%0xs est disponible, x étant la largeur requise.
‘second_level_segment_duration’
Permet d'utiliser la durée des segments (calculée en microsecondes) comme %%t dans l'expression de l'option hls_segment_filename, en plus des valeurs de date/heure, lorsque strftime est activé. Pour obtenir des nombres à largeur fixe avec des zéros de tête, le format %%0xt est disponible, x étant la largeur requise.
Par exemple :
ffmpeg -i sample.mpeg \
-f hls -hls_time 3 -hls_list_size 5 \
-hls_flags second_level_segment_index+second_level_segment_size+second_level_segment_duration \
-strftime 1 -strftime_mkdir 1 -hls_segment_filename "segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8
produit des segments de ce type : segment_20170102194334_0003_00122200_0000003000000.ts, segment_20170102194334_0004_00120072_0000003000000.ts, etc.
‘temp_file’
Écrit les données du segment dans filename.tmp, puis renomme en filename une fois le segment terminé seulement.
Un serveur web servant les segments peut être configuré pour rejeter les requêtes vers *.tmp, afin d'empêcher l'accès aux segments en cours avant qu'ils n'aient été ajoutés à la playlist m3u8.
Ce flag affecte également la façon dont les fichiers de playlist m3u8 sont créés. S'il est réglé, tous les fichiers de playlist sont écrits dans un fichier temporaire puis renommés une fois terminés, de la même façon que les segments. Mais les playlists utilisant le protocole file et dont hls_playlist_type est différent de ‘vod’ sont toujours écrites dans un fichier temporaire, indépendamment de ce flag.
Les fichiers de playlist maîtresse spécifiés avec master_pl_name, s'ils existent, avec le protocole file, sont toujours écrits dans un fichier temporaire indépendamment de ce flag si la valeur de master_pl_publish_rate est différente de zéro.
hls_playlist_type type
Si type vaut ‘event’, émet #EXT-X-PLAYLIST-TYPE:EVENT dans l'en-tête m3u8. Cela force hls_list_size à 0 ; la playlist ne peut alors être qu'étendue par ajout.
Si type vaut ‘vod’, émet #EXT-X-PLAYLIST-TYPE:VOD dans l'en-tête m3u8. Cela force hls_list_size à 0 ; la playlist ne doit plus changer.
method method
Utilise la méthode HTTP donnée pour créer les fichiers hls.
Par exemple :
ffmpeg -re -i in.ts -f hls -method PUT http://example.com/live/out.m3u8
envoie tous les fichiers de segments mpegts vers le serveur HTTP en utilisant la méthode HTTP PUT, et met à jour les fichiers m3u8 toutes les refresh fois en utilisant la même méthode. Notez que le serveur HTTP doit prendre en charge la méthode donnée pour l'envoi de fichiers.
http_user_agent agent
Remplace le champ User-Agent dans l'en-tête HTTP. Applicable uniquement pour une sortie HTTP.
var_stream_map stream_map
Spécifie une chaîne map définissant comment regrouper les flux audio, vidéo et sous-titres en différents variant streams. Les groupes de variant streams sont séparés par des espaces.
Le format de chaîne attendu ressemble à "a:0,v:0 a:1,v:1 ....". Ici, a:, v: et s: sont les clés permettant de spécifier respectivement les flux audio, vidéo et sous-titres. Les valeurs autorisées vont de 0 à 9 (limite purement pratique).
Lorsqu'il y a deux variant streams ou plus, le motif du nom de fichier de sortie doit contenir la chaîne "%v" : cette chaîne spécifie la position de l'index du variant stream dans les noms de fichiers de playlist média de sortie. La chaîne "%v" peut être présente dans le nom de fichier ou dans le nom du dernier répertoire contenant le fichier. Si la chaîne est présente dans le nom du répertoire, des sous-répertoires sont créés après développement du motif de nom de répertoire. Cela permet de créer des variant streams dans des sous-répertoires.
Voici quelques exemples.
-
Crée deux variant streams hls. Le premier variant stream contient un flux vidéo au débit binaire de 1000k et un flux audio au débit binaire de 64k, le second un flux vidéo au débit binaire de 256k et un flux audio au débit binaire de 32k. Ici, deux playlists média sont créées, nommées out_0.m3u8 et out_1.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ http://example.com/live/out_%v.m3u8 -
Si vous souhaitez un texte plus explicite que des index dans les noms de résultat, vous pouvez spécifier un nom pour chaque variant, ou seulement pour certains. L'exemple suivant crée deux variant streams hls comme dans le précédent, mais ici, les deux playlists média créées sont nommées out_my_hd.m3u8 et out_my_sd.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0,name:my_hd v:1,a:1,name:my_sd" \ http://example.com/live/out_%v.m3u8 -
Crée trois variant streams hls. Le premier variant stream est un flux vidéo seul au débit binaire de 1000k, le second un flux audio seul au débit binaire de 64k, et le troisième un flux vidéo seul au débit binaire de 256k. Ici, trois playlists média sont créées, nommées out_0.m3u8, out_1.m3u8 et out_2.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k \ -map 0:v -map 0:a -map 0:v -f hls -var_stream_map "v:0 a:0 v:1" \ http://example.com/live/out_%v.m3u8 -
Crée les variant streams dans des sous-répertoires. Ici, la première playlist média est créée à http://example.com/live/vs_0/out.m3u8 et la seconde à http://example.com/live/vs_1/out.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ http://example.com/live/vs_%v/out.m3u8 -
Crée deux variant streams audio seul et deux variant streams vidéo seul. En plus de la balise
#EXT-X-STREAM-INFpour chaque variant stream dans la playlist maîtresse, la balise#EXT-X-MEDIAest également ajoutée pour les deux variant streams audio seul, et ceux-ci sont associés aux deux variant streams vidéo seul via les noms de groupe audio ’aud_low’ et ’aud_high’. Par défaut, un unique variant hls contenant tous les flux encodés est créé.ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k -b:v:1 3000k \ -map 0:a -map 0:a -map 0:v -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low a:1,agroup:aud_high v:0,agroup:aud_low v:1,agroup:aud_high" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 -
Crée deux variant streams audio seul et un variant stream vidéo seul. En plus de la balise
#EXT-X-STREAM-INFpour chaque variant stream dans la playlist maîtresse, la balise#EXT-X-MEDIAest également ajoutée pour les deux variant streams audio seul, et ceux-ci sont associés au variant stream vidéo seul via le nom de groupe audio ’aud_low’, avec un statut par défaut du groupe audio à NO ou YES. Par défaut, un unique variant hls contenant tous les flux encodés est créé.ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \ -map 0:a -map 0:a -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low,default:yes a:1,agroup:aud_low v:0,agroup:aud_low" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 -
Crée deux variant streams audio seul et un variant stream vidéo seul. En plus de la balise
#EXT-X-STREAM-INFpour chaque variant stream dans la playlist maîtresse, la balise#EXT-X-MEDIAest également ajoutée pour les deux variant streams audio seul, et ceux-ci sont associés au variant stream vidéo seul via le nom de groupe audio ’aud_low’, avec un statut par défaut du groupe audio à NO ou YES ; l'un des flux audio est nommé avec la langue ENG, l'autre avec la langue CHN. Par défaut, un unique variant hls contenant tous les flux encodés est créé.ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \ -map 0:a -map 0:a -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low,default:yes,language:ENG a:1,agroup:aud_low,language:CHN v:0,agroup:aud_low" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 -
Crée un unique variant stream. Ajoute la balise
#EXT-X-MEDIAavecTYPE=SUBTITLESdans la playlist maîtresse, avec le nom de groupe de sous-titres webvtt ’subtitle’ et un nom de sous-titre facultatif, par exemple ’English’. Assurez-vous que le fichier d'entrée comporte au moins un flux de sous-titres texte.ffmpeg -y -i input_with_subtitle.mkv \ -b:v:0 5250k -c:v h264 -pix_fmt yuv420p -profile:v main -level 4.1 \ -b:a:0 256k \ -c:s webvtt -c:a mp2 -ar 48000 -ac 2 -map 0:v -map 0:a:0 -map 0:s:0 \ -f hls -var_stream_map "v:0,a:0,s:0,sgroup:subtitle,sname:English" \ -master_pl_name master.m3u8 -t 300 -hls_time 10 -hls_init_time 4 -hls_list_size \ 10 -master_pl_publish_rate 10 -hls_flags \ delete_segments+discont_start+split_by_time ./tmp/video.m3u8
cc_stream_map cc_stream_map
Chaîne map spécifiant différents groupes de closed captions et leurs attributs. Les groupes de flux closed captions sont séparés par des espaces.
Le format de chaîne attendu ressemble à "ccgroup:
Les groupes closed captions configurés via cette option sont associés à différents variant streams en indiquant le même nom ’ccgroup’ dans la chaîne var_stream_map.
Par exemple :
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
-a53cc:0 1 -a53cc:1 1 \
-map 0:v -map 0:a -map 0:v -map 0:a -f hls \
-cc_stream_map "ccgroup:cc,instreamid:CC1,language:en ccgroup:cc,instreamid:CC2,language:sp" \
-var_stream_map "v:0,a:0,ccgroup:cc v:1,a:1,ccgroup:cc" \
-master_pl_name master.m3u8 \
http://example.com/live/out_%v.m3u8
ajoute deux balises #EXT-X-MEDIA avec TYPE=CLOSED-CAPTIONS dans la playlist maîtresse pour les INSTREAM-ID ’CC1’ et ’CC2’. Ajoute également l'attribut CLOSED-CAPTIONS avec le nom de groupe ’cc’ pour les deux variant streams de sortie.
Si var_stream_map n'est pas réglé, le premier ccgroup disponible dans cc_stream_map est associé au variant stream de sortie.
Par exemple :
ffmpeg -re -i in.ts -b:v 1000k -b:a 64k -a53cc 1 -f hls \
-cc_stream_map "ccgroup:cc,instreamid:CC1,language:en" \
-master_pl_name master.m3u8 \
http://example.com/live/out.m3u8
ceci ajoute une balise #EXT-X-MEDIA avec TYPE=CLOSED-CAPTIONS dans la playlist maîtresse, avec le nom de groupe ’cc’, la langue ’en’ (anglais) et l'INSTREAM-ID ’CC1’. Ajoute également l'attribut CLOSED-CAPTIONS avec le nom de groupe ’cc’ pour le variant stream de sortie.
master_pl_name name
Crée la playlist maîtresse HLS avec le nom donné.
Par exemple :
ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 http://example.com/live/out.m3u8
crée une playlist maîtresse HLS nommée master.m3u8, publiée à http://example.com/live/.
master_pl_publish_rate count
Republie la playlist maîtresse à intervalles réguliers, après le nombre spécifié d'intervalles de segments.
Par exemple :
ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 \
-hls_time 2 -master_pl_publish_rate 30 http://example.com/live/out.m3u8
crée une playlist maîtresse HLS nommée master.m3u8 et continue de la republier tous les 30 segments, c'est-à-dire toutes les 60 s.
http_persistent bool
Utilise des connexions HTTP persistantes. Applicable uniquement pour une sortie HTTP.
timeout timeout
Définit le délai d'expiration pour les opérations d'E/S sur la socket. Applicable uniquement pour une sortie HTTP.
ignore_io_errors bool
Ignore les erreurs d'E/S lors de l'ouverture, de l'écriture et de la suppression. Utile pour les exécutions de longue durée avec une sortie réseau.
headers headers
Définit des en-têtes HTTP personnalisés, pouvant remplacer les en-têtes par défaut intégrés. Applicable uniquement pour une sortie HTTP.
4.47 iamf
Muxer Immersive Audio Model and Formats (IAMF).
IAMF permet de fournir un contenu audio immersif destiné à la présentation sur un large éventail d'appareils, aussi bien en streaming qu'en application hors ligne. Ces applications incluent la diffusion audio en streaming sur Internet, les services de multidiffusion/diffusion, le téléchargement de fichiers, les jeux, la communication, la réalité virtuelle et augmentée, entre autres. Dans ces applications, l'audio peut être lu sur un large éventail d'appareils, par exemple des casques, des téléphones mobiles, des tablettes, des téléviseurs, des barres de son, des systèmes home cinéma et de grands écrans.
Ce format a été promu et conçu par Alliance for Open Media.
Pour plus d'informations sur ce format, voir https://aomedia.org/iamf/.
4.48 ico
Muxer de fichiers ICO.
Le format de fichier d'icônes de Microsoft (ICO) présente certaines limitations strictes à noter :
- La taille ne peut pas dépasser 256 pixels dans une dimension quelconque
- Seules les images BMP et PNG peuvent être stockées
-
Si une image BMP est utilisée, elle doit être dans l'un des pixel formats suivants :
BMP Bit Depth FFmpeg Pixel Format 1bit pal8 4bit pal8 8bit pal8 16bit rgb555le 24bit bgr24 32bit bgra -
Si une image BMP est utilisée, elle doit utiliser l'en-tête DIB BITMAPINFOHEADER
- Si une image PNG est utilisée, elle doit utiliser le pixel format rgba
4.49 ilbc
Muxer brut Internet Low Bitrate Codec (iLBC).
Il accepte un unique flux audio ‘ilbc’.
4.50 image2, image2pipe
Muxer de fichiers image.
Le muxer ‘image2’ écrit les images vidéo dans des fichiers image.
Les noms de fichiers de sortie sont indiqués par un motif, qui permet de produire une série de fichiers numérotés séquentiellement. Le motif peut contenir la chaîne "%d" ou "%0Nd" ; cette chaîne indique la position des caractères représentant une numérotation dans les noms de fichiers. Si la forme "%0Nd" est utilisée, la chaîne représentant le nombre dans chaque nom de fichier est complétée par des zéros jusqu'à N chiffres. Le caractère littéral ’%’ peut être indiqué dans le motif avec la chaîne "%%".
Si le motif contient "%d" ou "%0Nd", le premier nom de fichier de la liste de fichiers indiquée contiendra le nombre 1, tous les nombres suivants seront séquentiels.
Le motif peut contenir un suffixe utilisé pour déterminer automatiquement le format des fichiers image à écrire.
Par exemple, le motif "img-%03d.bmp" indiquera une séquence de noms de fichiers de la forme img-001.bmp, img-002.bmp, ..., img-010.bmp, etc. Le motif "img%%-%d.jpg" indiquera une séquence de noms de fichiers de la forme img%-1.jpg, img%-2.jpg, ..., img%-10.jpg, etc.
Le muxer image prend en charge le format de fichier image .Y.U.V. Ce format est particulier en ce que chaque image vidéo se compose de trois fichiers, un pour chacune des composantes YUV420P. Pour lire ou écrire ce format de fichier image, indiquez le nom du fichier ’.Y’. Le muxer ouvrira automatiquement les fichiers ’.U’ et ’.V’ requis.
Le muxer ‘image2pipe’ accepte les mêmes options que le muxer ‘image2’, mais ignore la vérification et l'expansion du motif, car il est censé écrire sur la sortie de la commande plutôt que dans un fichier réellement stocké.
4.50.1 Options
frame_pts bool
Si la valeur est 1, complète le nom de fichier avec le PTS (presentation timestamp) du paquet. La valeur par défaut est 0.
start_number count
Démarre la séquence à partir du nombre indiqué. La valeur par défaut est 1.
update bool
Si la valeur est 1, le nom de fichier sera toujours interprété comme un simple nom de fichier, pas comme un motif, et le fichier correspondant sera continuellement écrasé par les nouvelles images. La valeur par défaut est 0.
strftime bool
Si la valeur est 1, complète le nom de fichier avec la date et l'heure fournies par strftime(). La valeur par défaut est 0.
atomic_writing bool
Écrit la sortie dans un fichier temporaire, qui est renommé vers le nom de fichier cible une fois l'écriture terminée. Désactivé par défaut.
protocol_opts options_list
Définit les options de protocole sous forme d'une liste de paramètres key=value séparés par le signe deux-points. Les valeurs contenant le caractère spécial : doivent être échappées.
4.50.2 Exemples
- Utilisez
ffmpegpour créer une séquence de fichiers img-001.jpeg, img-002.jpeg, ..., en prenant une image chaque seconde depuis la vidéo d'entrée :ffmpeg -i in.avi -fps_mode cfr -r 1 -f image2 'img-%03d.jpeg'
Notez qu'avec ffmpeg, si le format n'est pas indiqué avec l'option -f et que le nom de fichier de sortie précise un format de fichier image, le muxer image2 est sélectionné automatiquement ; la commande précédente peut donc s'écrire :
ffmpeg -i in.avi -fps_mode cfr -r 1 'img-%03d.jpeg'
Notez également que le motif ne doit pas nécessairement contenir "%d" ou "%0Nd" ; par exemple, pour créer un unique fichier image img.jpeg à partir du début de la vidéo d'entrée, vous pouvez utiliser la commande :
ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
- L'option strftime permet de compléter le nom de fichier avec la date et l'heure. Consultez la documentation de la fonction
strftime()pour la syntaxe.
Pour générer des fichiers image à partir du motif strftime() "%Y-%m-%d_%H-%M-%S", la commande ffmpeg suivante peut être utilisée :
ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
-
Définissez le nom du fichier avec le PTS de l'image courante :
ffmpeg -f v4l2 -r 1 -i /dev/video0 -copyts -f image2 -frame_pts true %d.jpg -
Publiez le contenu de votre bureau directement sur un serveur WebDAV chaque seconde :
ffmpeg -f x11grab -framerate 1 -i :0.0 -q:v 6 -update 1 -protocol_opts method=PUT http://example.com/desktop.jpg
4.51 ircam
Muxer de format Berkeley / IRCAM / CARL Sound Filesystem (BICSF).
Le format Berkeley/IRCAM/CARL Sound, développé dans les années 1980, résulte de la fusion de plusieurs formats et systèmes de fichiers sonores antérieurs, notamment le système csound développé par le Dr Gareth Loy au Computer Audio Research Lab (CARL) de l'UC San Diego, le système de fichiers sonores IRCAM développé par Rob Gross et Dan Timis à l'Institut de Recherche et Coordination Acoustique/Musique à Paris, et le Berkeley Fast Filesystem.
Il a été développé initialement dans le cadre du Berkeley/IRCAM/CARL Sound Filesystem, une suite de programmes conçue pour mettre en œuvre un système de fichiers pour les applications audio fonctionnant sous Berkeley UNIX. Il était particulièrement populaire dans les centres de recherche musicale universitaires et a été utilisé à plusieurs reprises pour la création de premières compositions générées par ordinateur.
Ce muxer accepte un unique flux audio contenant des données PCM.
4.52 ivf
Muxer On2 IVF.
IVF a été développé par On2 Technologies (anciennement Duck Corporation) pour stocker des codecs développés en interne.
Ce muxer accepte un unique flux vidéo ‘vp8’, ‘vp9’ ou ‘av1’.
4.53 jacosub
Muxer de format de sous-titres JACOsub.
Ce muxer accepte un unique flux de sous-titres ‘jacosub’.
Pour plus d'informations sur ce format, voir http://unicorn.us.com/jacosub/jscripts.html.
4.54 kvag
Muxer Simon & Schuster Interactive VAG.
Ce container VAG personnalisé est utilisé par certains jeux Simon & Schuster Interactive tels que "Real War", et "Real War: Rogue States".
Ce muxer accepte un unique flux audio ‘adpcm_ima_ssi’.
4.55 lc3
Bluetooth SIG Low Complexity Communication Codec audio (LC3), ou ETSI TS 103 634 Low Complexity Communication Codec plus (LC3plus).
Ce muxer accepte un unique flux audio ‘lc3’.
4.56 lrc
Muxer de format de fichiers de paroles LRC.
LRC (abréviation de LyRiCs) est un format de fichier informatique qui synchronise les paroles d'une chanson avec un fichier audio, comme MP3, Vorbis ou MIDI.
Ce muxer accepte un unique flux de sous-titres ‘subrip’ ou ‘text’.
4.56.1 Options
precision number
Définit le nombre de chiffres décimaux utilisés pour la partie fractionnaire (sub-seconde) des horodatages. La plage va de 1 à 6. La valeur par défaut est 2, c'est-à-dire des centisecondes.
4.56.2 Métadonnées
Les balises de métadonnées suivantes sont converties vers la métadonnée correspondante du format :
title album artist author creator encoder encoder_version
Si ‘encoder_version’ n'est pas explicitement défini, il est automatiquement défini à la version de libavformat.
4.57 matroska
Muxer de container Matroska.
Ce muxer met en œuvre les spécifications des containers matroska et webm.
4.57.1 Métadonnées
Les réglages de métadonnées reconnus par ce muxer sont :
title
Définit le nom de titre attribué à une piste unique. Ceci est associé à l'élément FileDescription pour un flux écrit en tant que pièce jointe.
language
Indique la langue de la piste sous la forme des langues Matroska.
La langue peut être exprimée soit sous la forme bibliographique ISO-639-2 (ISO 639-2/B) à 3 lettres (comme "fre" pour le français), soit sous la forme d'un code de langue combiné à un code de pays pour des spécificités linguistiques (comme "fre-ca" pour le français canadien).
stereo_mode
Définit la disposition vidéo stéréo 3D des deux vues au sein d'une seule piste vidéo.
Les valeurs suivantes sont reconnues :
‘mono’
la vidéo n'est pas en stéréo
‘left_right’
Les deux vues sont disposées côte à côte, la vue de l'œil gauche est à gauche
‘bottom_top’
Les deux vues sont disposées en orientation haut-bas, la vue de l'œil gauche est en bas
‘top_bottom’
Les deux vues sont disposées en orientation haut-bas, la vue de l'œil gauche est en haut
‘checkerboard_rl’
Chaque vue est disposée selon un motif entrelacé en damier, la vue de l'œil gauche étant première
‘checkerboard_lr’
Chaque vue est disposée selon un motif entrelacé en damier, la vue de l'œil droit étant première
‘row_interleaved_rl’
Chaque vue est constituée par un entrelacement par ligne, la vue de l'œil droit forme la première ligne
‘row_interleaved_lr’
Chaque vue est constituée par un entrelacement par ligne, la vue de l'œil gauche forme la première ligne
‘col_interleaved_rl’
Les deux vues sont disposées selon un entrelacement par colonne, la vue de l'œil droit forme la première colonne
‘col_interleaved_lr’
Les deux vues sont disposées selon un entrelacement par colonne, la vue de l'œil gauche forme la première colonne
‘anaglyph_cyan_red’
Toutes les images sont au format anaglyphe, visibles à travers des filtres rouge-cyan
‘right_left’
Les deux vues sont disposées côte à côte, la vue de l'œil droit est à gauche
‘anaglyph_green_magenta’
Toutes les images sont au format anaglyphe, visibles à travers des filtres vert-magenta
‘block_lr’
Les deux yeux sont entrelacés en un seul Block, la vue de l'œil gauche est première
‘block_rl’
Les deux yeux sont entrelacés en un seul Block, la vue de l'œil droit est première
Par exemple, un clip WebM 3D peut être créé avec la ligne de commande suivante :
ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
4.57.2 Options
reserve_index_space size
Par défaut, ce muxer écrit l'index de recherche (appelé cues en terminologie Matroska) à la fin du fichier, car il ne peut pas savoir à l'avance combien d'espace laisser pour l'index au début du fichier. Cependant, pour certains cas d'usage – par exemple le streaming où la recherche est possible mais lente – il est utile de placer l'index au début du fichier.
Si cette option est définie à une valeur non nulle, le muxer réserve size octets d'espace dans l'en-tête du fichier, puis tente d'y écrire les cues une fois le muxing terminé. Si l'espace réservé ne suffit pas, aucun Cues ne sera écrit, le fichier sera finalisé et l'écriture du trailer renverra une erreur. Une taille sûre pour la plupart des cas d'usage est d'environ 50 ko par heure de vidéo.
Notez que les cues ne sont écrits que si la sortie est positionnable ; cette option n'a aucun effet sinon.
cues_to_front bool
Si activée, le muxer écrit l'index au début du fichier en décalant les données principales si nécessaire. Ceci peut être combiné avec reserve_index_space, auquel cas les données ne sont décalées que si l'espace initialement réservé s'avère insuffisant.
Cette option est ignorée si la sortie n'est pas positionnable.
cluster_size_limit size
Stocke au maximum le nombre d'octets indiqué dans un cluster.
Si non indiquée, la limite est définie automatiquement à une valeur fixe raisonnable codée en dur.
cluster_time_limit duration
Stocke au maximum le nombre de millisecondes indiqué dans un cluster.
Si non indiquée, la limite est définie automatiquement à une valeur fixe raisonnable codée en dur.
dash bool
Crée un fichier WebM conforme à la spécification WebM DASH. Par défaut, elle est définie à false.
dash_track_number index
Numéro de piste pour le flux DASH. Par défaut, il est défini à 1.
live bool
Écrit les fichiers en supposant qu'il s'agit d'un flux en direct. Par défaut, elle est définie à false.
allow_raw_vfw bool
Autorise le mode VFW brut. Par défaut, elle est définie à false.
flipped_raw_rgb bool
Si définie à true, stocke une hauteur positive pour les bitmaps RGB bruts, ce qui indique que le bitmap est stocké de bas en haut. Notez que cette option ne retourne pas le bitmap, ce qui doit être fait manuellement au préalable, par exemple avec le filtre ‘vflip’. Par défaut, elle est à false et indique que le bitmap est stocké de haut en bas.
write_crc32 bool
Écrit un élément CRC32 dans chaque élément de niveau 1. Par défaut, elle est définie à true. Cette option est ignorée pour WebM.
default_mode mode
Contrôle comment le FlagDefault des pistes de sortie est défini. Cela détermine les pistes que les lecteurs doivent lire par défaut. Le mode par défaut est ‘passthrough’.
‘infer’
Chaque piste dont la disposition est default aura le FlagDefault défini. De plus, pour chaque type de piste (audio, vidéo ou sous-titres), si aucune piste de ce type n'a de disposition default, la première piste de ce type sera marquée comme default (si elle existe). Ceci garantit que l'indicateur default est défini de façon judicieuse, même si l'entrée provient de containers dépourvus de la notion de piste par défaut.
‘infer_no_subs’
Ce mode est identique à infer, si ce n'est que si aucune piste de sous-titres avec une disposition default n'existe, aucune piste de sous-titres n'est marquée comme default.
‘passthrough’
Dans ce mode, le FlagDefault est défini si et seulement si l'indicateur AV_DISPOSITION_DEFAULT est défini dans la disposition du flux correspondant.
4.58 md5
Format de test MD5.
Ceci est une variante du muxer hash. Contrairement à ce muxer, il utilise par défaut la fonction de hachage MD5.
Voir aussi les muxers hash et framemd5.
4.58.1 Exemples
-
Pour calculer le hachage MD5 de l'entrée convertie en audio et vidéo brut, et le stocker dans le fichier out.md5 :
ffmpeg -i INPUT -f md5 out.md5 -
Pour afficher le hachage MD5 sur stdout :
ffmpeg -i INPUT -f md5 -
4.59 mcc
Muxer pour les fichiers MacCaption MCC, prenant en charge les versions MCC 1.0 et 2.0. Les fichiers MCC stockent des données VANC, pouvant inclure des sous-titres codés (EIA-608 et CEA-708), un timecode annexe, des données pan-scan, etc.
4.59.1 Options
Les options du muxer sont :
override_time_code_rate
Remplace la valeur Time Code Rate dans la sortie. Par défaut, tente de la déduire du time_base du flux, ce qui ne fonctionne souvent pas.
use_u_alias
Utilise l'alias U pour la séquence d'octets E1h 00h 00h 00h. Désactivé par défaut, car certains fichiers .mcc ne s'accordent pas sur le nombre d'octets zéro (2 ou 3).
mcc_version
La version du format de fichier MCC. Doit être 1 ou 2, par défaut 2.
creation_program
Le programme de création. Par défaut, cette version de FFmpeg.
creation_time
La date de création. Par défaut, l'heure actuelle.
4.59.2 Exemples
-
Extrait un flux MXF
SMPTE_436M_ANCd'un fichier MXF et l'écrit dans un fichier MCC à 30 fps.ffmpeg -i input.mxf -c copy -map 0:d -override_time_code_rate 30 out.mcc -
Extrait les sous-titres codés EIA-608/CTA-708 d'un fichier .mp4 et les écrit dans un fichier MCC à 29.97 fps.
ffmpeg -f lavfi -i "movie=input.mp4[out+subcc]" -c:s copy -map 0:s -override_time_code_rate 30000/1001 out.mcc
4.60 microdvd
Muxer de format de sous-titres MicroDVD.
Ce muxer accepte un unique flux de sous-titres ‘microdvd’.
4.61 mmf
Muxer de format Synthetic music Mobile Application Format (SMAF).
SMAF est un format de données musicales défini par Yamaha pour les appareils électroniques portables, tels que les téléphones mobiles et les assistants numériques personnels.
Ce muxer accepte un unique flux audio ‘adpcm_yamaha’.
4.62 mp3
Le muxer MP3 écrit un flux MP3 brut avec les fonctionnalités optionnelles suivantes :
- Un en-tête de métadonnées ID3v2 au début (activé par défaut). Les versions 2.3 et 2.4 sont prises en charge, l'option privée
id3v2_versioncontrôle celle utilisée (3 ou 4). Définirid3v2_versionà 0 désactive complètement l'en-tête ID3v2.
Le muxer prend en charge l'écriture d'images jointes (frames APIC) dans l'en-tête ID3v2. Les images sont fournies au muxer sous la forme d'un flux vidéo avec un unique paquet. Il peut y avoir n'importe quel nombre de ces flux, chacun correspondant à un unique frame APIC. Les balises de métadonnées de flux title et comment sont associées respectivement à la description et au type d'image APIC. Voir http://id3.org/id3v2.4.0-frames pour les types d'images autorisés.
Notez que les frames APIC doivent être écrits au début ; le muxer doit donc mettre en mémoire tampon les images audio jusqu'à ce qu'il ait reçu toutes les images à joindre. Il est donc conseillé de fournir les images le plus tôt possible afin d'éviter une mise en tampon excessive.
- Un frame Xing/LAME juste après l'en-tête ID3v2 (si présent). Il est activé par défaut, mais n'est écrit que si la sortie est positionnable. L'option privée
write_xingpermet de le désactiver. Le frame contient diverses informations pouvant être utiles au decoder, comme la durée audio ou le délai d'encoder. - Une étiquette ID3v1 héritée à la fin du fichier (désactivée par défaut). Elle peut être activée avec l'option privée
write_id3v1, mais ses capacités étant très limitées, son usage n'est pas recommandé.
Exemples :
Écrire un mp3 avec un en-tête ID3v2.3 et un pied de page ID3v1 :
ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
Pour attacher une image à un fichier mp3, sélectionnez à la fois le flux audio et le flux d'image avec map :
ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
Écrire un MP3 "clean" sans fonctionnalité supplémentaire :
ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3
4.63 mpegts
Muxer de flux de transport MPEG.
Ce muxer met en œuvre ISO 13818-1 et une partie d'ETSI EN 300 468.
Les réglages de métadonnées reconnus dans le muxer mpegts sont service_provider et service_name. S'ils ne sont pas définis, la valeur par défaut de service_provider est ‘FFmpeg’ et celle de service_name est ‘Service01’.
4.63.1 Options
Les options du muxer sont :
mpegts_transport_stream_id integer
Définit le ‘transport_stream_id’. Ceci identifie un transpondeur en DVB. Par défaut 0x0001.
mpegts_original_network_id integer
Définit l'‘original_network_id’. Il s'agit de l'identifiant unique d'un réseau en DVB. Son usage principal est l'identification unique d'un service via le chemin ‘Original_Network_ID, Transport_Stream_ID’. Par défaut 0xff01.
mpegts_service_id integer
Définit le ‘service_id’, également appelé program en DVB. Par défaut 0x0001.
mpegts_service_type integer
Définit le ‘service_type’ du programme. Par défaut digital_tv. Accepte les valeurs suivantes :
‘hex_value’
Toute valeur hexadécimale comprise entre 0x01 et 0xff, comme défini dans ETSI 300 468.
‘digital_tv’
Service de télévision numérique.
‘digital_radio’
Service de radio numérique.
‘teletext’
Service de télétexte.
‘advanced_codec_digital_radio’
Service de radio numérique à codec avancé.
‘mpeg2_digital_hdtv’
Service de télévision haute définition numérique MPEG2.
‘advanced_codec_digital_sdtv’
Service de télévision définition standard numérique à codec avancé.
‘advanced_codec_digital_hdtv’
Service de télévision haute définition numérique à codec avancé.
‘hevc_digital_hdtv’
Service de télévision numérique HEVC.
mpegts_pmt_start_pid integer
Définit le premier PID pour les PMT. Par défaut 0x1000, minimum 0x0020, maximum 0x1ffa. Cette option n'a aucun effet en mode m2ts, où le PID du PMT est fixé à 0x0100.
mpegts_start_pid integer
Définit le premier PID pour les flux élémentaires. Par défaut 0x0100, minimum 0x0020, maximum 0x1ffa. Cette option n'a aucun effet en mode m2ts, où les PID des flux élémentaires sont fixés.
mpegts_m2ts_mode boolean
Active le mode m2ts si défini à 1. La valeur par défaut est -1, ce qui désactive le mode m2ts.
muxrate integer
Définit un muxrate constant. Par défaut VBR.
pes_payload_size integer
Définit la charge utile PES minimale en octets. Par défaut 2930.
mpegts_flags flags
Définit les indicateurs mpegts. Accepte les valeurs suivantes :
‘resend_headers’
Réémet PAT/PMT avant d'écrire le paquet suivant.
‘latm’
Utilise la mise en paquets LATM pour l'AAC.
‘pat_pmt_at_frames’
Réémet PAT et PMT à chaque image vidéo.
‘system_b’
Se conforme au système B (DVB) plutôt qu'au système A (ATSC).
‘initial_discontinuity’
Marque le paquet initial de chaque flux comme une discontinuité.
‘nit’
Émet la table NIT.
‘omit_rai’
Désactive l'écriture de l'indicateur d'accès aléatoire.
mpegts_copyts boolean
Préserve les horodatages d'origine si la valeur est définie à 1. La valeur par défaut est -1, ce qui provoque un décalage des horodatages pour qu'ils démarrent à 0.
omit_video_pes_length boolean
Omet la longueur de paquet PES pour les paquets vidéo. Par défaut 1 (true).
pcr_period integer
Remplace le délai de retransmission PCR par défaut, en millisecondes. Par défaut -1, ce qui signifie que l'intervalle PCR est déterminé automatiquement : 20 ms pour les flux CBR, le plus grand multiple de la durée d'image inférieur à 100 ms pour les flux VBR.
pat_period duration
Délai maximal en secondes entre les tables PAT/PMT. Par défaut 0.1.
sdt_period duration
Délai maximal en secondes entre les tables SDT. Par défaut 0.5.
nit_period duration
Délai maximal en secondes entre les tables NIT. Par défaut 0.5.
tables_version integer
Définit la version des tables PAT, PMT, SDT et NIT (par défaut 0, valeurs valides de 0 à 31 inclus). Cette option permet de mettre à jour la structure du flux afin que le lecteur standard puisse détecter le changement. Pour cela, rouvrez le AVFormatContext de sortie (en cas d'usage de l'API) ou redémarrez l'instance ffmpeg, en changeant cycliquement la valeur de tables_version :
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
...
ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
...
4.63.2 Exemple
ffmpeg -i file.mpg -c copy \
-mpegts_original_network_id 0x1122 \
-mpegts_transport_stream_id 0x3344 \
-mpegts_service_id 0x5566 \
-mpegts_pmt_start_pid 0x1500 \
-mpegts_start_pid 0x150 \
-metadata service_provider="Some provider" \
-metadata service_name="Some Channel" \
out.ts
4.64 mxf, mxf_d10, mxf_opatom
Muxer MXF.
4.64.1 Options
Les options du muxer sont :
store_user_comments bool
Définit si les commentaires utilisateur doivent être stockés, si disponibles, ou jamais. IRT D-10 n'autorise pas les commentaires utilisateur. Par défaut, ils sont donc écrits pour mxf et mxf_opatom mais pas pour mxf_d10
4.65 null
Muxer null.
Ce muxer ne génère aucun fichier de sortie ; il est principalement utile à des fins de test ou de benchmark.
Par exemple, pour évaluer les performances du décodage avec ffmpeg, vous pouvez utiliser la commande :
ffmpeg -benchmark -i INPUT -f null out.null
Notez que la commande ci-dessus ne lit ni n'écrit le fichier out.null, mais indiquer le fichier de sortie est requis par la syntaxe de ffmpeg.
Vous pouvez également écrire la commande ainsi :
ffmpeg -benchmark -i INPUT -f null -
4.66 nut
-syncpoints flags
Modifie l'usage du syncpoint dans nut :
default utilise les aides de recherche habituelles à faible surcharge. none n'utilise pas du tout les syncpoints, ce qui réduit la surcharge mais rend le flux non positionnable ;
L'usage de cette option n'est pas recommandé, car les fichiers résultants sont très sensibles à la corruption et la recherche n'est plus possible. De plus, en général, la surcharge liée aux syncpoints est négligeable. Notez que -write_index 0 permet de désactiver toutes les tables de données croissantes, ce qui permet de muxer des flux infinis avec une mémoire limitée et sans ces inconvénients.
timestamped étend le syncpoint avec un champ wallclock.
Les indicateurs none et timestamped sont expérimentaux.
-write_index bool
Écrit l'index à la fin ; par défaut, un index est écrit.
ffmpeg -i INPUT -f_strict experimental -syncpoints none - | processor
4.67 ogg
Muxer de container Ogg.
-page_duration duration
Durée de page préférée, en microsecondes. Le muxer tente de créer des pages d'une durée d'environ duration microsecondes. Ceci permet à l'utilisateur de trouver un compromis entre la granularité de recherche et la surcharge du container. Par défaut, 1 seconde. Une valeur de 0 remplit tous les segments, rendant les pages aussi grandes que possible. Une valeur de 1 utilise en pratique 1 paquet par page dans la plupart des cas, offrant une faible granularité de recherche au prix d'une surcharge de container supplémentaire.
-serial_offset value
Valeur de départ à partir de laquelle définir le numéro de série des flux. La définir à des valeurs différentes et suffisamment grandes garantit que les fichiers ogg produits peuvent être chaînés en toute sécurité.
4.68 pdv
Muxer Playdate Video.
Ce muxer écrit le container vidéo Playdate utilisé par le SDK Playdate de Panic. Il requiert une sortie positionnable et un unique flux vidéo PDV.
max_frames frames
Réserve de l'espace pour au maximum frames images vidéo dans l'en-tête du fichier. Cette option est obligatoire.
4.69 rcwt
RCWT (Raw Captions With Time) est un format natif de ccextractor, un outil open source couramment utilisé pour traiter les sources de sous-titres codés 608/708 (CC). Il permet d'archiver le bitstream CC d'origine extrait et de produire un fichier source pour un traitement ou une conversion ultérieurs. Ce format permet l'interopérabilité entre ccextractor et FFmpeg, est simple à analyser et peut être utilisé pour créer une sauvegarde de la présentation CC.
Ce muxer met en œuvre la spécification en vigueur en mars 2024, stable et inchangée depuis avril 2014.
Ce muxer présente certaines nuances par rapport à la façon dont ccextractor produit du RCWT. Aucun problème de compatibilité n'a été observé jusqu'à présent lors du traitement de la sortie avec ccextractor, mais les résultats peuvent varier et les sorties ne seront pas identiques bit à bit.
Une spécification libre de RCWT est disponible ici : https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT
4.69.1 Exemples
- Extraire les sous-titres codés vers RCWT avec lavfi :
ffmpeg -f lavfi -i "movie=INPUT.mkv[out+subcc]" -map 0:s:0 -c:s copy -f rcwt CC.rcwt.bin
4.70 segment, stream_segment, ssegment
Segmenteur de flux basique.
Ce muxer écrit les flux dans plusieurs fichiers distincts de durée presque fixe. Le motif du nom de fichier de sortie peut être défini de façon similaire à image2, ou en utilisant un modèle strftime si l'option strftime est activée.
stream_segment est une variante du muxer utilisée pour écrire vers des formats de sortie en streaming, c'est-à-dire ne nécessitant pas d'en-têtes globaux, et recommandée pour la sortie vers, par exemple, des segments de flux de transport MPEG. ssegment est un alias plus court pour stream_segment.
Chaque segment commence par une keyframe du flux de référence sélectionné, définie via l'option reference_stream.
Notez que pour obtenir un découpage précis d'un fichier vidéo, les keyframes d'entrée doivent correspondre exactement aux instants de découpage attendus par le segmenteur, sinon le muxer segment démarrera le nouveau segment à la keyframe trouvée juste après l'instant de début indiqué.
Le muxer segment fonctionne mieux avec une vidéo à fréquence d'images constante unique.
En option, il peut générer une liste des segments créés, en définissant l'option segment_list. Le type de liste est indiqué par l'option segment_list_type. Les noms de fichiers des entrées de la liste de segments sont par défaut définis au nom de base des fichiers de segment correspondants.
Voir aussi le muxer hls, qui fournit une implémentation plus spécifique pour la segmentation HLS.
4.70.1 Options
Le muxer segment prend en charge les options suivantes :
increment_tc 1|0
si définie à 1, incrémente le timecode entre chaque segment. Si cette option est sélectionnée, l'entrée doit comporter un timecode dans le premier flux vidéo. Valeur par défaut 0.
reference_stream specifier
Définit le flux de référence, indiqué par la chaîne specifier. Si specifier est défini à auto, la référence est choisie automatiquement. Sinon, il doit s'agir d'un spécificateur de flux (voir le chapitre “Spécificateurs de flux” du manuel ffmpeg) indiquant le flux de référence. La valeur par défaut est auto.
segment_format format
Remplace le format de container interne ; par défaut, il est déduit de l'extension du nom de fichier.
segment_format_options options_list
Définit les options de format de sortie sous forme d'une liste de paramètres key=value séparés par :. Les valeurs contenant le caractère spécial : doivent être échappées.
segment_list name
Génère également un fichier de liste nommé name. Si non indiqué, aucun fichier de liste n'est généré.
segment_list_flags flags
Définit les indicateurs affectant la génération de la liste de segments.
Prend pour l'instant en charge les indicateurs suivants :
‘cache’
Autorise la mise en cache (n'affecte que les fichiers de liste M3U8).
‘live’
Autorise la génération de fichiers adaptée au direct.
segment_list_size size
Met à jour le fichier de liste pour qu'il contienne au maximum size segments. Si 0, le fichier de liste contiendra tous les segments. Valeur par défaut 0.
segment_list_entry_prefix prefix
Ajoute prefix devant chaque entrée. Utile pour générer des chemins absolus. Par défaut, aucun préfixe n'est appliqué.
segment_list_type type
Sélectionne le format de listing.
Les valeurs suivantes sont reconnues :
‘flat’
Génère une liste plate des segments créés, un segment par ligne.
‘csv, ext’
Génère une liste des segments créés, un segment par ligne, chaque ligne correspondant au format (valeurs séparées par des virgules) :
segment_filename,segment_start_time,segment_end_time
segment_filename est le nom du fichier de sortie généré par le muxer selon le motif indiqué. L'échappement CSV (selon la RFC4180) est appliqué si nécessaire.
segment_start_time et segment_end_time indiquent les instants de début et de fin du segment, exprimés en secondes.
Un fichier de liste avec le suffixe ".csv" ou ".ext" sélectionne automatiquement ce format.
‘ext’ est obsolète au profit de ‘csv’.
‘ffconcat’
Génère un fichier ffconcat pour les segments créés. Le fichier résultant peut être lu à l'aide du demuxer concat de FFmpeg.
Un fichier de liste avec le suffixe ".ffcat" ou ".ffconcat" sélectionne automatiquement ce format.
‘m3u8’
Génère un fichier M3U8 étendu, version 3, conforme à http://tools.ietf.org/id/draft-pantos-http-live-streaming.
Un fichier de liste avec le suffixe ".m3u8" sélectionne automatiquement ce format.
Si non indiqué, le type est déduit du suffixe du nom du fichier de liste.
segment_time time
Définit la durée du segment à time ; la valeur doit être une spécification de durée. Valeur par défaut "2". Voir aussi l'option segment_times.
Notez que le découpage peut manquer de précision, sauf si vous forcez les keyframes du flux de référence à l'instant indiqué. Voir la remarque introductive et les exemples ci-dessous.
min_seg_duration time
Définit la durée minimale du segment à time ; la valeur doit être une spécification de durée. Ceci empêche le muxer de terminer les segments à une durée inférieure à cette valeur. Effectif uniquement avec segment_time. Valeur par défaut "0".
segment_atclocktime 1|0
Si définie à "1", découpe à intervalles réguliers de temps d'horloge à partir de 00:00. La valeur indiquée dans segment_time définit la longueur de l'intervalle de découpage.
Par exemple, avec segment_time défini à "900", il devient possible de créer des fichiers à 12:00, 12:15, 12:30, etc.
Valeur par défaut "0".
segment_clocktime_offset duration
Retarde les instants de découpage des segments de la durée indiquée, lors de l'utilisation de segment_atclocktime.
Par exemple, avec segment_time défini à "900" et segment_clocktime_offset défini à "300", il devient possible de créer des fichiers à 12:05, 12:20, 12:35, etc.
Valeur par défaut "0".
segment_clocktime_wrap_duration duration
Force le segmenteur à ne démarrer un nouveau segment que si un paquet atteint le muxer dans la durée indiquée après l'instant d'horloge de segmentation. Ceci permet de rendre le segmenteur plus résistant aux sauts arrière de l'heure locale, comme les secondes intercalaires ou le passage de l'heure d'été à l'heure normale.
Par défaut, la durée maximale possible, ce qui signifie démarrer un nouveau segment indépendamment du temps écoulé depuis le dernier instant d'horloge.
segment_time_delta delta
Indique la précision temporelle utilisée pour choisir l'instant de début d'un segment, exprimée sous forme d'une spécification de durée. Valeur par défaut "0".
Lorsque delta est indiqué, une keyframe démarre un nouveau segment si son PTS satisfait la relation :
PTS >= start_time - time_delta
Cette option est utile pour découper un contenu vidéo, toujours découpé aux limites de GOP, dans le cas où une keyframe est trouvée juste avant l'instant de découpage indiqué.
Elle peut notamment être utilisée en combinaison avec l'option ffmpeg force_key_frames. Les instants de keyframe indiqués par force_key_frames peuvent ne pas être définis avec précision en raison de problèmes d'arrondi, avec pour conséquence qu'un instant de keyframe peut se retrouver défini juste avant l'instant indiqué. Pour des vidéos à fréquence d'images constante, une valeur de 1/(2*frame_rate) permet de corriger le pire cas d'écart entre l'instant indiqué et l'instant défini par force_key_frames.
segment_times times
Indique une liste de points de découpage. times contient une liste de spécifications de durée séparées par des virgules, par ordre croissant. Voir aussi l'option segment_time.
segment_frames frames
Indique une liste de numéros d'image vidéo de découpage. frames contient une liste de nombres entiers séparés par des virgules, par ordre croissant.
Cette option indique de démarrer un nouveau segment chaque fois qu'une keyframe du flux de référence est trouvée et que le numéro séquentiel (à partir de 0) de l'image est supérieur ou égal à la valeur suivante de la liste.
segment_wrap limit
Fait boucler l'index de segment une fois qu'il atteint limit.
segment_start_number number
Définit le numéro de séquence du premier segment. Par défaut 0.
strftime 1|0
Utilise la fonction strftime pour définir le nom des nouveaux segments à écrire. Si cette option est sélectionnée, le nom du segment de sortie doit contenir un modèle de fonction strftime. Valeur par défaut 0.
break_non_keyframes 1|0
Si activée, permet aux segments de démarrer sur des images autres que des keyframes. Ceci améliore le comportement sur certains lecteurs lorsque l'intervalle entre les keyframes est irrégulier, mais peut le dégrader sur d'autres, et peut provoquer certaines anomalies pendant la recherche. Par défaut 0.
reset_timestamps 1|0
Réinitialise les horodatages au début de chaque segment, de sorte que chaque segment démarre avec des horodatages proches de zéro. Ceci vise à faciliter la lecture des segments générés. Peut ne pas fonctionner avec certaines combinaisons de muxers/codecs. Par défaut 0.
initial_offset offset
Indique un décalage d'horodatage à appliquer aux horodatages des paquets de sortie. L'argument doit être une spécification de durée, et vaut 0 par défaut.
write_empty_segments 1|0
Si activée, écrit un segment vide s'il n'y a aucun paquet pendant la période que couvrirait normalement un segment. Sinon, le segment sera rempli avec le paquet suivant écrit. Par défaut 0.
Veillez à exiger un GOP fermé lors de l'encodage et à définir la taille de GOP pour respecter la contrainte de durée de votre segment.
4.70.2 Exemples
-
Remultiplexe le contenu du fichier in.mkv en une liste de segments out-000.nut, out-001.nut, etc., et écrit la liste des segments générés dans out.list :
ffmpeg -i in.mkv -codec hevc -flags +cgop -g 60 -map 0 -f segment -segment_list out.list out%03d.nut -
Segmente l'entrée et définit les options de format de sortie pour les segments de sortie :
ffmpeg -i in.mkv -f segment -segment_time 10 -segment_format_options movflags=+faststart out%03d.mp4 -
Segmente le fichier d'entrée selon les points de découpe spécifiés par l'option segment_times :
ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut -
Utilise l'option force_key_frames de
ffmpegpour forcer des keyframes dans l'entrée à l'emplacement indiqué, avec l'option de segmentation segment_time_delta pour tenir compte des arrondis éventuels lors du réglage des instants de keyframe.ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \ -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
Pour forcer des keyframes sur le fichier d'entrée, un transcodage est nécessaire.
-
Segmente le fichier d'entrée en le découpant selon la séquence de numéros d'images spécifiée avec l'option segment_frames :
ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut -
Convertit in.mkv en segments TS à l'aide des encoders
libx264etaac:ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a aac -f ssegment -segment_list out.list out%03d.ts -
Segmente le fichier d'entrée et crée une playlist live M3U8 (utilisable comme source HLS en direct) :
ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \ -segment_list_flags +live -segment_time 10 out%03d.mkv
4.71 smoothstreaming
Le muxer Smooth Streaming génère un ensemble de fichiers (manifeste, chunks) adapté à une diffusion par un serveur web classique.
window_size
Spécifie le nombre de fragments conservés dans le manifeste. Par défaut 0 (tout conserver).
extra_window_size
Spécifie le nombre de fragments conservés hors du manifeste avant suppression du disque. Par défaut 5.
lookahead_count
Spécifie le nombre de fragments d'anticipation. Par défaut 2.
min_frag_duration
Spécifie la durée minimale d'un fragment (en microsecondes). Par défaut 5000000.
remove_at_exit
Spécifie s'il faut supprimer tous les fragments une fois terminé. Par défaut 0 (ne pas supprimer).
4.72 streamhash
Format de test de hachage par flux.
Ce muxer calcule et affiche un hachage cryptographique de toutes les images d'entrée, flux par flux. Cela permet de vérifier une égalité sans avoir à effectuer une comparaison binaire complète.
Par défaut, les images audio sont converties en audio brut signé 16 bits et les images vidéo en vidéo brute avant le calcul du hachage, mais la sortie de conversions explicites vers d'autres codecs peut également être utilisée. Les horodatages sont ignorés. Il utilise par défaut la fonction de hachage cryptographique SHA-256, mais prend en charge plusieurs autres algorithmes.
La sortie du muxer se compose d'une ligne par flux de la forme : streamindex,streamtype,algo=hash, où streamindex est l'index du flux mappé, streamtype est un caractère unique indiquant le type de flux, algo est une courte chaîne représentant la fonction de hachage utilisée, et hash est un nombre hexadécimal représentant le hachage calculé.
hash algorithm
Utilise la fonction de hachage cryptographique spécifiée par la chaîne algorithm. Les valeurs prises en charge incluent MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (par défaut), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 et adler32.
4.72.1 Exemples
Pour calculer le hachage SHA-256 de l'entrée convertie en audio et vidéo bruts, et le stocker dans le fichier out.sha256 :
ffmpeg -i INPUT -f streamhash out.sha256
Pour afficher un hachage MD5 sur la sortie standard, utilisez la commande :
ffmpeg -i INPUT -f streamhash -hash md5 -
Voir aussi les muxers hash et framehash.
4.73 tee
Le muxer tee permet d'écrire les mêmes données vers plusieurs sorties, par exemple des fichiers ou des flux. Il peut par exemple servir à diffuser une vidéo sur un réseau tout en l'enregistrant simultanément sur le disque.
Cela diffère du fait de spécifier plusieurs sorties à l'outil en ligne de commande ffmpeg. Avec le muxer tee, les données audio et vidéo ne sont encodées qu'une seule fois. Avec plusieurs sorties classiques, plusieurs opérations d'encodage sont lancées en parallèle, ce qui peut s'avérer un processus très coûteux. Le muxer tee n'est pas utile lorsqu'on utilise directement l'API libavformat, car il est alors possible de transmettre directement les mêmes paquets à plusieurs muxers.
Le muxer tee ne représentant aucun format de sortie particulier, ffmpeg ne peut pas sélectionner automatiquement les flux de sortie. Tous les flux destinés à la sortie doivent donc être spécifiés à l'aide de -map. Voir les exemples ci-dessous.
Certains encoders peuvent nécessiter des options différentes selon le format de sortie ; la détection automatique de ce besoin ne fonctionne pas avec le muxer tee, ces options doivent donc être spécifiées explicitement. Le principal exemple est l'indicateur global_header.
Les sorties esclaves sont spécifiées dans le nom de fichier donné au muxer, séparées par ’|’. Si l'un des noms esclaves contient le séparateur ’|’, des espaces en début ou fin de nom, ou tout caractère spécial, ceux-ci doivent être échappés (voir (ffmpeg-utils)la section "Quoting and escaping" du manuel ffmpeg-utils(1)).
4.73.1 Options
use_fifo bool
Réglé à 1, les sorties esclaves sont traitées dans des threads distincts à l'aide du muxer fifo. Cela permet de compenser les différences de vitesse, de latence ou de fiabilité des sorties et de mettre en place une récupération transparente. Par défaut, cette fonctionnalité est désactivée.
fifo_options
Options à transmettre aux instances du pseudo-muxer fifo. Voir fifo.
Les options du muxer peuvent être spécifiées pour chaque esclave en les préfixant sous la forme d'une liste de paires key=value séparées par ’:’, entre crochets. Si les valeurs des options contiennent un caractère spécial ou le séparateur ’:’, elles doivent être échappées ; notez que ceci correspond à un second niveau d'échappement.
Les options spéciales suivantes sont également reconnues :
f
Spécifie le nom du format. Obligatoire s'il ne peut pas être deviné à partir de l'URL de sortie.
bsfs[/spec]
Spécifie une liste de filtres bitstream à appliquer à la sortie indiquée.
Il est possible de spécifier à quels flux s'applique un filtre bitstream donné, en ajoutant à l'option un spécificateur de flux séparé par /. spec doit être un spécificateur de flux (voir Spécificateurs de flux de format).
Si le spécificateur de flux n'est pas précisé, les filtres bitstream sont appliqués à tous les flux de la sortie. Cela provoque l'échec de l'opération de sortie si celle-ci contient des flux auxquels le filtre bitstream ne peut pas être appliqué, par exemple h264_mp4toannexb appliqué à une sortie contenant un flux audio.
Les options d'un filtre bitstream doivent être spécifiées sous la forme opt=value.
Plusieurs filtres bitstream peuvent être spécifiés, séparés par ",".
use_fifo bool
Cela permet de surcharger l'option use_fifo du muxer tee pour un muxer esclave individuel.
fifo_options
Cela permet de surcharger l'option fifo_options du muxer tee pour un muxer esclave individuel. Voir fifo.
select
Sélectionne les flux à associer à la sortie esclave, indiqués par un spécificateur de flux. Si rien n'est précisé, la valeur par défaut correspond à tous les flux associés. Cela provoque l'échec de l'opération de sortie si le format de sortie n'accepte pas tous les flux mappés.
Vous pouvez utiliser plusieurs spécificateurs de flux séparés par des virgules (,), par exemple : a:0,v
onfail
Spécifie le comportement en cas d'échec de sortie. Cette option peut être réglée sur abort (valeur par défaut) ou ignore. abort provoque l'échec du processus entier en cas d'échec de cette sortie esclave. ignore ignore l'échec de cette sortie, de sorte que les autres sorties continuent sans être affectées.
4.73.2 Exemples
-
Encode un contenu, l'archive dans un fichier WebM et le diffuse en MPEG-TS via UDP :
ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a "archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/" -
Comme ci-dessus, mais continue le streaming même si la sortie vers le fichier local échoue (par exemple si le disque local se remplit) :
ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a "[onfail=ignore]archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/" -
Encode l'entrée à l'aide de
ffmpeget envoie la sortie vers trois destinations différentes. Le filtre bitstreamdump_extraest utilisé pour ajouter des informations extradata à tous les paquets de keyframes vidéo de sortie, comme l'exige le format MPEG-TS. L'option select est appliquée à out.aac afin qu'il ne contienne que des paquets audio.ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac" -
Comme ci-dessus, mais sélectionne uniquement le flux
a:1pour la sortie audio. Notez qu'un second niveau d'échappement doit être effectué, car ":" est un caractère spécial utilisé pour séparer les options.ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=\'a:1\']out.aac"
4.74 wav
Muxer audio RIFF Wave.
4.74.1 Options
rf64 mode
Choisit s'il faut utiliser le format de fichier RF64 à la place de RIFF. RF64 permet des fichiers de plus de 4 gigaoctets, mais la prise en charge de RF64 est moins répandue que celle de RIFF.
Les modes suivants sont reconnus :
‘auto’
Commence par écrire un fichier RIFF standard afin de conserver la compatibilité avec les logiciels ne connaissant pas RF64, puis bascule vers RF64 si le fichier de sortie dépasse 4 gigaoctets. Réserve une petite quantité d'espace supplémentaire dans l'en-tête à l'aide d'un chunk JUNK, qui devrait être ignoré par tous les lecteurs RIFF conformes, mais certains lecteurs WAV extrêmement simplistes peuvent s'en trouver perturbés.
‘always’
Utilise toujours le format RF64, quelle que soit la taille du fichier. Le fichier de sortie ne sera lisible que par des logiciels compatibles RF64 et ne sera plus un fichier RIFF WAVE standard.
‘never’
Utilise toujours du RIFF simple, jamais de RF64. Ce mode est le plus compatible avec les logiciels anciens, mais si le fichier de sortie dépasse 4 gigaoctets, le champ de taille 32 bits du chunk data ne pourra plus représenter correctement la taille, et la plupart des logiciels audio ne pourront pas lire tout ou partie des données. (L'option ignore_length du demuxer wav permet de récupérer un tel fichier.) C'est le mode par défaut.
write_bext bool
Ajoute un chunk BEXT Broadcast Wave Format contenant des métadonnées audio étendues si l'option est activée. Par défaut à false.
write_peak mode
Ajoute un chunk Peak Envelope (EBU Tech 3285 Supplement 3) si l'option est activée. Par défaut sur off.
‘off’
N'ajoute pas le chunk Peak Envelope.
‘on’
Ajoute le chunk Peak Envelope, en calculant les valeurs de crête à partir des options peak_block_size, peak_format et peak_ppv.
‘only’
Comme on, mais sans écrire les données audio réelles (aucun chunk data ne sera écrit dans le fichier ; seuls le chunk Peak Envelope et les autres chunks de métadonnées seront écrits).
peak_block_size int
Nombre d'échantillons audio utilisés pour générer chaque image de crête, jusqu'à 65536. Par défaut 256.
peak_format format
Format des données de l'enveloppe de crête (1 : uint8, 2 : uint16). Par défaut 2 (uint16).
peak_ppv int
Nombre de points de crête par valeur de crête (1 ou 2). Par défaut 2.
4.75 webm_chunk
Muxer WebM Live Chunk.
Ce muxer écrit les en-têtes et chunks WebM sous forme de fichiers distincts, consommables par les clients prenant en charge les flux WebM Live via DASH.
4.75.1 Options
Ce muxer prend en charge les options suivantes :
chunk_start_index
Index du premier chunk (par défaut 0).
header
Nom du fichier d'en-tête dans lequel les données d'initialisation seront écrites.
audio_chunk_duration
Durée de chaque chunk audio en millisecondes (par défaut 5000).
4.75.2 Exemple
ffmpeg -f v4l2 -i /dev/video0 \
-f alsa -i hw:0 \
-map 0:0 \
-c:v libvpx-vp9 \
-s 640x360 -keyint_min 30 -g 30 \
-f webm_chunk \
-header webm_live_video_360.hdr \
-chunk_start_index 1 \
webm_live_video_360_%d.chk \
-map 1:0 \
-c:a libvorbis \
-b:a 128k \
-f webm_chunk \
-header webm_live_audio_128.hdr \
-chunk_start_index 1 \
-audio_chunk_duration 1000 \
webm_live_audio_128_%d.chk
4.76 webm_dash_manifest
Muxer WebM DASH Manifest.
Ce muxer implémente la spécification WebM DASH Manifest afin de générer le XML du manifeste DASH. Il prend également en charge la génération de manifeste pour les flux DASH en direct.
Pour plus d'informations, voir :
- WebM DASH Specification : https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
- ISO DASH Specification : http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
4.76.1 Options
Ce muxer prend en charge les options suivantes :
adaptation_sets
Cette option a la syntaxe suivante : "id=x,streams=a,b,c id=y,streams=d,e", où x et y sont les identifiants uniques des adaptation sets, et a, b, c, d et e sont les index des flux audio et vidéo correspondants. Un nombre quelconque d'adaptation sets peut être ajouté avec cette option.
live
Définit ce paramètre à 1 pour créer un DASH Manifest de flux en direct. Par défaut : 0.
chunk_start_index
Index de départ du premier chunk. Il sera placé dans l'attribut ‘startNumber’ de l'élément ‘SegmentTemplate’ du manifeste. Par défaut : 0.
chunk_duration_ms
Durée de chaque chunk en millisecondes. Il sera placé dans l'attribut ‘duration’ de l'élément ‘SegmentTemplate’ du manifeste. Par défaut : 1000.
utc_timing_url
URL de la page qui renverra l'horodatage UTC au format ISO. Il sera placé dans l'attribut ‘value’ de l'élément ‘UTCTiming’ du manifeste. Par défaut : None.
time_shift_buffer_depth
Durée minimale (en secondes) du tampon de décalage temporel pour laquelle une Representation est garantie disponible. Il sera placé dans l'attribut ‘timeShiftBufferDepth’ de l'élément ‘MPD’. Par défaut : 60.
minimum_update_period
Période minimale de mise à jour (en secondes) du manifeste. Il sera placé dans l'attribut ‘minimumUpdatePeriod’ de l'élément ‘MPD’. Par défaut : 0.
4.76.2 Exemple
ffmpeg -f webm_dash_manifest -i video1.webm \
-f webm_dash_manifest -i video2.webm \
-f webm_dash_manifest -i audio1.webm \
-f webm_dash_manifest -i audio2.webm \
-map 0 -map 1 -map 2 -map 3 \
-c copy \
-f webm_dash_manifest \
-adaptation_sets "id=0,streams=0,1 id=1,streams=2,3" \
manifest.xml
4.77 whip
Muxer WebRTC (Real-Time Communication) prenant en charge un streaming à latence inférieure à la seconde, conformément à la spécification WHIP (WebRTC-HTTP ingestion protocol).
Il s'agit d'une fonctionnalité expérimentale.
Il utilise HTTP comme protocole de signalisation pour échanger les capacités SDP et les candidats ICE lite. Il utilise ensuite des requêtes et réponses STUN binding pour établir une session sur UDP. Il initie ensuite un handshake DTLS pour échanger les clés de chiffrement SRTP. Enfin, il découpe les images vidéo et audio en paquets RTP et les chiffre à l'aide de SRTP.
Veillez à utiliser H.264 sans images B et Opus pour le codec audio. Par exemple, pour convertir un fichier d'entrée en WebRTC avec ffmpeg :
ffmpeg -re -i input.mp4 -acodec libopus -ar 48000 -ac 2 \
-vcodec libx264 -profile:v baseline -tune zerolatency -threads 1 -bf 0 \
-f whip "http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream"
Cet exemple utilise des options de faible latence, ce qui permet d'obtenir une latence de bout en bout d'environ 150 ms.
4.77.1 Options
Ce muxer prend en charge les options suivantes :
handshake_timeout integer
Définit le délai d'expiration en millisecondes pour le handshake ICE et DTLS. La valeur par défaut est 5000.
timeout integer
Définit le délai d'expiration en secondes pour les opérations d'E/S sur la socket. S'applique uniquement à la sortie HTTP. La valeur par défaut est -1.
pkt_size integer
Définit la taille maximale, en octets, des paquets RTP envoyés. La valeur par défaut est 1200.
ts_buffer_size integer
Définit la taille du tampon, en octets, du protocole sous-jacent. La valeur par défaut est -1(auto). L'UDP sélectionne automatiquement une valeur raisonnable.
whip_flags flags
Valeurs possibles :
‘dtls_active’
Le muxer tente de définir le rôle DTLS actif et d'envoyer le premier client hello.
rtp_history integer
Définit le nombre d'éléments d'historique RTP à conserver. La valeur par défaut est 512.
authorization string
Le jeton Bearer optionnel pour l'autorisation WHIP.
cert_file string
Le chemin optionnel du fichier de certificat pour DTLS.
key_file string
Le chemin optionnel du fichier de clé privée pour DTLS.
5 Métadonnées
FFmpeg est capable d'extraire les métadonnées de fichiers multimédias vers un simple fichier texte de type INI encodé en UTF-8, puis de les recharger à l'aide du muxer/demuxer metadata.
Le format du fichier est le suivant :
- Un fichier se compose d'un en-tête et d'un certain nombre de balises de métadonnées réparties en sections, chacune sur sa propre ligne.
- L'en-tête est une chaîne ‘;FFMETADATA’, suivie d'un numéro de version (pour le moment 1).
- Les balises de métadonnées sont de la forme ‘key=value’
- Juste après l'en-tête viennent les métadonnées globales
- Après les métadonnées globales, il peut y avoir des sections contenant des métadonnées par flux ou par chapitre.
- Une section commence par le nom de la section en majuscules (c'est-à-dire STREAM ou CHAPTER) entre crochets (‘[’, ‘]’) et se termine à la section suivante ou à la fin du fichier.
- Au début d'une section de chapitre, il peut y avoir une timebase optionnelle utilisée pour les valeurs start/end. Elle doit être de la forme ‘TIMEBASE=num/den’, où num et den sont des entiers. Si la timebase est absente, les instants start/end sont supposés être en nanosecondes.
Ensuite, une section de chapitre doit contenir les instants de début et de fin du chapitre sous la forme ‘START=num’, ‘END=num’, où num est un entier positif.
- Les lignes vides et les lignes commençant par ‘;’ ou ‘#’ sont ignorées.
- Les clés ou valeurs de métadonnées contenant des caractères spéciaux (‘=’, ‘;’, ‘#’, ‘\’ et un saut de ligne) doivent être échappées avec une barre oblique inverse ‘\’.
- Notez que les espaces dans les métadonnées (par exemple ‘foo = bar’) sont considérés comme faisant partie de la balise (dans l'exemple ci-dessus, la clé est ‘foo ’, la valeur est ‘ bar’).
Un fichier ffmetadata peut ressembler à ceci :
;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team
[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line
En utilisant le muxer et le demuxer ffmetadata, il est possible d'extraire les métadonnées d'un fichier d'entrée vers un fichier ffmetadata, puis de transcoder le fichier vers un fichier de sortie avec le fichier ffmetadata édité.
L'extraction d'un fichier ffmetadata avec ffmpeg se fait comme suit :
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
La réinsertion des informations de métadonnées éditées depuis le fichier FFMETADATAFILE peut se faire comme suit :
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
6 Voir aussi
ffmpeg, ffplay, ffprobe, libavformat
7 Auteurs
Les développeurs de FFmpeg.
Pour plus de détails sur la paternité du code, voir l'historique Git du projet (https://git.ffmpeg.org/ffmpeg), par exemple en exécutant la commande git log dans le répertoire source de FFmpeg, ou en consultant le dépôt en ligne à l'adresse https://git.ffmpeg.org/ffmpeg.
Les mainteneurs des différents composants sont répertoriés dans le fichier MAINTAINERS de l'arborescence des sources.
Hébergement fourni par telepoint.bg