Bibliothèques :

  • libavcodec contient tous les encodeurs et décodeurs audio/video de FFmpeg. La plupart des codecs ont été redéveloppés à partir de zéro pour assurer les meilleures performances et la réutilisabilité du code source, une partie d'entre eux ont été développés par rétro-ingénierie.
  • libavformat contient un analyseur syntaxique (un parser en anglais, parcoureur en français) et un générateur pour les formats audio/video les plus communs.

Codecs et conteneurs

Les fichiers audio et spécialement vidéo sont de grands consommateurs d'informations numériques. Le poids de leur mesure en bit contient de nombreuses informations. Un fichier vidéo seul sans une post-synchronisation sonore contient en une seconde 25 images dont la taille du cadre est de 720*756 pixels en format Pal. Son poids est donc 25 fois supérieur sur une seconde à une simple image fixe dont la taille du cadre est identique.

Dans le cadre du montage vidéo, la résolution de travail la plus fine est le traitement de chaque image de la vidéo, c'est à dire un travail au 1/25 de seconde dans le cadre du format Pal. Cette version dites MotionJPEG est une grande consommatrice d'espace disque. Pour alléger les capacités de travail, des solutions d'encodage permettent de lier ces images en les interpolant. Par des interventions de calculs mathématiques plus ou moins fines, le poids mesuré en bit d'un fichier vidéo en est réduit. De ce fait, ce fichier encodé peut transiter à l'intérieur de réseaux informatiques dont les capacités de transmission plus ou moins développées sont en rapport avec les interventions de calculs des codecs utilisés.

Les codecs sont les systèmes de compressions et de décompressions des fichiers audio et vidéo. De nombreux codecs sont connus, les différentes versions de « MPEG » pour la vidéo et ceux dénommés « MP3 » et « AAC » pour l'audio. A l'origine, la numérisation des films et des enregistrements sonores était lié à la diffusion de ceux-ci par des réseaux soit hertziens ou informatiques. La démocratisation des lecteurs audio et vidéo, magnétoscopes, ordinateurs, lecteurs DVD, baladeurs numériques audio, vidéo et multimédia a distribué des standards de codecs en rapport aux parts de marchés obtenus par certains constructeurs. Le célebre standard « MP3 » en est un des résultats bien connus. L'inévitable standard « FLV » de la société Adobe est incontournable sur les sites communautaires d'échange de vidéo tels que « YouTube » et « DailyMotion ».

La vidéo étant souvent associé aux sons, la post-synchronisation audio-vidéo s'effectue au sein d'un un conteneur, le muxer en anglais. Un fichier audio-vidéo dont le conteneur est un « FLV » détient un codec vidéo « FLV » et un codec audio « MP3 ». Un fichier audio-vidéo au format DVD dont le conteneur est nommé « VOB » contient un codec audio au format « Dolby Surround » et un codec vidéo « MPEG2 ». Cependant, un conteneur peut également intégrer des repères de chapitrage, des options multilingue sonore et de sous-titrage. Tels est le cas des conteneurs « VOB » et « MKV ».

Le manuel FFMPEG

Vous trouvez le manuel en tapant « man ffmpeg » dans votre console préféré ou directement en accédant au site officiel : http://www.ffmpeg.org/ffmpeg-doc.html. De nombreux logiciels équipés d'interface graphique utilisateur (GUI acronyme de Graphical User Interface) utilisent la solution FFmPEG tels que VLC, MediaCoder, Avidemux, Kino, KDEnlive, Cinelerra, Blender...

L'utilisation des fonctions de FFMPEG se font par l'utilisation de lignes de commande. La console est donc obligatoire. Pour l'encodage, il est défini le fichier entrant, celui à encoder, puis les paramètres du fichier de sortie codec, débit binaire, cadre d'image... suivi du nom de fichier et de l'extension du conteneur de sortie.

A titre d'exemple : ffmpeg – i video_entrante.avi -target pal-dvd video_sortante.mpg

ou la syntaxe :

  • ffmpeg : fait appel au logiciel ffmpeg
  • -i video_entrante.avi : appel (-i pour Input) de la vidéo
  • -target pal-dvd : cible une préconfiguration du format de sortie en « pal-dvd »
  • video_sortante.mpg : nom et conteneur de la vidéo transformée

La cible « -target »possède quelques préconfigurations "vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ... dont toutes les options « bitrate », « codecs », « buffer sizes »... attribuent les valeurs standards par défaut. Il est toutefois possible d'intervenir sur une des options afin d'émettre des valeurs différentes.

