⚠️ Ceci est un site de traduction non officiel, sans lien avec le projet FFmpeg. Pour des informations faisant autorité, consultez la page originale (https://ffmpeg.org/ffmpeg-bitstream-filters.html).

Documentation des filtres de bitstream FFmpeg

1 Description

Ce document décrit les filtres de bitstream fournis par la bibliothèque libavcodec.

Un filtre de bitstream agit sur les données du flux codé et effectue des modifications au niveau du bitstream sans effectuer de décodage.

2 Filtres de bitstream

Lors de la configuration de votre compilation FFmpeg, tous les filtres de bitstream pris en charge sont activés par défaut. Vous pouvez lister tous ceux qui sont disponibles à l'aide de l'option de configure --list-bsfs.

Vous pouvez désactiver tous les filtres de bitstream à l'aide de l'option de configure --disable-bsfs, activer sélectivement n'importe quel filtre de bitstream à l'aide de l'option --enable-bsf=BSF, ou désactiver un filtre de bitstream particulier à l'aide de l'option --disable-bsf=BSF.

L'option -bsfs des outils ff* affiche la liste de tous les filtres de bitstream pris en charge inclus dans votre compilation.

Les outils ff* disposent d'une option -bsf appliquée par flux, qui prend une liste de filtres séparés par des virgules, dont les paramètres suivent le nom du filtre après un ’=’.

ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT

Voici une description des filtres de bitstream disponibles à ce jour, avec leurs paramètres, le cas échéant.

2.1 aac_adtstoasc

Convertit un ADTS AAC MPEG-2/4 en un bitstream MPEG-4 Audio Specific Configuration.

Ce filtre crée un AudioSpecificConfig MPEG-4 à partir d'un en-tête ADTS MPEG-2/4 et supprime l'en-tête ADTS.

Ce filtre est nécessaire par exemple lors de la copie d'un flux AAC depuis un ADTS AAC brut ou un container MPEG-TS vers MP4A-LATM, vers un fichier FLV, ou vers des fichiers MOV/MP4 et formats apparentés tels que 3GP ou M4A. Notez qu'il s'insère automatiquement pour MP4A-LATM, MOV/MP4 et les formats apparentés.

2.2 av1_metadata

Modifie les métadonnées incrustées dans un flux AV1.

td

Insère ou supprime les OBU de délimiteur temporel (temporal delimiter) dans toutes les unités temporelles du flux.

‘insert’

Insère un TD au début de chaque TU qui n'en a pas déjà un.

‘remove’

Supprime le TD du début de chaque TU qui en a un.

color_primaries transfer_characteristics matrix_coefficients

Définit les champs de description de couleur dans le flux (voir la section 6.4.2 d'AV1).

color_range

Définit la plage de couleur dans le flux (voir la section 6.4.2 d'AV1 ; notez que cela ne peut pas être défini pour les flux utilisant les primaires BT.709, la caractéristique de transfert sRGB et les coefficients de matrice identity (RGB)).

‘tv’

Plage limitée.

‘pc’

Plage complète.

chroma_sample_position

Définit la position d'échantillonnage de chrominance dans le flux (voir la section 6.4.2 d'AV1). Cela ne peut être défini que pour les flux 4:2:0.

‘vertical’

Position gauche (correspond à la valeur par défaut dans MPEG-2 et H.264).

‘colocated’

Position en haut à gauche.

tick_rate

Définit la fréquence de tick (time_scale / num_units_in_display_tick) dans les informations de temporisation de l'en-tête de séquence.

num_ticks_per_picture

Définit le nombre de ticks par image, pour indiquer que le flux a une fréquence d'images fixe. Ignoré si tick_rate n'est pas également défini.

delete_padding

Supprime les OBU de remplissage (Padding).

2.3 chomp

Supprime le remplissage de zéros à la fin d'un paquet.

2.4 dca_core

Extrait le cœur d'un flux DCA/DTS, en supprimant les extensions telles que DTS-HD.

2.5 dovi_rpu

Manipule les métadonnées Dolby Vision dans un bitstream HEVC/AV1, avec la possibilité d'activer la compression des métadonnées.

strip

Si cette option est activée, retire du flux toutes les métadonnées Dolby Vision (enregistrement de configuration + blocs de données RPU).

compression

Quel niveau de compression activer.

‘none’

Aucune compression des métadonnées.

‘limited’

Schéma de compression des métadonnées limité. Devrait être compatible avec la plupart des périphériques. C'est la valeur par défaut.

‘extended’

Compression des métadonnées étendue. Les périphériques ne sont pas tenus de la prendre en charge. Notez qu'à l'heure actuelle, ce niveau se comporte de la même façon que ‘limited’ dans libavcodec.

2.6 dovi_split

Divise un bitstream HEVC multicouche Dolby Vision Profile 7. Le Profile 7 transporte le bitstream HEVC de la couche d'amélioration entrelacé à l'intérieur des unités d'accès de la couche de base, enveloppé dans des unités NAL user-unspecified de type 63 (UNSPEC63), et les métadonnées RPU sous la forme d'une NAL user-unspecified sœur de type 62 (UNSPEC62).

mode

Quels composants Dolby Vision conserver dans le bitstream de sortie.

‘bl’

Couche de base uniquement : supprime tous les UNSPEC63 (EL) et tous les UNSPEC62 (RPU). La sortie est un flux HEVC brut sans marqueurs Dolby Vision. C'est la valeur par défaut.

‘bl_rpu’

Couche de base avec la NAL RPU conservée.

‘el’

Couche d'amélioration uniquement : pour chaque NAL UNSPEC63, retire l'en-tête NAL externe de deux octets et émet la charge utile interne. Le résultat est un bitstream HEVC autonome. UNSPEC62 (RPU) est supprimé.

‘el_rpu’

Couche d'amélioration avec la NAL RPU conservée telle quelle. Identique à ‘el’, mais les NAL RPU UNSPEC62 sont également émises aux côtés des NAL EL désenveloppées.

2.7 dump_extra

Ajoute l'extradata au début des paquets filtrés, sauf lorsque ces paquets commencent déjà exactement par l'extradata que l'on cherche à ajouter.

freq

L'argument supplémentaire indique quels paquets doivent être filtrés. Il accepte les valeurs :

‘k’ ‘keyframe’

ajoute l'extradata à tous les paquets clés

‘e’ ‘all’

ajoute l'extradata à tous les paquets

Si non spécifié, la valeur ‘k’ est utilisée.

Par exemple, la commande ffmpeg suivante force un en-tête global (désactivant ainsi les en-têtes individuels des paquets) dans les paquets H.264 générés par l'encoder libx264, mais les corrige en ajoutant aux paquets clés l'en-tête stocké dans extradata :

ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts

2.8 dv_error_marker

Dans le DV, on remplace les blocs marqués comme endommagés par des blocs de la couleur spécifiée.

color

La couleur par laquelle remplacer les blocs endommagés

sta

Un masque de 16 bits qui indique lesquelles des 16 valeurs d'état d'erreur possibles doivent être remplacées par des blocs colorés. 0xFFFE est la valeur par défaut, qui remplace toutes les valeurs d'état d'erreur non nulles.

‘ok’

Aucune erreur, aucune dissimulation

‘err’

Erreur, aucune dissimulation

‘res’

Réservé

‘notok’

Erreur ou dissimulation

‘notres’

Non réservé

‘Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru’

Le code d'état d'erreur spécifique

voir les pages 44-46 ou la section 5.5 de http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf

2.9 eac3_core

Extrait le cœur d'un flux E-AC-3, en supprimant les canaux supplémentaires.

2.10 eia608_to_smpte436m

Convertit un flux EIA_608 en un flux de données SMPTE_436M_ANC, en enveloppant les sous-titres codés (closed captions) dans des paquets VANC CDP CTA-708.

line_number

Choisit le numéro de ligne sur lequel les paquets VANC générés doivent se trouver. En général, on souhaite soit la ligne 9 (la valeur par défaut), soit la ligne 11.

wrapping_type

Choisit le type d'enveloppement (wrapping) SMPTE 436M ; la valeur par défaut est ‘vanc_frame’. Accepte les valeurs suivantes :

‘vanc_frame’

Image VANC (image entrelacée ou progressive segmentée)

‘vanc_field_1’ ‘vanc_field_2’ ‘vanc_progressive_frame’ sample_coding

Choisit le codage d'échantillon SMPTE 436M ; la valeur par défaut est ‘8bit_luma’. Accepte les valeurs suivantes :

‘8bit_luma’

échantillons de luminance de composante 8 bits

‘8bit_color_diff’

échantillons de différence de couleur de composante 8 bits

‘8bit_luma_and_color_diff’

échantillons de luminance et de différence de couleur de composante 8 bits

‘10bit_luma’

échantillons de luminance de composante 10 bits

‘10bit_color_diff’

échantillons de différence de couleur de composante 10 bits

‘10bit_luma_and_color_diff’

échantillons de luminance et de différence de couleur de composante 10 bits

‘8bit_luma_parity_error’

échantillons de luminance de composante 8 bits avec erreur de parité

‘8bit_color_diff_parity_error’

échantillons de différence de couleur de composante 8 bits avec erreur de parité

‘8bit_luma_and_color_diff_parity_error’

échantillons de luminance et de différence de couleur de composante 8 bits avec erreur de parité

initial_cdp_sequence_cntr

La valeur initiale des champs entiers non signés 16 bits cdp_hdr_sequence_cntr et cdp_ftr_sequence_cntr du CDP. La valeur par défaut est 0.

cdp_frame_rate

Définit le champ cdp_frame_rate du CDP. Cela ne change pas réellement la temporisation du flux de données ; cela modifie seulement les valeurs insérées dans ce champ dans les paquets CDP générés. La valeur par défaut est ‘30000/1001’.

2.11 extract_extradata

Extrait l'extradata in-band.

Certains codecs permettent de transmettre les en-têtes persistants (par exemple les en-têtes de séquence MPEG-2, ou les (VPS/)SPS/PPS de H.264/HEVC) soit "in-band" (c'est-à-dire dans le cadre du bitstream qui contient les images codées), soit "out of band" (par exemple au niveau du container). Cette seconde forme est appelée "extradata" dans la terminologie de FFmpeg.

Ce filtre de bitstream détecte les en-têtes in-band et les rend disponibles sous forme d'extradata.

remove

Lorsque cette option est activée, le filtre supprime les en-têtes de longue durée du bitstream après extraction.

2.12 filter_units

Supprime du flux les unités dont le type figure, ou ne figure pas, dans un ensemble donné.

pass_types

Liste de types d'unité, ou de plages de types d'unité, à laisser passer tout en supprimant tous les autres. Elle se spécifie comme une liste de valeurs de type d'unité, ou de plages de valeurs séparées par ’-’, elles-mêmes séparées par ’|’.

remove_types

Identique à pass_types, sauf que les unités de l'ensemble indiqué sont supprimées et que toutes les autres sont laissées passer.

Les types utilisés par pass_types et remove_types correspondent aux types d'unité NAL (nal_unit_type) en H.264, HEVC et H.266 (voir le tableau 7-1 des spécifications H.264 et HEVC, ou le tableau 5 de la spécification H.266), aux valeurs de marqueur pour JPEG (sans le préfixe 0xFF), et aux codes de démarrage sans le préfixe de code de démarrage (c'est-à-dire l'octet qui suit 0x000001) pour MPEG-2. Pour VP8 et VP9, chaque unité a le type zéro.

L'extradata n'est pas modifié par cette transformation, mais notez que si le flux contient des jeux de paramètres en ligne, la sortie peut devenir inutilisable si ceux-ci sont supprimés.

Par exemple, pour supprimer toutes les unités NAL non VCL d'un flux H.264 :

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT

Pour supprimer tous les AUD, SEI et filler d'un flux H.265 :

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT

Pour supprimer toutes les données utilisateur d'un flux MPEG-2, y compris les sous-titres codés (Closed Captions) :

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT

Pour supprimer tous les SEI d'un flux H264, y compris les sous-titres codés :

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT

Pour supprimer tous les SEI de préfixe et de suffixe d'un flux HEVC, y compris les sous-titres codés et le HDR dynamique :

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT

2.13 hapqa_extract

Extrait la partie Rgb ou Alpha d'un fichier HAPQA, sans recompression, afin de créer un fichier HAPQ ou HAPAlphaOnly.

texture

Indique la texture à conserver.

color alpha

Convertit HAPQA en HAPQ

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov

Convertit HAPQA en HAPAlphaOnly

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov

2.14 h264_metadata

Modifie les métadonnées incrustées dans un flux H.264.

aud

Insère ou supprime des unités NAL AUD dans toutes les unités d'accès du flux.

‘pass’ ‘insert’ ‘remove’

La valeur par défaut est pass.

sample_aspect_ratio

Définit le rapport d'aspect d'échantillon du flux dans les paramètres VUI. Voir le tableau E-1 de H.264.

overscan_appropriate_flag

Définit si le flux convient ou non à un affichage utilisant l'overscan (voir la section E.2.1 de H.264).

video_format video_full_range_flag

Définit le format vidéo du flux (voir la section E.2.1 de H.264 et le tableau E-2).

colour_primaries transfer_characteristics matrix_coefficients

Définit la description de couleur du flux (voir la section E.2.1 de H.264 et les tableaux E-3, E-4 et E-5).

chroma_sample_loc_type

Définit la position d'échantillonnage de chrominance du flux (voir la section E.2.1 de H.264 et la figure E-1).

tick_rate

Définit la fréquence de tick (time_scale / num_units_in_tick) dans les paramètres VUI. C'est la plus petite unité de temps représentable dans le flux, et elle correspond dans de nombreux cas à la fréquence de champ du flux (le double de la fréquence d'images).

fixed_frame_rate_flag

Définit si le flux a une fréquence d'images fixe. Cela indique typiquement que la fréquence d'images est exactement la moitié de la fréquence de tick, mais le sens exact dépend de l'entrelacement et de la structure d'image (voir la section E.2.1 de H.264 et le tableau E-6).

zero_new_constraint_set_flags

Met à zéro constraint_set4_flag et constraint_set5_flag dans le SPS. Ces bits étaient réservés dans une version antérieure de la spécification H.264, si bien que certains decoders matériels exigent qu'ils soient à zéro. Le résultat de cette mise à zéro reste un bitstream valide.

crop_left crop_right crop_top crop_bottom

Définit les décalages de rognage d'image dans le SPS. Ces valeurs remplacent les valeurs actuelles si le flux est déjà rogné.

Ces champs sont exprimés en pixels. Notez que certaines tailles peuvent ne pas être représentables si la chrominance est sous-échantillonnée ou si le flux est entrelacé (voir la section 7.4.2.1.1 de H.264).

sei_user_data

Insère une chaîne en tant que données utilisateur non enregistrées SEI. L'argument doit être de la forme UUID+string, où l'UUID est composé de chiffres hexadécimaux éventuellement séparés par des tirets, et où la chaîne peut être quelconque.

Par exemple, ‘086f3693-b7b3-4f2c-9653-21492feee5b8+hello’ insère la chaîne “hello” associée à l'UUID indiqué.

delete_filler

Supprime à la fois les unités NAL de remplissage et les messages SEI de remplissage.

display_orientation

Insère, extrait ou supprime les messages SEI d'orientation d'affichage (Display orientation). Voir les sections D.1.27 et D.2.27 de H.264 pour la syntaxe et la sémantique.

‘pass’ ‘insert’ ‘remove’ ‘extract’

La valeur par défaut est pass.

Le mode insert fonctionne conjointement avec les options rotate et flip. Le mode insert ou remove supprime tout message d'orientation d'affichage préexistant. Le mode extract joint la matrice d'affichage au paquet sous forme de side data.

rotate

Définit la rotation dans le SEI d'orientation d'affichage (angle antihoraire en degrés). La plage va de -360 à +360. La valeur par défaut est NaN.

flip

Définit le retournement (flip) dans le SEI d'orientation d'affichage.

‘horizontal’ ‘vertical’

La valeur par défaut est non définie.

level

Définit le niveau dans le SPS. Voir la section A.3 et les tableaux A-1 à A-5 de H.264.

L'argument doit être le nom d'un niveau (par exemple ‘4.2’), une valeur level_idc (par exemple ‘42’), ou le nom spécial ‘auto’, indiquant que le filtre doit tenter de déduire le niveau à partir des propriétés du flux d'entrée.

2.15 h264_mp4toannexb

Convertit un bitstream H.264 du mode à préfixe de longueur vers le mode à préfixe de code de démarrage (tel que défini dans l'annexe B de la spécification ITU-T H.264).

Ceci est requis par certains formats de streaming, typiquement le format transport stream MPEG-2 (muxer mpegts).

Par exemple, pour remultiplexer avec ffmpeg un fichier MP4 contenant un flux H.264 vers le format mpegts, vous pouvez utiliser la commande suivante :

ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts

Notez que ce filtre s'insère automatiquement pour les formats de sortie MPEG-TS (muxer mpegts) et H.264 brut (muxer h264).

2.16 h264_redundant_pps

Ceci applique un correctif spécifique à certains flux H264 BDMV Blu-ray qui contiennent des PPS redondants. Ces PPS modifient des paramètres non pertinents du flux, ce qui perturbe d'autres transformations nécessitant l'extradata correct.

L'encoder utilisé sur ces flux concernés ajoute des PPS supplémentaires tout au long du flux, en faisant varier le QP initial et l'activation ou non de la prédiction pondérée. Cela cause des problèmes après la copie du flux dans un container à en-tête global, car le PPS initial ne convient pas au reste du flux. Un effet de bord, par exemple, est que le positionnement (seek) renvoie une sortie corrompue jusqu'à l'apparition d'un nouveau PPS.

Ce BSF supprime les PPS supplémentaires et réécrit les en-têtes de slice de sorte que le flux utilise un unique PPS en tête dans l'en-tête global, ce qui résout le problème.

2.17 hevc_metadata

Modifie les métadonnées incrustées dans un flux HEVC.

aud

Insère ou supprime des unités NAL AUD dans toutes les unités d'accès du flux.

‘insert’ ‘remove’ sample_aspect_ratio

Définit le rapport d'aspect d'échantillon du flux dans les paramètres VUI.

video_format video_full_range_flag

Définit le format vidéo du flux (voir la section E.3.1 de H.265 et le tableau E.2).

colour_primaries transfer_characteristics matrix_coefficients

Définit la description de couleur du flux (voir la section E.3.1 de H.265 et les tableaux E.3, E.4 et E.5).

chroma_sample_loc_type

Définit la position d'échantillonnage de chrominance du flux (voir la section E.3.1 de H.265 et la figure E.1).

tick_rate

Définit la fréquence de tick dans les paramètres VPS et VUI (time_scale / num_units_in_tick). Combinée à num_ticks_poc_diff_one, elle permet de définir une fréquence d'images constante dans le flux. Notez qu'elle est susceptible d'être remplacée par les paramètres du container lorsque le flux se trouve dans un container.

num_ticks_poc_diff_one

Définit poc_proportional_to_timing_flag dans le VPS et le VUI, et utilise cette valeur pour définir num_ticks_poc_diff_one_minus1 (voir les sections 7.4.3.1 et E.3.1 de H.265). Ignoré si tick_rate n'est pas également défini.

crop_left crop_right crop_top crop_bottom

Définit les décalages de rognage de la fenêtre de conformité dans le SPS. Ces valeurs remplacent les valeurs actuelles si le flux est déjà rogné.

Ces champs sont exprimés en pixels. Notez que certaines tailles peuvent ne pas être représentables si la chrominance est sous-échantillonnée (section 7.4.3.2.1 de H.265).

width height

Définit la largeur et la hauteur après rognage.

level

Définit le niveau dans le VPS et le SPS. Voir la section A.4 et les tableaux A.6 et A.7 de H.265.

L'argument doit être le nom d'un niveau (par exemple ‘5.1’), une valeur general_level_idc (par exemple ‘153’ pour le niveau 5.1), ou le nom spécial ‘auto’, indiquant que le filtre doit tenter de déduire le niveau à partir des propriétés du flux d'entrée.

2.18 hevc_mp4toannexb

Convertit un bitstream HEVC/H.265 du mode à préfixe de longueur vers le mode à préfixe de code de démarrage (tel que défini dans l'annexe B de la spécification ITU-T H.265).

Ceci est requis par certains formats de streaming, typiquement le format transport stream MPEG-2 (muxer mpegts).

Par exemple, pour remultiplexer avec ffmpeg un fichier MP4 contenant un flux HEVC vers le format mpegts, vous pouvez utiliser la commande suivante :

ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts

Notez que ce filtre s'insère automatiquement pour les formats de sortie MPEG-TS (muxer mpegts) et HEVC/H.265 brut (muxer h265 ou hevc).

2.19 imxdump

Modifie le bitstream pour qu'il s'intègre dans MOV et soit utilisable par le decoder de Final Cut Pro. Ce filtre ne s'applique qu'au codec mpeg2video, et n'est probablement pas nécessaire pour Final Cut Pro 7 et versions ultérieures avec le -tag:v approprié.

Par exemple, pour remultiplexer de l'IMX NTSC 30 MB/s vers MOV :

ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov

2.20 mjpeg2jpeg

Convertit les paquets MJPEG/AVI1 en paquets JPEG/JFIF complets.

MJPEG est un codec vidéo dans lequel chaque image vidéo est essentiellement une image JPEG. Les images individuelles peuvent être extraites sans perte, par exemple avec

ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg

Malheureusement, ces fragments sont des images JPEG incomplètes, car il leur manque le segment DHT nécessaire au décodage. Citation de http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml :

Avery Lee, dans un message posté sur le forum Usenet rec.video.desktop en 2001, a fait remarquer que "MJPEG, ou du moins le MJPEG des AVI portant le fourcc MJPG, est un JPEG restreint avec une table de Huffman fixe – et omise –. Le JPEG doit être en espace colorimétrique YCbCr, il doit être en 4:2:2, et il doit utiliser un codage de Huffman de base, ni arithmétique ni progressif. . . . On peut en effet extraire les images MJPEG et les décoder avec un decoder JPEG standard, mais il faut leur ajouter en préambule le segment DHT, sans quoi le decoder n'a aucune idée de la façon de décompresser les données. La table exacte nécessaire est donnée dans la spécification OpenDML."

Ce filtre de bitstream corrige l'en-tête des images extraites d'un flux MJPEG (portant l'ID d'en-tête AVI1 et dépourvues de segment DHT) afin de produire des images JPEG pleinement conformes.

ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi

2.21 mjpegadump

Ajoute un en-tête MJPEG A au bitstream, afin de permettre son décodage par Quicktime.

2.22 mov2textsub

Extrait un fichier texte représentable à partir de sous-titres MOV, en retirant l'en-tête de métadonnées de chaque paquet de sous-titres.

Voir aussi le filtre text2movsub.

2.23 mpeg2_metadata

Modifie les métadonnées incrustées dans un flux MPEG-2.

display_aspect_ratio

Définit le rapport d'aspect d'affichage du flux.

Les valeurs fixes suivantes sont prises en charge :

4/3 16/9 221/100

Toute autre valeur entraîne la signalisation de pixels carrés à la place (voir la section 6.3.3 de H.262 et le tableau 6-3).

frame_rate

Définit la fréquence d'images du flux. Elle est construite à partir d'une table de valeurs connues combinées à un petit multiplicateur et diviseur ; si la valeur fournie n'est pas exactement représentable, la valeur représentable la plus proche est utilisée à la place (voir la section 6.3.3 de H.262 et le tableau 6-4).

video_format

Définit le format vidéo du flux (voir la section 6.3.6 de H.262 et le tableau 6-6).

colour_primaries transfer_characteristics matrix_coefficients

Définit la description de couleur du flux (voir la section 6.3.6 de H.262 et les tableaux 6-7, 6-8 et 6-9).

2.24 mpeg4_unpack_bframes

Décompacte les images B empaquetées à la manière DivX.

Les images B empaquetées à la manière DivX ne sont pas du MPEG-4 valide et n'étaient qu'un contournement du sous-système Video for Windows, qui était défectueux. Elles occupent plus d'espace, peuvent provoquer de légers problèmes de synchronisation AV, nécessitent davantage de puissance CPU pour le décodage (à moins que le lecteur ne dispose d'une file d'images décodées permettant de compenser le motif 2,0,2,0 image par paquet) et posent problème si on les copie dans un container standard comme mp4 ou mpeg-ps/ts, car les decoders MPEG-4 peuvent ne pas être capables de les décoder, puisqu'il ne s'agit pas de MPEG-4 valide.

Par exemple, pour corriger avec ffmpeg un fichier AVI contenant un flux MPEG-4 avec des images B empaquetées à la manière DivX, vous pouvez utiliser la commande suivante :

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi

2.25 noise

Endommage le contenu des paquets, ou les abandonne simplement, sans endommager le container. Peut être utilisé pour du fuzzing ou pour tester la résilience aux erreurs et la dissimulation.

Paramètres :

amount

Accepte une expression dont l'évaluation par paquet détermine la fréquence à laquelle les octets de ce paquet sont modifiés. Une valeur inférieure à 0 donne une fréquence variable. La valeur par défaut est 0, ce qui n'entraîne aucune modification. Cependant, si ni amount ni drop n'est spécifié, amount est fixé à -1. Voir ci-dessous les variables acceptées.

drop

Accepte une expression évaluée par paquet, dont la valeur détermine si ce paquet est abandonné. Une évaluation à une valeur positive entraîne l'abandon du paquet. Une évaluation à une valeur négative entraîne une probabilité variable d'abandon, à peu près inversement proportionnelle à l'amplitude de la valeur. La valeur par défaut est 0, ce qui n'entraîne aucun abandon. Voir ci-dessous les variables acceptées.

dropamount

Accepte un entier non négatif, qui assigne une probabilité variable d'abandon, à peu près inversement proportionnelle à la valeur. La valeur par défaut est 0, ce qui n'entraîne aucun abandon. Cette option est conservée pour la rétrocompatibilité et équivaut à fixer drop à une valeur négative de même magnitude, c'est-à-dire que dropamount=4 revient au même que drop=-4. Ignoré si drop est également spécifié.

amount et drop acceptent tous deux des expressions contenant les variables suivantes :

‘n’

L'index du paquet, à partir de zéro.

‘tb’

La timebase des horodatages de paquet.

‘pts’

Presentation timestamp du paquet.

‘dts’

Horodatage de décodage du paquet (decoding timestamp).

‘nopts’

Constante représentant AV_NOPTS_VALUE.

‘startpts’

Premier PTS différent de AV_NOPTS_VALUE observé dans le flux.

‘startdts’

Premier DTS différent de AV_NOPTS_VALUE observé dans le flux.

‘duration’ ‘d’

Durée du paquet, en unités de timebase.

‘pos’

Position du paquet dans l'entrée ; peut être -1 lorsqu'elle est inconnue ou non définie.

‘size’

Taille du paquet, en octets.

‘key’

Indique si le paquet est marqué comme keyframe.

‘state’

Un entier pseudo-aléatoire, principalement dérivé du contenu de la charge utile du paquet.

2.25.1 Exemples

Applique la modification à chaque octet mais n'abandonne aucun paquet.

ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv

Abandonne tout paquet vidéo non marqué comme keyframe après l'horodatage 30 s, mais ne modifie aucun des paquets restants.

ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(pts*tb\,30)*not(key)' output.mkv

Abandonne une seconde d'audio toutes les 10 secondes et ajoute du bruit aléatoire au reste.

ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(pts*tb\,10)\,9\,10)' output.mkv

2.26 null

Ce filtre de bitstream laisse passer les paquets sans les modifier.

2.27 pcm_rechunk

Réempaquette l'audio PCM en un nombre fixe d'échantillons par paquet, ou selon une cadence fixe de paquets par seconde. C'est similaire au filtre audio (ffmpeg-filters)asetnsamples, mais cela opère sur des paquets audio plutôt que sur des images audio.

nb_out_samples, n

Définit le nombre d'échantillons par paquet audio de sortie. Ce nombre s'entend comme le nombre d'échantillons par canal. La valeur par défaut est 1024.

pad, p

Si elle est fixée à 1, le filtre remplit le dernier paquet audio avec du silence, de sorte qu'il contienne le même nombre d'échantillons (ou à peu près le même nombre, voir frame_rate) que les précédents. La valeur par défaut est 1.

frame_rate, r

Cette option fait que le filtre produit un nombre fixe de paquets par seconde au lieu d'un nombre fixe d'échantillons par paquet. Si la fréquence d'échantillonnage audio n'est pas divisible par la fréquence d'images, le nombre d'échantillons n'est pas constant mais varie légèrement, de sorte que chaque paquet démarre aussi près que possible de la limite d'image. L'utilisation de cette option a priorité sur nb_out_samples.

Vous pouvez générer le motif bien connu 1602-1601-1602-1601-1602 pour de l'audio 48 kHz à la fréquence d'images NTSC à l'aide de l'option frame_rate.

ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -

2.28 pgs_frame_merge

Fusionne en un seul paquet une séquence de segments de sous-titres PGS se terminant par un segment "end of display set".

Ceci est requis par certains containers qui prennent en charge les sous-titres PGS (muxer matroska).

2.29 prores_metadata

Modifie les métadonnées de propriété de couleur incrustées dans un flux prores.

color_primaries

Définit les primaires de couleur. Les valeurs disponibles sont :

‘auto’

Conserve la même propriété de primaires de couleur (valeur par défaut).

‘unknown’ ‘bt709’ ‘bt470bg’

BT601 625

‘smpte170m’

BT601 525

‘bt2020’ ‘smpte431’

DCI P3

‘smpte432’

P3 D65

transfer_characteristics

Définit le transfert de couleur. Les valeurs disponibles sont :

‘auto’

Conserve la même propriété de caractéristiques de transfert (valeur par défaut).

‘unknown’ ‘bt709’

BT 601, BT 709, BT 2020

‘smpte2084’

SMPTE ST 2084

‘arib-std-b67’

ARIB STD-B67

matrix_coefficients

Définit le coefficient de matrice. Les valeurs disponibles sont :

‘auto’

Conserve la même propriété d'espace colorimétrique (valeur par défaut).

‘unknown’ ‘bt709’ ‘smpte170m’

BT 601

‘bt2020nc’

Définit l'espace colorimétrique Rec709 pour chaque image du fichier

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov

Définit les paramètres Hybrid Log-Gamma pour chaque image du fichier

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov

2.30 remove_extra

Supprime l'extradata des paquets.

Il accepte le paramètre suivant :

freq

Définit de quels types d'image l'extradata doit être supprimé.

‘k’

Supprime l'extradata uniquement des images non-keyframe.

‘keyframe’

Supprime l'extradata uniquement des keyframes.

‘e, all’

Supprime l'extradata de toutes les images.

2.31 setts

Définit le PTS et le DTS dans les paquets.

Il accepte les paramètres suivants :

ts pts dts

Définit les expressions pour le PTS, le DTS, ou les deux.

duration

Définit l'expression pour la durée.

time_base

Définit la timebase de sortie.

prescale

Définit si les champs de temps doivent être convertis vers la timebase de sortie définie par l'utilisateur avant l'évaluation des expressions. La valeur par défaut est 0.

Les expressions sont évaluées via l'API eval et peuvent contenir les constantes suivantes :

N

Le compteur du paquet d'entrée. À partir de 0.

TS

L'horodatage de démultiplexage en entrée dans le cas de l'option ts ou dts, ou le presentation timestamp dans le cas de l'option pts.

POS

La position d'origine du paquet dans le fichier, ou undefined si elle n'est pas définie pour le paquet actuel

DTS

L'horodatage de démultiplexage en entrée.

PTS

Le presentation timestamp en entrée.

DURATION

La durée en entrée.

STARTDTS

Le DTS du premier paquet.

STARTPTS

Le PTS du premier paquet.

PREV_INDTS

Le DTS d'entrée précédent.

PREV_INPTS

Le PTS d'entrée précédent.

PREV_INDURATION

La durée d'entrée précédente.

PREV_OUTDTS

Le DTS de sortie précédent.

PREV_OUTPTS

Le PTS de sortie précédent.

PREV_OUTDURATION

La durée de sortie précédente.

NEXT_DTS

Le DTS d'entrée suivant.

NEXT_PTS

Le PTS d'entrée suivant.

NEXT_DURATION

La durée d'entrée suivante.

TB

La timebase dans laquelle les champs de temps sont exprimés. La timebase de sortie définie par l'utilisateur si prescale est activé, sinon la timebase d'entrée.

TB_OUT

La timebase de sortie.

SR

La fréquence d'échantillonnage du flux auquel appartient le paquet.

NOPTS

La constante AV_NOPTS_VALUE.

Par exemple, pour rendre le PTS égal au DTS (non recommandé si des images B sont impliquées) :

ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv

2.32 showinfo

Journalise des informations de base sur les paquets. Utile principalement pour les tests, le débogage et le développement.

2.33 smpte436m_to_eia608

Convertit un flux de données SMPTE_436M_ANC en un flux EIA_608, en extrayant les sous-titres codés des paquets VANC CDP CTA-708, et en ignorant toutes les autres données.

2.34 text2movsub

Convertit des sous-titres texte en sous-titres MOV (tels qu'utilisés par le codec mov_text) avec des en-têtes de métadonnées.

Voir aussi le filtre mov2textsub.

2.35 trace_headers

Journalise une sortie de trace contenant tous les éléments syntaxiques des en-têtes du flux codé (tout ce qui se situe au-dessus du niveau des blocs codés individuels). Cela peut être utile pour déboguer des problèmes de flux de bas niveau.

Prend en charge AV1, H.264, H.265, (M)JPEG, MPEG-2 et VP9, mais selon la compilation, seul un sous-ensemble d'entre eux peut être disponible.

2.36 truehd_core

Extrait le cœur d'un flux TrueHD, en supprimant les données ATMOS.

2.37 vp9_metadata

Modifie les métadonnées incrustées dans un flux VP9.

color_space

Définit la valeur de l'espace colorimétrique dans l'en-tête d'image. Notez que toute image définie en RGB est implicitement placée en plage PC, et que le RGB est incompatible avec les profils 0 et 2.

‘unknown’ ‘bt601’ ‘bt709’ ‘smpte170’ ‘smpte240’ ‘bt2020’ ‘rgb’ color_range

Définit la valeur de la plage de couleur dans l'en-tête d'image. Notez que toute valeur imposée par l'espace colorimétrique prévaut sur cette valeur.

‘tv’ ‘pc’

2.38 vp9_superframe

Réintègre les images invisibles (alt-ref) VP9 dans des superframes VP9. Cela corrige la fusion de flux VP9 divisés ou segmentés dans lesquels l'image alt-ref a été séparée de son équivalent visible.

2.39 vp9_superframe_split

Divise les superframes VP9 en images uniques.

2.40 vp9_raw_reorder

Étant donné un flux VP9 avec des horodatages corrects mais potentiellement dans le désordre, insère des paquets show-existing-frame supplémentaires afin de corriger l'ordre.

3 Voir aussi

ffmpeg, ffplay, ffprobe, libavcodec

4 Auteurs

Les développeurs de FFmpeg.

Pour plus de détails sur la paternité du projet, consultez l'historique Git du projet (https://git.ffmpeg.org/ffmpeg), par exemple en tapant 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 composants spécifiques sont répertoriés dans le fichier MAINTAINERS de l'arborescence des sources.

Hébergement fourni par telepoint.bg