Ainsi : ffmpeg – i video_entrante.avi -target pal-dvd video_sortante.mpg peut être affiné par : ffmpeg – i video_entrante.avi -target pal-dvd -acodec copy video_sortante.mpg ou l'option « -acodec copy » copie à l'identique le codec audio entrant vers le fichier sortant.

Vous pouvez lister les codecs compatibles FFMPEG en tapant dans votre console la ligne suivante : ffmpeg -formats . Ajoutant des options tels que « D » : ffmpeg -formats D , votre console vous liste les codecs pouvant être décodés et donc encodés. L'options « E » affiche les codecs dont l'encodage est possibles.

Les options d'encodage audio et vidéo

Pour connaître les options d'encodage d'un fichier audiovisuel, tapez juste FFMPEG « Input » dans votre console. De nombreuses informations vont apparaître. La première partie vous informe avec quels options l'application FFMPEG est installée. Pour vous informer à ce sujet, je vous renvoie à l'annexe. Seules les dernières lignes d'information sont intéressantes pour cette étape.

  • ffmpeg -i audio-vidéo.ogg
  • Input #0, ogg, from 'audio-vidéo.ogg':
  • Duration: 00:05:33.20, start: 0.000000, bitrate: 988 kb/s
  • Stream #0.0: Video: theora, yuv420p, 720x576, 25.00 tb(r)
  • Stream #0.1: Audio: vorbis, 48000 Hz, stereo, 128 kb/s

La durée du fichier « audio-vidéo.ogg » est de 00:05:33.20 soit 0 heures : 05 mn : 33 sec . 20 images. Son débit binaire est de 988 kb/s.

Caractéristiques du codec vidéo:

  • Le nom du codec : Theora
  • Type d'encodage couleur : yuv420p
  • La taille du cadre image : 720 *576 px
  • La cadence image est de : 25 images/sec

Caractéristiques du codec audio :

  • Le nom du codec : Vorbis
  • Le taux d'échantillonnage : 48000 Hz
  • Nombre de voies audio : Stéréo
  • Débit binaire de l'audio : 128 Kb/s

Les options standards d'encodage se limite à ce type d'options dans la plupart des cas de flux de production. Les options principales sont donc :

Pour la vidéo :

  • -b : configuration du débit binaire par défaut 200 kbps
  • -sameq : copie à l'identique le débit binaire
  • -s : configuration de la taille du cadre d'affichage
  • -aspect : configuration du format d'affichage (4:3, 16:9 ou 1.3333, 1.7777)
  • -vcodec : décision du choix du codec
  • -pass : nombre de passage à l'encodage, une passe (-pass 1) ou deux passes (-pass 2)
  • -qmin : détermine le seuil minimum du débit binaire variable (VBR)
  • -qmax : détermine le seuil maximum du débit binaire variable (VBR)
  • -f : sélectionne le nom du conteneur
  • -r : définit le nombre d'images par seconde

Pour l'audio :

  • -ar : configuration de la fréquence d'échantillonnage (44100 Hz)
  • -ab : configuration du débit binaire par défaut 64 kbps
  • -ac : configure le nombre de canaux (mono-stéréo)
  • -acodec : détermine le choix du codec

Quelques exemples:

  • ffmpeg -i video.flv -target pal-dvd-aspect 4:3 video.mpg
  • ffmpeg -i video.flv -target pal-dvd -b 2000K -acodec mp2 -ar 22050 -ab 64k -aspect 4:3 video.mpg
  • ffmpeg -i video.mpg -vcodec mpeg4 -s 320x240 -b 300k -r 10 -acodec mp3 -ar 22050 -ab 64k -f avi video.avi

L'anamorphisme

Le format initial de l'image télévisuel est d'un rapport 1.33 dit 4/3. Les écrans télé HD ont fait apparaître le format 16/9, le rapport 1.77, également défini par le terme "LetterBox". La taille des pixels suivant le format de l'image en est donc modifiée. Le passage d'une vidéo 4/3 au 16/9 provoque une distortion du pixel par un étirement horizontale de celui-ci. La méthode de conversion s'effectue par un réechantillonage du pixel, technique de l'anamorphisme. En plus, la norme NTSC diffère de celle PAL, non seulement de la cadence image, mais aussi sur la taille de l'image. Le NTSC affiche un cadre de 720x480 pixel, alors que le PAL diffuse un cadre de 720x576.Les nouvelles normes d'affichage pour les téléviseurs HD Ready sont en général de 1280x720 car la taille diffère suivant les constructeurs et pour les Full HD 1920x1080. On distingue également trois normes de projection au cinema : l'écran standard panoramique européen dont le rapport est de 1.67,  le Standard Cinema Widescreen, rapport d'affichage de 1.85 et le CinemaScope Widescreen, rapport d'affichage de 2.35.  Les termes de recadrage et de translation (pan&scan) indique les conversions de format 4/3 en 16/9. Si une image 4/3 est projetée en 16/9, une bande noir apparaît sur le coté droit et gauche de la vidéo (pillarbox). Dans le sens inverse une image 16/9 projetée sur un support 4/3, une bande noire apparaît sur les bords haut et bas de l'image (letterbox). L'image significative additionnée au bandes noires conserve ainsi sa taille d'image. Si le matériel de diffusion de l'image (vidéoprojecteurs, téléviseurs) gère l'étirement des pixels, l'anamorphisme, alors aucune bandes noires est présente.

FFMPEG permet la conversion de recadrage et de translation par les syntaxes :

  • -croptop : ajout de la bande noire au dessus de la vidéo, taille exprimée en pixels
  • -cropbottom : ajout de la bande noire au dessous de la vidéo, taille exprimée en pixels
  • -cropleft : ajout de la bande noire à gauche de la vidéo, taille exprimée en pixels
  • -cropright : ajout de la bande noire à droite de la vidéo, taille exprimée en pixels

La plupart des fichiers vidéos sont filmés au format 4/3. La formule mathématique suivante vous permet de convertir le format 4/3 en 16/9 en rognant sur la hauteur de l'image. Dans le cas du pal-dvd, une taille de l'image de 720*576 pixels, vous calculez comme ceci :

720 / (16/9) = 720 / 1.77777777778 = 405

La hauteur de l'image au format pal-dvd 576 pixels est recadré en 405 pixels. Les bandes noires des bords haut et bas de l'image (letterbox) n'ont plus qu'à être défini par :

576 – 405 = 171 puis 171 / 2 = 85.5 ou 85.5 est la hauteur des bandes noires. Arrondissez sur une valeur multiple de deux, 85.5 devient 84.

Un format 4/3 au format flv peut être encodé en pal-dvd format 16/9 par cette commande ffmpeg :

ffmpeg -i video.flv -target pal-dvd -aspect 1.77 -croptop 84 -cropbottom 84 video.mpeg

Analyse du conteneur VOB d'un DVD

L'utilitaire « Vobcopy » permet de copier sur votre disque dur les fichiers VOB contenu sur un disque optique DVD. Vobcopy est non GUI et s'appuie sur la librairie « libdvdread » qui permet de décoder certains CSS de protection de copie. Il est nécessaire d'utiliser la console, la syntaxe de base étant vobcopy. Pour plus de détails, veuillez-vous rapporter au manuel « man vobcopy ».

La commande ffmpeg suivante nous informe sur le contenu d'un fichier VOB :

ffmpeg -i video.vob

Duration: 00:53:54.20, start: 0.049756, bitrate: 5311 kb/s Stream #0.00x1e0: Video: mpeg2video, yuv420p, 720x576, 9800 kb/s Stream #0.10x82: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s Stream #0.20x81: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s Stream #0.30x2d: Subtitle: dvdsub Stream #0.40x2c: Subtitle: dvdsub

Comme cité plus haut le conteneur VOB peut détenir des options multilingue sonore et de sous-titrage. Dans l'exemple ci-dessus, FFMPEG Input nous informe du contenu du fichier « video.vob ». Ce fichier contient un flux vidéo (Stream) codé en mpeg2video, dont la profondeur couleur est du yuv420p, un cadre d'image d'une taille de 720x576 et un débit binaire de 9800 kbps. A cela s'ajoute deux flux audio dont les codecs sont AC3, leur fréquence d'échantillonnage est de 48 kHz, multiplexé en 5.1, d'une profondeur de 16 bit et dont le débit binaire est de 444 kbps. En fin de liste apparaissent deux flux de sous-titres dvdsub.

Si vous désirez, pour des raisons de tests d'encodage ou tout simplement exporter un extrait d'un fichier vidéo, les commandes « -ss » et « -t » délimitent la portion de la vidéo à extraire. La commande « -ss » aura pour attribut le temps au centième de seconde du point d'entrée de la séquence à exporter et la commande « -t » la durée de la séquence.

Exemple d'exportation d'un extrait en Xvid :

  • ffmpeg -i video.vob -ss 00:00:12:250 -t 00:00:03:133 -vcodec msmpeg4v2 -acodec mp3 video.avi

La possibilité d'extraire uniquement le flux vidéo ou le flux audio permettent de remplacer la bande sonore de la vidéo, la récupérer pour la travailler ou bien l'écouter sur votre platine de salon. Les commandes « -an » ou« -vn » offrent l'exportation uniquement du flux vidéo (-an pour non-audio) ou uniquement du flux audio (-vn pour non-video). Cet exemple vous indique comment exporter afin de graver la bande sonore sur un disque optique de CD audio de salon. Le codec est un Pulse Code Modulation de profondeur de 16 bit.

  • ffmpeg -i video.vob -vn -acodec pcm_s16le -ar 44100 -ac 2 video.wav

Si vous souhaitez conserver le son en qualité surround 5.1, vous optez pour :

  • ffmpeg -i video.vob -vn -acodec ac3 video.ac3

Cependant, l'encodage de la bande sonore est par défaut le premier flux audio de la version multilingue. La commande « -map » vous permet de définir la version sonore à exporter. Rappelez vous !

  • Stream #0.10x82: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
  • Stream #0.20x81: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s

Si votre choix se porte sur la seconde piste multilingue, Stream #0.2, voici la ligne de commande mise à jour par l'ajout de -map 0:2 :

  • ffmpeg -i video.vob -vn -map 0:2 -acodec pcm_s16le -ar 44100 -ac 2 video.wav

La commande « -map » peut permettre l'export du choix d'une langue multiplexé à la vidéo. Admettons que le Stream #0.2 soit la version française du film, hors par défaut FFMPEG prend le premier flux audio présenté. Vous devez donc optez pour le second flux si vous voulez obtenir les images associés. La commande « -map » vous de fondre différents flux.

Cet exemple montre l'exportation du fichier sonore en langue française, stream 2, associé au flux vidéo, stream 0 pour une exportation avec codec « Xvid » et « MP3 » pour un conteneur « AVI ».

  • ffmpeg -i video.vob -map 0:0 -map 0:2 -vcodec msmpeg4v2 -acodec mp3 video.avi

Vous souhaitez coller votre nouvelle bande son au flux vidéo, il est essentiel de leur attribuer un numéro de « -map ». Le flux vidéo est nommé par « -map 0:0 » et le flux audio par « -map 0:1. Affinez le multiplexing en attribuant les codecs appropriés.

  • ffmpeg -i video.vob -i audio.wav -map 0:0 -map 1:0 -target pal-dvd -aspect 16:9 video.mpg

En dernier lieu, FFMPEG peut multiplexer différentes sources audio et de ce fait créer un fichier surround au maximum de 7.1. Mixer par la fonction « Input » les différentes sources audio, en tapant comme ceci les commandes dans un cas de 5 voies multiplexés par le codec « AC3 », ce peut être aussi le codec « MP2 » :

  • ffmpeg -i au_stereo_left.wav -i au_stereo_right.wav -i au_surround_left.wav -i au_surround_right.wav -i au_central.wav -ab 192k -ar 48000 -ac 5 -acodec ac3 surround.ac3

Planche de contact et traitement par lot

La commande « newaudio » et « newvideo » permet d'encoder le film en plusieurs fichiers vidéos ou de fichiers sonores en sortie. Dans l'exemple suivant, la finalité de la ligne de commande est d'encoder entrante « video.vob » en un fichier audio-vidéo Xvid et en un fichier audio mp3 :

ffmpeg -i video.mpg -vcodec msmpeg4v2 -acodec mp3 video.avi -acodec mp3 -ab 192k -newaudio audio.mp3

Vous êtes en repérage sur un potentiel lieu de tournage. Vous devez imprimez une planche contact afin d'éditer un story board. FFMPEG par la commande « -r » détermine le nombre d'image par seconde à éditer et peut exporter le flux d'image vidéo en image fixe :

  • ffmpeg -i video.avi -r 3 -s 128×96 -f image2 images_StoryBoard-%4d.png

L'expression « %4 » enregistrera et numérotera les images de façon croissante sur une base de quatre chiffre : images_StoryBoard-0000.png, images_StoryBoard-0001.png, images_StoryBoard-0002.png...

Vous devez encodez plusieurs vidéos à suivre afin de répondre à une commande propre à un type de lecteur vidéo. Vous devez reprendre l'expression afin d'enregistrer les vidéos et les numéroter. La boucle suivante va traiter par lot votre encodage :

  • for f in *.mpeg; do ffmpeg -i "$f" -sameq "${f%3.mpeg}.flv"; done

Cette boucle définit pour chaque entrée définit par la variable « $f » dont le conteneur est « mpeg », utiliser l'application « ffmpeg » afin d'encoder en « flv » suivant l'option « -sameq » en enregistrant et numérotant les fichiers vidéo de façon croissante sur une base de 3 chiffres.

Quelques librairies de codecs utiles

Si vous souhaitez ne récupérer que la vidéo précisez avec la syntaxe -noaudio. Inversement, vous obtenez uniquement l'audio avec la syntaxe -novideo.

AUDIO- VIDEO :

  • MP4:
  • Video : libx264, yuv420p, 1250 kb/s
  • Audio : libfaac, 48000 Hz, s16, 112 kb/s
  • Blackberry :
  • Video : libx264, yuv420p, 240x180, q=2-31, 400 kb/s
  • Audio : libfaac, 44100 Hz, stereo, s16, 80 kb/s
  • FLV :
  • Video : flv, yuv420p, 1300 kb/s
  • Audio : libmp3lame, 22050 Hz, mono, s16, 56 kb/s
  • Ipod :
  • Video : libx264, yuv420p, 320x144, q=2-31, 200 kb/s
  • Audio : libfaac, 48000 Hz, stereo, s16, 112 kb/s
  • AVI :
  • Video : msmpeg4, yuv420p, 640x480, q=2-31, 1000 kb/s
  • Audio : libmp3lame, 44100 Hz, 5.1, s16, 192 kb/s
  • Pal-DVD :
  • Video : mpeg2video, yuv420p, 720x576, q=2-31, 8000 kb/s, 90k tbn, 25 tbc
  • Audio : ac3, 48000 Hz, 5.1, s16, 448 kb/s
  • NTSC-DVD :
  • Video : mpeg2video, yuv420p, 720x480, q=2-31, 8000 kb/s, 90k tbn, 29.97 tbc
  • Audio : ac3, 48000 Hz, 5.1, s16, 448 kb/s
  • Diaporama MS :
  • Video : wmv2, yuv420p, 320x240, q=2-31, 500 kb/s
  • Audio : wmav2, 22050 Hz, mono, s16, 32 kb/s
  • PSP :
  • Video : libx264, yuv420p, 640x480, 1250 kb/s
  • Audio : libfaac, 48000 Hz, stereo, s16, 128 kb/s
  • Xbox :
  • Video : wmv2, yuv420p, 720x480, q=2-31, 1200 kb/s
  • Audio : wmav2, 48000 Hz, 5.1, s16, 160 kb/s
  • XVid :
  • Video : libxvid
  • Audio : libmp3lame
  • MOV Quicktime :
  • Video : mpeg4, yuv420p, 640x480, 1250 kb/s
  • Audio : libfaac, 48000 Hz, stereo, s16, 128 kb/s
  • RAW DV PAL :
  • Video : dvvideo, yuv420p, 720x576, 200 kb/s
  • Audio : pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
  • RAW DV NTSC :
  • Video : dvvideo, yuv411p, 720x480, 200 kb/s
  • Audio : pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s

AUDIO :

  • CDMA phone audio 3g2 :
  • Audio : libfaac, 22050 Hz, 5.1, s16, 128 kb/s
  • MP3 :
  • Audio : libmp3lame, 44100 Hz, stereo, s16, 160 kb/s
  • MP4 audio :
  • Audio : libfaac, 48000 Hz, stereo, s16, 112 kb/s
  • OGG :
  • Audio : vorbis, 48000 Hz, stereo, s16, 192 kb/s
  • WAV pour CD :
  • Audio : pcm_s16le, 44100 Hz, stereo, s16, 4233 kb/s
  • WMA :
  • Audio : wmav2, 48000 Hz, 5.1, s16, 160 kb/s

Exemple un encodage en MP4 :

  • Video : libx264, yuv420p, 1250 kb/s
  • Audio : libfaac, 48000 Hz, s16, 112 kb/s

ffmpeg -i Video_Entrante.vob -vcodec libx264 -b 1250k -acodec libfaac -ab 112k Video_Sortante.mp4 Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 25.00 (25/1) Input #0, mpeg, from 'Promesses_ombre.vob': Duration: 00:32:39.42, start: 0.060000, bitrate: 22945 kb/s Stream #0.00x1e0: Video: mpeg2video, yuv420p, 720x576 PAR 64:45 DAR 16:9, 8000 kb/s, 25 tbr, 90k tbn, 50 tbc Stream #0.10x82: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s Stream #0.20x80: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s Stream #0.30x89: Audio: dca, 48000 Hz, 5.1, s16, 768 kb/s Output #0, mp4, to 'Promesses_ombre.mp4': Stream #0.0: Video: libx264, yuv420p, 720x576 PAR 64:45 DAR 16:9, q=2-31, 1250 kb/s, 90k tbn, 25 tbc Stream #0.1: Audio: libfaac, 48000 Hz, 5.1, s16, 112 kb/s Stream mapping: Stream #0.0 -> #0.0 Stream #0.1 -> #0.1 libx264 @ 0xa0f38b0using SAR=64/45 libx264 @ 0xa0f38b0using cpu capabilities: MMX2 Cache64 Press q to stop encoding frame=144765 fps= 9 q=-1.0 Lsize= 1026174kB time=5790.49 bitrate=1451.8kbits/s video:886729kB audio:136145kB global headers:0kB muxing overhead 0.322555% etc.

Coder pour les diffusions professionnelles

Importez vos fichiers dans Final Cut Pro ou Avid Media Composer par:

  • Création d'XDCAM HD422 fichiers. mov ou. MXF
  • Création d'XDCAM IMX/D-10 fichiers. mov ou. MXF
  • Création d'Avid DNxHD fichiers. mov
  • Encoder votre MPEG-2 4:2:2 Tranport Stream fichiers contenant S302M audio.
  • Encoder vos fichiers AVCHD correctement.
  • Fusionner et fractionner vos pistes audio.
  • Créer des fichiers Quicktime contenant des pistes de timecode.
  • Prise en charge avancée des métadonnées.

H.264 Long GOP Encoding

  • 1-pass encoding:

ffmpeg -i <input_file> -vcodec libx264 -b <video_bitrate> -g <gop_size> -bf 3 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method hex -subq 5 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 1 -flags2 +fastpskip -dts_delta_threshold 1 -acodec libfaac -ab <audio_bitrate> output.mp4

  • 2-pass encoding:

ffmpeg -y -i <input_file> -pass 1 -vcodec libx264 -b <video_bitrate> -g <gop_size> -bf 3 -refs 6 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method umh -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 3 -flags2 +dct8x8+wpred+bpyramid+mixed_refs -trellis 1 -partitions +parti8x8+parti4x4+partp8x8+partp4x4+partb8x8 -acodec libfaac -ab <audio_bitrate> output.mp4

ffmpeg -y -i <input_file> -pass 2 -vcodec libx264 -b <video_bitrate> -g <gop_size> -bf 3 -refs 6 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method umh -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 3 -flags2 +dct8x8+wpred+bpyramid+mixed_refs -trellis 1 -partitions +parti8x8+parti4x4+partp8x8+partp4x4+partb8x8 -acodec libfaac -ab <audio_bitrate> output.mp4

D10 (Sony IMX) Encoding

ffmpeg -i <input_file> -vcodec mpeg2video -r 25 -pix_fmt yuv422p -minrate 50000k -maxrate 50000k -b 50000k -intra -flags +ildct+low_delay -dc 10 -flags2 +ivlc+non_linear_q -ps 1 -qmin 1 -qmax 3 -top 1 -bufsize 2000000 -rc_init_occupancy 2000000 -rc_buf_aggressivity 0.25 -an output.m2v

Notes :

  • Fonctionne uniquement en 25 fps .
  • Changre minrate, maxrate et b values en 30000k / 40000k / 50000k afin de produire 30/40/50 Mbps.
  • Configurer les valeurs de mémoire tampon bufsize et rc_init_occupancy de 1200000 / 1600000 / 2000000 à 30/40/50 Mbps.
  • Ajouter l'option -padtop 32 si vous souhaitez produire une dimension de cadre 720x608 D10 à partir d'une source de 720x576.

XDCAM HD 50Mbps en QuickTime pour des imports FinalCut

ffmpeg -i <input_file> -pix_fmt yuv422p -vcodec mpeg2video -flags +ildct+ilme -top 1 -dc 10 -flags2 +ivlc+non_linear_q -qmin 1 -lmin '1*QP2LAMBDA' -vtag xd5c -rc_max_vbv_use 1 -rc_min_vbv_use 1 -b 50000k -minrate 50000k -maxrate 50000k -bufsize 36408333 -bf 2 -aspect 16:9 -acodec pcm_s16be -f mov output.mov -newaudio

DVCAM / DVCPRO25 / DVCPRO50 Encoding

ffmpeg -i <input_file> -pix_fmt yuv420p output_DVCAM.dv ffmpeg -i <input_file> -pix_fmt yuv411p output_DVCPRO25.dv ffmpeg -i <input_file> -pix_fmt yuv422p output_DVCPRO50.dv

VC-3 pour un encodage Avid DNxHD

ffmpeg -i <input_file> -vcodec dnxhd -b <bitrate> -an output.mov

Notes :

  • Pour les débits d'encodage se reférer au tableau suivant : 36Mb, 60Mb, 90Mb, 120Mb, 185Mb.

- Ajouter les options suivantes pour les modes entrelacés : -flags +ildct - Si vous avez le temps, cette option vous offre une meilleure qualité : -mbd rd

Les résolutions supportés :

  • Project Format Resolution Frame Size Bits FPS <bitrate>
  • 1080i / 59.94 DNxHD 220 1920 x 1080 8 29.97 220Mb
  • 1080i / 59.94 DNxHD 145 1920 x 1080 8 29.97 145Mb
  • 1080i / 50 DNxHD 185 1920 x 1080 8 25 185Mb
  • 1080i / 50 DNxHD 120 1920 x 1080 8 25 120Mb
  • 1080p / 25 DNxHD 185 1920 x 1080 8 25 185Mb
  • 1080p / 25 DNxHD 120 1920 x 1080 8 25 120Mb
  • 1080p / 25 DNxHD 36 1920 x 1080 8 25 36Mb
  • 1080p / 24 DNxHD 175 1920 x 1080 8 24 175Mb
  • 1080p / 24 DNxHD 115 1920 x 1080 8 24 115Mb
  • 1080p / 24 DNxHD 36 1920 x 1080 8 24 36Mb
  • 1080p / 23.976 DNxHD 175 1920 x 1080 8 23.976 175Mb
  • 1080p / 23.976 DNxHD 115 1920 x 1080 8 23.976 115Mb
  • 1080p / 23.976 DNxHD 36 1920 x 1080 8 23.976 36Mb
  • 1080p / 29.7 DNxHD 45 1920 x 1080 8 29.97 45Mb
  • 720p / 59.94 DNxHD 220 1280x720 8 59.94 220Mb
  • 720p / 59.94 DNxHD 145 1280x720 8 59.94 145Mb
  • 720p / 50 DNxHD 175 1280x720 8 50 175Mb
  • 720p / 50 DNxHD 115 1280x720 8 50 115Mb
  • 720p / 23.976 DNxHD 90 1280x720 8 23.976 90Mb
  • 720p / 23.976 DNxHD 60 1280x720 8 23.976 60Mb

Exemple : ffmpeg -i input.mts -vcodec dnxhd -acodec pcm_s16le -flags +ildct -b 185Mb -threads 8 output.mov

MPEG-2 I-frame : intraframe MPEG-2 de meilleure qualité

ffmpeg -i <input_file> -vcodec mpeg2video -qscale 1 -qmin 1 -intra -an output.m2v

Encodage MPEG-2 Long GOP

ffmpeg -i <input_file> -vcodec mpeg2video -b <video_bitrate> -g <gop_size> -bf 2 -b_strategy 1 -acodec mp2 -ab <audio_bitrate> -f vob output.mpg

MJPEG en haute qualité

ffmpeg -i <input_file> -vcodec mjpeg -qscale 1 -an output.avi

MPEG-2 en version de streaming

ffmpeg -genpts 1 -i ES_Video.m2v -i ES_Audio.mp2 -vcodec copy -acodec copy -f vob output.mpg

Note :

  • Si vous souhaitez muxer plusieurs pistes audio dans le même fichier:

ffmpeg -genpts 1 -i ES_Video.m2v -i ES_Audio1.mp2 -i ES_Audio2.mp2 -vcodec copy -acodec copy -f vob output.mpg -newaudio

  • Si vous souhaitez réencoder le fichier TS en version PS :

ffmpeg -i input.mpg -vcodec copy -acodec copy -f vob output.mpg -acodec copy -newaudio

MPEG-2 streamé démuxé :

ffmpeg -i input.mpg -vcodec copy -f mpeg2video ES_Video.m2v -acodec copy -f mp2 ES_Audio.mp2

Note : ceci fonctionne également avec de multiple flux audio contenu ffmpeg -i input.mpg -vcodec copy -f mpeg2video ES_Video.m2v -acodec copy -f mp2 ES_Audio1.mp2 -acodec copy -f mp2 ES_Audio2.mp2

MPEG-2 Start Timecode

ffmpeg -i <input_file> -timecode_frame_start <start_timecode> -vcodec mpeg2video -an output.m2v

Note : Le codage timecode est basé sur le nombre d'image par exemple si vous souhaitez commencé à 18:12:36:15, vous devez configurer -timecode_frame_start à 1638915 pour une cadence de 25 img/s.

Modification du volume audio

ffmpeg -i <input_file> -vol <audio_volume> -acodec <audio_codec> <output_file>

Ajouter une piste sonore dans un streaming

ffmpeg -i input.vob -map 0:2 -acodec aac -ab <audio_bitrate> -vn output.mp4

ou map encode la piste sonore 2.

Découper un rush

ffmpeg -i <input_file> -ss <timecode> -t <timecode> -vcodec copy -acodec copy <output_file>

Créer une vidéo à partir d'une seule image

ffmpeg -loop_input -vframes <number_of_frames> -i <input_file> <output_file>

Advanced Video Options

  • -pix_fmt format' Set pixel format. Use 'list' as parameter to show all the supported pixel formats.
  • -sws_flags flags' Set SwScaler flags.
  • -g gop_size' Set the group of pictures size.
  • -intra' Use only intra frames.
  • -vdt n' Discard threshold.
  • -qscale q' Use fixed video quantizer scale (VBR).
  • -qmin q' minimum video quantizer scale (VBR)
  • -qmax q' maximum video quantizer scale (VBR)
  • -qdiff q' maximum difference between the quantizer scales (VBR)
  • -qblur blur' video quantizer scale blur (VBR) (range 0.0 - 1.0)
  • -qcomp compression' video quantizer scale compression (VBR) (default 0.5). Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0
  • -lmin lambda' minimum video lagrange factor (VBR)
  • -lmax lambda' max video lagrange factor (VBR)
  • -mblmin lambda' minimum macroblock quantizer scale (VBR)
  • -mblmax lambda' maximum macroblock quantizer scale (VBR) These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units, but you may use the QP2LAMBDA constant to easily convert from 'q' units:

ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext

  • -rc_init_cplx complexity' initial complexity for single pass encoding
  • -b_qfactor factor' qp factor between P- and B-frames
  • -i_qfactor factor' qp factor between P- and I-frames
  • -b_qoffset offset' qp offset between P- and B-frames
  • -i_qoffset offset' qp offset between P- and I-frames
  • -rc_eq equation' Set rate control equation (@xref{FFmpeg formula evaluator}) (default = tex^qComp).
  • -rc_override override' rate control override for specific intervals
  • -me_method method' Set motion estimation method to method. Available methods are (from lowest to best quality):
  • zero' Try just the (0, 0) vector.
  • phods'
  • log'
  • x1'
  • hex'
  • umh'
  • epzs' (default method)
  • full' exhaustive search (slow and marginally better than epzs)
  • -dct_algo algo' Set DCT algorithm to algo. Available values are:
  • 0'FF_DCT_AUTO (default)
  • 1'FF_DCT_FASTINT
  • 2'FF_DCT_INT
  • 3'FF_DCT_MMX
  • 4'FF_DCT_MLIB
  • 5'FF_DCT_ALTIVEC
  • -idct_algo algo'Set IDCT algorithm to algo. Available values are:
  • 0'FF_IDCT_AUTO (default)
  • 1'FF_IDCT_INT
  • 2'FF_IDCT_SIMPLE
  • 3'FF_IDCT_SIMPLEMMX
  • 4'FF_IDCT_LIBMPEG2MMX
  • 5'FF_IDCT_PS2
  • 6'FF_IDCT_MLIB
  • 7'FF_IDCT_ARM
  • 8'FF_IDCT_ALTIVEC
  • 9'FF_IDCT_SH4
  • 10'FF_IDCT_SIMPLEARM
  • -er n'Set error resilience to n.
  • 1'FF_ER_CAREFUL (default)
  • 2'FF_ER_COMPLIANT
  • 3'FF_ER_AGGRESSIVE
  • 4'FF_ER_VERY_AGGRESSIVE
  • -ec bit_mask'Set error concealment to bit_mask. bit_mask is a bit mask of the following values:
  • 1'FF_EC_GUESS_MVS (default = enabled)
  • 2'FF_EC_DEBLOCK (default = enabled)
  • -bf frames'Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
  • -mbd mode'macroblock decision
  • 0'FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg).
  • 1'FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
  • 2'FF_MB_DECISION_RD: rate distortion
  • -4mv'Use four motion vector by macroblock (MPEG-4 only).
  • -part'Use data partitioning (MPEG-4 only).
  • -bug param'Work around encoder bugs that are not auto-detected.
  • -strict strictness' How strictly to follow the standards.
  • -aic'Enable Advanced intra coding (h263+).
  • -umv'Enable Unlimited Motion Vector (h263+)
  • -deinterlace'Deinterlace pictures.
  • -ilme'Force interlacing support in encoder (MPEG-2 and MPEG-4 only). Use this option if your input file is interlaced and you want to keep the interlaced format for minimum losses. The alternative is to deinterlace the input stream with *-deinterlace', but deinterlacing introduces losses.
  • -psnr'Calculate PSNR of compressed frames.
  • -vstats'Dump video coding statistics to *vstats_HHMMSS.log'.
  • -vstats_file file'Dump video coding statistics to file.
  • -top n'top=1/bottom=0/auto=-1 field first
  • -dc precision'Intra_dc_precision.
  • -vtag fourcc/tag'Force video tag/fourcc.
  • -qphist'Show QP histogram.
  • -vbsf bitstream_filter'Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump".

ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264