Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
ffmpeg [Le 14/12/2011, 22:13]
89.90.117.21 [Dépôt officiel (recommandé)]
ffmpeg [Le 24/09/2023, 10:36] (Version actuelle)
146.70.196.140 [Utilisation]
Ligne 1: Ligne 1:
-{{tag>​audio vidéo encodage montage_vidéo capture_vidéo multimédia}}+{{tag>Focal audio vidéo encodage montage_vidéo capture_vidéo multimédia}}
  
 ---- ----
  
 +{{ http://​ffmpeg.org/​ffmpeg-logo.png?​150| Logo de ffmpeg}}
 ====== FFmpeg ====== ====== FFmpeg ======
  
-{{ http://​upload.wikimedia.org/​wikipedia/​en/​thumb/​f/​f8/​Ffmpeg_logo.svg/​200px-Ffmpeg_logo.svg.png| Logo de ffmpeg}} +**FFmpeg** est une application ​de lecture et encodage de vidéo. Très puissante ​comme son alter ego [[Mencoder]],​ il assure en [[;​commande_shell|ligne de commande]] la possibilité de convertir les fichiers ​vidéo ​d'un format à un autre, dont le **mts** et m2ts.
-**FFmpeg** est un logiciel ​de lecture et encodage de vidéo. Très puissant ​comme son petit frère ​[[Mencoder]],​ il assure en ligne de commande la possibilité de convertir les fichiers ​vidéos ​d'un format à un autre. ​+
  
 ===== Utilisation graphique ===== ===== Utilisation graphique =====
  
-Il existe des interfaces graphiques permettant de simplifier grandement le transcodage de fichiers: +Il existe des interfaces graphiques permettant de simplifier grandement le transcodage de fichiers : 
-  * [[http://​ekd.tuxfamily.org/​]] - EKD est un logiciel libre qui se propose de faire des opérations de post-production aussi bien pour des vidéos, que pour des images. En ce qui concerne les images, EKD fait du traitement par lots +  * [[http://​ekd.tuxfamily.org/​|EKD]] - EKD est un logiciel libre qui se propose de faire des opérations de post-production aussi bien pour des vidéos, que pour des images. En ce qui concerne les images, EKD fait du traitement par lots. 
-  * [[Hyper video converter]] - Il permet tout ce que permet FFMpeg mais avec une interface graphique ! +  * [[WinFF]] - Cette application ​vous permet de choisir parmi une liste de profils un encodage vidéo qui conviendra à vos attentes. Par exemple si vous voulez faire une vidéo compatible Blackberry, il ne vous sera même pas nécessaire de savoir quel est l'​encodage interne utilisé.
-  * [[WinFF]] - Ce logiciel ​vous permet de choisir parmi une liste de profils un encodage vidéo qui conviendra à vos attentes. Par exemple si vous voulez faire une vidéo compatible Blackberry, il vous sera même pas nécessaire de savoir quel est l'​encodage interne utilisé.+
  
-D'​autres interfaces graphiques ont été créées pour répondre à des attentes spécifiques:​ +D'​autres interfaces graphiques ont été créées pour répondre à des attentes spécifiques : 
-  * [[Mobile Media Converter]] ​se propose quant à lui de transcoder vos vidéos pour les appareils de lecture vidéo mobiles ​tel que les téléphones portables les ipod et les lecteurs MP3/MP4. +  * [[Mobile Media Converter]] ​- Se propose quant à lui de transcoder vos vidéos pour les appareils de lecture vidéo mobiles ​tels que les téléphones portables les iPod et les lecteurs MP3/MP4. 
- +  * [[:​DVDstyler]] - Transcode pour construire des DVD vidéos avec des menus interactifs. 
-D'​autres ​logiciels ​permettent de faire des modifications plus profondes à la vidéo et utilisent FFMpeg pour rendre la vidéo finale: +  * [[:Devede]] - Se propose de transcoder puis graver vos vidéos aux formats CD/DVD. 
-  * [[Avidemux]] - Sa principale particularité est de permettre l'​application de filtres à la vidéo comme par exemple enlever les bandes ​noire d'une vidéo. Concernant le transcodage il se débrouille très bien et permet l'​utilisation des principaux codecs en lecture et en écriture(équivalent de Virtualdub) +D'​autres ​applications ​permettent de faire des modifications plus profondes à la vidéo et utilisent FFMpeg pour rendre la vidéo finale : 
-  * [[Cinelerra]] - Logiciel ​de montage extrêmement ​puissant, ne convient pas aux débutants et ne propose pas une interface simple d'​utilisation en matière de transcodage. Réservez ​le à vos effets spéciaux :-D +  * [[Avidemux]] - Sa principale particularité est de permettre l'​application de filtres à la vidéo comme par exemple enlever les bandes ​noires ​d'une vidéo. Concernant le transcodage il se débrouille très bien et permet l'​utilisation des principaux codecs en lecture et en écriture (équivalent de Virtualdub). 
-  * [[Kino]] - Logiciel ​de montage et de transcodage ​destiné ​aux débutants.+  * [[Cinelerra]] - Application ​de montage extrêmement ​puissante, ne convient pas aux débutants et ne propose pas une interface simple d'​utilisation en matière de transcodage. Réservez-la à vos effets spéciaux :-D 
 +  * [[Kino]] - Application ​de montage et de transcodage ​destinée ​aux débutants
 +  * [[https://​sourceforge.net/​projects/​outreel/​files/​|Outreel]] - Une autre interface graphique pour FFMpeg.
  
  
 ===== Installation ===== ===== Installation =====
  
 +[[:​tutoriel:​comment_installer_un_paquet|Installer le paquet]] **[[apt>​ffmpeg]]**
  
-==== Dépôt officiel (recommandé) ​====+===== Utilisation =====
  
-Il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] ​**[[apt://​ffmpeg|ffmpeg]]** une fois les [[depots#​universe_et_multiverse|dépôts Universe activés]].+**Tout ce qui suit parlera de la partie manipulation de fichier Audio - Video.**
  
-Note : les packages par défaut ne contiennent pas les codecs les plus classiques comme "​mpeg4"​pour cela il faut installer spécifiquement ​+Cependant, il est utile de savoir que **ffmpeg** intègre par défaut un lecteur minimaliste audio-video **ffplay** utilisable depuis le terminal.
  
-  sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52 libavformat-unstripped-52 libavutil-unstripped-50 libpostproc-unstripped-51 libswscale-unstripped-0 ffmpeg +Attention, minimaliste ne veut pas dire peu performant.\\ 
-   +Avec toutes les possibilités de ffmpeg vous pouvez aller bien plus loin que n'​importe quel lecteur.\\ 
-==== Dépôt PPA (Jon Severinsson) ====+Seul ressource pour cela ... connaitre les arguments à entrer dans la commande terminal.
  
-Ajouter le dépôt en tapant la commande ​:+En bref plus léger, plus simple et plus qualitatif par défaut. Par choix, plus tout ce que vous voulez pour aller plus loin.
  
-  sudo add-apt-repository ppa:​jon-severinsson/​ffmpeg && sudo apt-get update -qq 
  
-et ensuite pour l'​installer cliquer ​**[[apt>​ffmpeg|ici]]**+**Utilisation pour lire UN SEUL fichier Audio ou Video**
  
-==== Par compilation ====+Tapez dans le terminal ce qui suit et appuyez sur la touche "​Entrée"​ du clavier\\
  
-Il peut être intéressant de compiler FFmpeg afin de bénéficier des dernières optimisations et de manipuler des formats qui n'​étaient pas encore supportés. +__Pour un fichier video__\\ 
-Par exemple pour les vidéos haute définition encodées avec x264 qui demandent beaucoup moins de ressources dans les dernières versions. +<​code>​ffplay "​le_chemin_du_fichier_que_je_veux_lire.mkv" ​(ou .mp4, etc.;​l'​extension du fichier à lire)</code>
-(Voir le [[http://​ffmpeg.mplayerhq.hu/changelog.html|changelog]] de FFmpeg)+
  
-<note important> +__Pour un fichier audio__\\ 
-Cette méthode permet d'​installer la toute dernière version de FFmpegmais celle-ci provenant du serveur [[git|Git]],​ elle est toujours en développement,​ ce qui signifie qu'​elle peut se révéler instableL'utilisation de cette version est donc à vos risques et périls.+<code>ffplay "​le_chemin_du_fichier_que_je_veux_lire.wav"​ (ou .aacetc.;l'extension du fichier ​à lire)</​code>​
  
-Pour les détails de la compilation,​ rendez-vous à: [[tutoriel:​comment_compiler_ffmpeg|Comment compiler FFmpeg]] +//NB les guillemets sont importants car ils vous éviteront une erreur si le chemin a des espaces ou des caractères spéciaux//
-</note>+
  
-==== FFmpeg ​et le support AAC ====+Pour arrêter la lecture appuyer sur "​Echap"​ ou "​q"​\\ 
 +**IMPORTANT** Quitter proprement le terminal en tapant ​ //​exit// ​ une fois pour terminer le processus son, et une autre fois pour fermer ​le terminal\\ 
 +\\
  
-À compter de Ubuntu 7.04 (Feisty Fawn), une version de FFmpeg avec le support AAC activé est disponible dans le dépôt [[:​depots:#​medibuntu]]. Vous pouvez donc vouloir ajouter ce dépôt !+**Utilisation pour lire plusieurs fichiers audio ou video CONTENUS __DANS UN SEUL ET MEME REPERTOIRE__**\\
  
-Vous pouvez aussi utiliser la méthode par compilation:​ [[tutoriel:​comment_compiler_ffmpeg|Comment compiler FFmpeg]] 
  
-Et voilà, la version compilée devrait permettre de compresser vos vidéos pour la  ​PSP.+Tapez dans le terminal ce qui suit et appuyez sur la touche "​Entrée" ​ du clavier\\
  
-==== Depuis les dépôts Medibuntu ====+<​code>​cd /​le_chemin_de_votre_repertoire_contenant_les_fichiers_a_lire</​code>​ 
 +puis\\ 
 +<​code>​for f in *.wav ; do ffplay -hide_banner -nodisp -autoexit "​$f";​ done</​code>​
  
-Pour installer rapidement toute la collection des codecs, il faut activer le dépôt [[Medibuntu]] et installer le paquet **[[apt://libavcodec-extra-52|libavcodec-extra-52]]** : +// si vous lisez une video supprimez dans la commande ci-dessus l'​option ​-nodisp qui indique de ne pas afficher la fenêtre du graph audio//\\ 
-<​code>​sudo apt-get install libavcodec-extra-52<​/code>+//-hide_banner bloque l'​affichage des infos sur ffmpeg//\\ 
 +//-autoexit ferme ffplay quand le fichier est lu//\\ 
 +//(.wav à remplacer par votre format .flac .ogg .mp3 .mp4 .m4a .aac .opus .mkv .webm etc.)//
  
-Attention : ces codecs peuvent ne pas être libres !+Ctrl + C pour passer au morceau suivant\\ 
 +Ctrl + Z pour arrêter\\ 
 +**IMPORTANT** Quitter proprement le terminal en tapant ​ //​exit// ​ une fois pour terminer le processus son, et une autre fois pour fermer le terminal\\ 
 +\\
  
-===== Utilisation ===== +**Utilisation pour lire TOUT LE CONTENU D'UN RÉPERTOIRE contenant PLUSIEURS DOSSIERS avec des fichiers audio**
-**pré-requis**: savoir utiliser un [[:​terminal]]+
  
-FFMpeg s'​utilise en ligne de commande ​dans un **[[terminal]]**.+<​code>​find /​chemin_du_repertoire/​ma_musique/​ -type f > filelist.txt && while [ 1 ]; do SDL_AUDIODRIVER=alsa AUDIODEV=hw:​2,​0 ffplay -hide_banner -nodisp -autoexit "`shuf -n 1 filelist.txt`";​ done</​code>​\\ 
 +NB //​SDL_AUDIODRIVER=alsa AUDIODEV=hw:​2,​0//​ sert à contourner le mixeur du PC pour envoyer cela directement sur la sortie USB, ici hw:2,0; trouvez la vôtre avec la commande\\ 
 +<​code>​cat /​proc/​asound/​cards</​code>​ 
 +Ctrl + C pour passer au morceau suivant\\ 
 +Ctrl + Z pour arrêter\\ 
 +**IMPORTANT** Quitter proprement le terminal en tapant ​ //​exit// ​ une fois pour terminer le processus son, et une autre fois pour fermer le terminal\\
  
-Ce programme demande un peu de patience ​pour le domestiquer,​ mais nous allons essayer ​de vous expliquer son fonctionnement bien comme il faut ! +J'​invite les pros de ffmpeg à ajouter une rubrique à la fin de cette page pour les commandes détaillées ​de ffplay ​en ce qui concerne les fichiers videos et la sélection directe des langues et sous-titres ainsi que l'augmentation du format pour supprimer les bandes noires ​et utiliser tout l'écran.\\
- +
-Première chose, il faut passer des instructions au programme pour fonctionner. +
-Une instruction est un texte, le plus souvent précédé d'un tiret, qui permet d'​expliquer à un programme ​en ligne de commande ​ce que l'on veut de lui ! +
-Les instructions peuvent être dans l'​ordre que vous voulez ! +
-Mais vous ne devez pas mélanger l'​instruction ​et l'information que l'on veut passer à l'​instruction. +
-Par exemple:  +
-<​code>​-vcodec copy</​code>​ +
--vcodec commence par un tiret, il est donc l'​instruction,​ "​copy"​ par contre est ce que l'on veut dire à "​-vcodec"​ il faut dont qu'il soit précisé juste après ! +
- +
-Pour en savoir plus, analysez les [[#exemples de conversions]] en bas de page et dans le courant du texte !+
  
 ==== Commencer sur une bonne base ==== ==== Commencer sur une bonne base ====
   ​   ​
-Toutes les instructions se passe de la même façon.+Toutes les instructions se passent ​de la même façon.
 Par exemple pour  **-vcodec copy** taper dans un [[:​terminal]]:​ Par exemple pour  **-vcodec copy** taper dans un [[:​terminal]]:​
 <​code>​ffmpeg -vcodec copy</​code>​ <​code>​ffmpeg -vcodec copy</​code>​
  
 Pour identifier le format d'un fichier multimedia (audio et/ou video), tapez : Pour identifier le format d'un fichier multimedia (audio et/ou video), tapez :
-  ffmpeg -i fichier 2>&1 | egrep "​Seems|Input|Duration:​|Stream"​+  ffmpeg -i fichier 2>&1 | grep -E "​Seems|Input|Duration:​|Stream"​
 <​code>​ <​code>​
 Seems stream 1 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1) Seems stream 1 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1)
Ligne 102: Ligne 103:
     Stream #0.1: Video: wmv3, yuv420p, 320x240, 323 kb/s, 25 tbr, 1k tbn, 1k tbc     Stream #0.1: Video: wmv3, yuv420p, 320x240, 323 kb/s, 25 tbr, 1k tbn, 1k tbc
 </​code>​ </​code>​
-Le nombre d'​instructions à passer peut être grand, il faudra en ajouter bout à bout et au final vous finirez par créer vous même une commande correspondant à vos besoins ! +Le nombre d'​instructions à passer peut être grand, il faudra en ajouter bout à bout et au final vous finirez par créer vous-même une commande correspondant à vos besoins ! 
-Une commande finale ressemblera à ça:+Une commande finale ressemblera à ça :
 <​code>​ffmpeg -i "​vidéo d'​entrée.avi"​ -threads 4 -f matroska -vcodec libvpx -vb 1350000 -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 15 -qmax 30 -acodec libvorbis -ab 128k -ar 44100 -ac 2 "​vidéo de sortie.mkv"</​code>​ <​code>​ffmpeg -i "​vidéo d'​entrée.avi"​ -threads 4 -f matroska -vcodec libvpx -vb 1350000 -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 15 -qmax 30 -acodec libvorbis -ab 128k -ar 44100 -ac 2 "​vidéo de sortie.mkv"</​code>​
 +
 +Voici un exemple concret qui converti un fichier **mts** en **avi** : <​code>​ffmpeg -i input.mts -vcodec mjpeg -b 100M -acodec pcm_s16be output.avi</​code>​
  
 ==== Connaître FFmpeg ==== ==== Connaître FFmpeg ====
Ligne 112: Ligne 115:
 === Connaître les conteneurs installés === === Connaître les conteneurs installés ===
  
-Il est important de savoir ce que ffmpeg ​est capable de lire et d'​écrire ! Si vous ne le savez pas, c'est simple ! Vous ne pouvez rien faire ! +Il est important de savoir ce que FFmpeg ​est capable de lire et d'​écrire ! Si vous ne le savez pas, c'est simple ! Vous ne pouvez rien faire ! 
-Lancez ​la commande: +Depuis un [[:​terminal]],​ lancez ​la [[:​commande_shell|commande]] :
 <​code>​ffmpeg -formats</​code>​ <​code>​ffmpeg -formats</​code>​
-   +Après avoir appuyé sur la touche "​Entrée",​ vous devez avoir une longue liste de formats (conteneurs) que reconnaît ​ffmpeg.
-Après avoir appuyé sur la touche "​Entrée",​ vous devez avoir une longue liste de formats (conteneurs) que reconnait ​ffmpeg.+
 Cette liste est organisée de manière simple, la première colonne indique si l'on peut lire (D) ou écrire (E) le format en question. Cette liste est organisée de manière simple, la première colonne indique si l'on peut lire (D) ou écrire (E) le format en question.
  
Ligne 124: Ligne 125:
  
 === Connaître les codecs installés === === Connaître les codecs installés ===
- 
 Comme pour les conteneurs, vous pouvez avoir la liste des codecs disponibles. Comme pour les conteneurs, vous pouvez avoir la liste des codecs disponibles.
-Pour ceci faites:+Pour ceci, dans un [[:​terminal]] ​faites :
 <​code>​ffmpeg -codecs</​code>​ <​code>​ffmpeg -codecs</​code>​
  
Ligne 143: Ligne 143:
 === Utilisation Multithreads === === Utilisation Multithreads ===
  
-Si FFmpeg est compilé avec la possibilité de faire du **[[multithreading]]** (la version par défaut d'ubuntu ​le permet par exemple), il permet sans aucune difficulté d'​utiliser les processeurs actuels à leur plein potentiel pour encoder un fichier, il suffit de passer l'​instruction threads à ffmpeg à chaque encodage:+Si FFmpeg est compilé avec la possibilité de faire du **[[multithreading]]** (la version par défaut d'Ubuntu ​le permet par exemple), il permet sans aucune difficulté d'​utiliser les processeurs actuels à leur plein potentiel pour encoder un fichier, il suffit de passer l'​instruction threads à ffmpeg à chaque encodage :
 <​code>​-threads 0</​code>​ <​code>​-threads 0</​code>​
  
Ligne 173: Ligne 173:
 C'​est-à-dire que si le fichier final se termine par **.mkv** le format sera automatiquement mis en **matroska** sans vous demander votre avis. C'​est-à-dire que si le fichier final se termine par **.mkv** le format sera automatiquement mis en **matroska** sans vous demander votre avis.
  
-Mais vous pouvez vous exprimer haut et fort ! en précisant le format via l'​option **-f**.+Mais vous pouvez vous exprimer haut et fort (!en précisant le format via l'​option **-f**.
 Vous pouvez faire suivre "​-f"​ de tous les formats que vous voulez suivant la liste que vous donne **ffmpeg -formats**. Vous pouvez faire suivre "​-f"​ de tous les formats que vous voulez suivant la liste que vous donne **ffmpeg -formats**.
 Par exemple : Par exemple :
Ligne 179: Ligne 179:
 -f avi</​code>​ -f avi</​code>​
   ​   ​
-==== Instructions d'​encodage ​Audio ====+==== Extraction de la bande Audio ==== 
 +Tapez la commande : 
 +  ffmpeg -i <nom du fichier video> -vn -acodec libmp3lame bande_son 
 +   
 +<note important>​ Cette commande n'​extraira pas la piste audio //​originale//,​ mais la **transcodera en mp3**, ce qui a des effets néfastes sur la qualité (mais peut servir un intérêt de compatibilité). 
 +</​note>​ 
 +On lui préférera de manière générale cette méthode pour **extraire la piste audio originale (sans transcodage) de la vidéo** : 
 +  * D'​abord se renseigner sur le type de flux audio, via [[mediainfo-gui|Mediainfo]] ou la commande :
  
 +  ffmpeg -i <votre vidéo>
 +
 +<note utile>​N'​oubliez pas que vous pouvez glisser-déposer votre fichier dans le terminal plutôt que de recopier entièrement son chemin d'​accès. Cela limite le risque d'​erreurs avec les espaces etc. ;​-)</​note>​
 +Et regarder l'​avant-dernière ligne de ce qui ressort, par exemple :
 +
 +  ...
 +  Stream #0.1: Audio: aac, 44100 Hz, stereo, s16, 69 kb/s
 +  At least one output file must be specified
 +
 +  * Puis appuyer sur Flèche haut (pour ré-entrer automatiquement la commande précédente) ou la retaper puis compléter :
 +
 +  ffmpeg -i <votre fichier video> -vn -acodec copy '​(destination et) nom du fichier audio créé'​.EXTENSION
 +
 +Remplacer EXTENSION par :
 +  * **.m4a** (préférable) ou **.mp4** pour un flux audio en **aac** (comme dans l'​exemple),​ la majorité des vidéos Flash (FLV) récupérées d'​Internet ainsi que de nombreux MKV utilisant ce format,
 +<note important>​ Attention à ne pas mettre "​.aac"​ comme extension, sous peine d'​avoir un fichier en //raw aac// qui ne sera pas (ou problématiquement) lisible. Le AAC doit être placé dans un [[https://​fr.wikipedia.org/​wiki/​Format_conteneur|conteneur]] pour être lu, d'où le "​.m4a"​ qui est la version audio du MP4 (qui pourrait convenir aussi, mais bon... Vous voulez un fichier audio, donc autant faire les choses bien :​-D).</​note>​
 +  * **.mp3** pour un flux audio en **mp3**,
 +  * **.ogg** pour un flux audio en **vorbis**...
 +==== Extraction de la bande Video ====
 +Tapez la commande :
 +  ffmpeg -i '​(chemin et)nom du fichier video' -an -vcodec copy '​(chemin et) nom de la bande video extraite'​.EXTENSION
 +
 +<note important>​ Cette commande ne fonctionnera pas tant que vous ne préciserez pas l'​**extension** du fichier à créer, à savoir son conteneur.
 +Ici cependant, on peut se contenter d'​utiliser la même extension que le fichier source (.mkv, .ogm, .avi, etc), ou encore changer de conteneur (passer de .flv à .mkv par exemple) sans pour autant transcoder le flux vidéo, ce qui est bien pratique.</​note>​
 +__Remarque__:​ bien que ffmpeg fasse très bien les choses, pour certains formats et en particulier le MKV, il est recommandé d'​utiliser les outils dédiés tels que [[mkvtoolnix]].
 +==== Instructions d'​encodage Audio ====
 Il faut paramétrer le son. Et c'est très simple ! Il faut paramétrer le son. Et c'est très simple !
 <​code>​-acodec "nom du codec"</​code>​ <​code>​-acodec "nom du codec"</​code>​
Ligne 195: Ligne 228:
 Les paramètres suivants sont optionnels (si l'on ne précise rien, les caractéristiques seront identiques au fichier d'​origine). Les paramètres suivants sont optionnels (si l'on ne précise rien, les caractéristiques seront identiques au fichier d'​origine).
  
-Vous pouvez choisir la fréquence d'​échantillonnage comme ceci:+Vous pouvez choisir la fréquence d'​échantillonnage comme ceci :
 <​code>​-ar 44100</​code>​ <​code>​-ar 44100</​code>​
  
Ligne 202: Ligne 235:
 2 étant le nombre de voies (2 : stéréo, 6 : 5.1, etc ...) 2 étant le nombre de voies (2 : stéréo, 6 : 5.1, etc ...)
  
 +Pour supprimer l'​audio
 +<​code>​-an</​code>​
 ==== Instructions d'​encodage vidéo ==== ==== Instructions d'​encodage vidéo ====
  
-C'est là ou ça se complique car il y a plein de codecs ​vidéos, et ils ont souvent des instructions ​obscurs, même pour les utilisateurs les plus avertis... Ce qui est... Déroutant...+C'est là où ça se complique car il y a plein de codecs ​vidéo, et ils ont souvent des instructions ​obscures, même pour les utilisateurs les plus avertis... Ce qui est... Déroutant...
  
 Mais ne vous inquiétez pas, nous allons vous expliquer comment éviter les plus gros pièges ! Mais ne vous inquiétez pas, nous allons vous expliquer comment éviter les plus gros pièges !
Ligne 214: Ligne 249:
 == Codec libx264 == == Codec libx264 ==
  
-Le codec libx264 a besoin d'​une ​instructions ​supplémentaire obligatoire.+Le codec libx264 a besoin d'​une ​instruction ​supplémentaire obligatoire.
  
-Si vous souhaitez l'​utiliser,​ il est fortement conseillé d'​utiliser les //​preset// ​fournie ​par ffmpeg.+Si vous souhaitez l'​utiliser,​ il est fortement conseillé d'​utiliser les //​preset// ​fournis ​par ffmpeg.
 Ce sont des "​packs"​ d'​options pré-configurées. Ce sont des "​packs"​ d'​options pré-configurées.
 <​code>​-vpre</​code>​ <​code>​-vpre</​code>​
-suivi d'un //preset// qui donnera les paramètres par défaut de l'​encodeur à FFMpeg ​suivant plusieurs profils.+suivi d'un //preset// qui donnera les paramètres par défaut de l'​encodeur à ffmpeg ​suivant plusieurs profils.
  
-Les //preset// gérant la complexité et les //feature// activés dans le fichier vidéo de sortie : +Les //presets// gérant la complexité et les //features// activés dans le fichier vidéo de sortie : 
-  * baseline : à utiliser si votre matériel n'​arrive pas à décoder les fichiers encodés avec les autres //preset//.+  * baseline : à utiliser si votre matériel n'​arrive pas à décoder les fichiers encodés avec les autres //presets//.
   * main : inférieur au profile //high//   * main : inférieur au profile //high//
   * ipod320   * ipod320
Ligne 228: Ligne 263:
 Le profile //high// n'est pas disponible en option car il est le //preset// par défaut. Le profile //high// n'est pas disponible en option car il est le //preset// par défaut.
  
-Les //preset// gérant le temps nécessaire à l'​encodage :+Les //presets// gérant le temps nécessaire à l'​encodage :
   * ultrafast : le plus rapide, mais donne la moins bonne qualité d'​image.   * ultrafast : le plus rapide, mais donne la moins bonne qualité d'​image.
   * superfast   * superfast
Ligne 240: Ligne 275:
   * placebo : le plus lent, mais pas la meilleure qualité (optimisé pour les benchmarks)   * placebo : le plus lent, mais pas la meilleure qualité (optimisé pour les benchmarks)
  
-Les //preset// gérant le temps nécessaire à un encodage sans aucune perte de qualité d'​image :+Les //presets// gérant le temps nécessaire à un encodage sans aucune perte de qualité d'​image :
   * lossless_max   * lossless_max
-  ​* lossless_ultrafast+ ​*<​del>​* lossless_ultrafast</​del>​
   * lossless_fast   * lossless_fast
   * lossless_medium   * lossless_medium
Ligne 255: Ligne 290:
 == codec libvpx == == codec libvpx ==
  
-Le codec libvpx (c'est à dire VP8) propose des options par défaut de très mauvaise qualité...+Le codec libvpx (c'est-à-dire VP8) propose des options par défaut de très mauvaise qualité...
 Il va falloir préciser quelques options non obligatoires,​ mais grandement conseillées. Il va falloir préciser quelques options non obligatoires,​ mais grandement conseillées.
  
Ligne 267: Ligne 302:
 Faire une vidéo en bitrate (débit) constant revient à rendre les scènes en mouvement moins belles que les scènes statiques, ce type d'​encodage n'est pas conseillé ! Faire une vidéo en bitrate (débit) constant revient à rendre les scènes en mouvement moins belles que les scènes statiques, ce type d'​encodage n'est pas conseillé !
  
-Pour choisir un bitrate, il suffit de le préciser après l'​instruction:​+Pour choisir un bitrate, il suffit de le préciser après l'​instruction :
 <​code>​-b</​code>​ <​code>​-b</​code>​
  
-Le bitrate peut être préciser ​en bits/s ou en kbits/s:+Le bitrate peut être précisé ​en bits/s ou en kbits/s :
 <​code>​-b 2700000</​code>​ <​code>​-b 2700000</​code>​
 <​code>​-b 2700k</​code>​ <​code>​-b 2700k</​code>​
Ligne 276: Ligne 311:
 === Encodage à qualité constante === === Encodage à qualité constante ===
  
-Faire une qualité constante est très simple, il suffit de choisir un quantiser identique pour la qualité maximale et minimale de la vidéo avec les instructions suivantes:+Faire une qualité constante est très simple, il suffit de choisir un quantiser identique pour la qualité maximale et minimale de la vidéo avec les instructions suivantes :
 <​code>​-qmin 20 -qmax 20</​code>​ <​code>​-qmin 20 -qmax 20</​code>​
  
Ligne 291: Ligne 326:
 === Encodage 2-pass === === Encodage 2-pass ===
  
-L'​encodage double ​passes, multi passes, 2pass ou autres, est une technique d'​encodage qui mêle les deux techniques d'​encodage précédentes.+L'​encodage double ​passe, multi-passes, 2pass ou autres, est une technique d'​encodage qui mêle les deux techniques d'​encodage précédentes.
  
 Cette technique permet d'​encoder une première fois à bitrate constant pour faire un index des moments qui vont être encodés avec une qualité exécrable. Cette technique permet d'​encoder une première fois à bitrate constant pour faire un index des moments qui vont être encodés avec une qualité exécrable.
Ligne 301: Ligne 336:
 <​code>​-b 2700000 -qmin 1 -qmax 31 -minrate 0 -maxrate 9000000 -pass 1 -passlogfile pass1.fpf</​code>​ <​code>​-b 2700000 -qmin 1 -qmax 31 -minrate 0 -maxrate 9000000 -pass 1 -passlogfile pass1.fpf</​code>​
  
-Les paramètres sont simples: on choisit le bitrate moyen voulu, le bitrate minimum (-minrate) que l'on peut atteindre (pourquoi pas 0), et le bitrate maximum (-maxrate) (là aussi, si la vidéo n'a rien à voir avec le streaming, mettez le plus haut possible).+Les paramètres sont simples : on choisit le bitrate moyen voulu, le bitrate minimum (-minrate) que l'on peut atteindre (pourquoi pas 0), et le bitrate maximum (-maxrate) (là aussi, si la vidéo n'a rien à voir avec le streaming, mettez le plus haut possible).
 Il faut aussi préciser un quantiser minimum et maximum ! Pourquoi ? Parce que certains codecs comme le VP8 ont des bugs si on ne le fait pas... Il faut aussi préciser un quantiser minimum et maximum ! Pourquoi ? Parce que certains codecs comme le VP8 ont des bugs si on ne le fait pas...
  
-Certains codecs ont leur maxi à 31 d'autre plus haut. Comme le VP8 et le x264 qui vont jusqu'​à 51.+Certains codecs ont leur maxi à 31 d'autres ​plus haut. Comme le VP8 et le x264 qui vont jusqu'​à 51.
  
 Ensuite, -pass 1 signifie que nous sommes en train d'​effectuer la première passe. et passlogfile est le fichier "​pass"​ que l'on écrira temporairement. Ensuite, -pass 1 signifie que nous sommes en train d'​effectuer la première passe. et passlogfile est le fichier "​pass"​ que l'on écrira temporairement.
Ligne 325: Ligne 360:
 Vous pouvez transformer la vidéo avec ffmpeg, modifier la résolution,​ changer l'​aspect ratio (4/3, 16/9), couper autour de l'​image,​ etc. Vous pouvez transformer la vidéo avec ffmpeg, modifier la résolution,​ changer l'​aspect ratio (4/3, 16/9), couper autour de l'​image,​ etc.
  
-Bon pour la découpe... c'est clair c'est plus simple avec un outils ​graphique comme [[Handbrake]],​ mais ne sous estimez pas la puissance de la ligne de commande hein ! :-D+Bon pour la découpe... c'est clair c'est plus simple avec un outil graphique comme [[Handbrake]],​ mais ne sous estimez pas la puissance de la ligne de commande hein ! :-D
  
 === Changer la résolution === === Changer la résolution ===
Ligne 338: Ligne 373:
  
  
-| qqvga   | qvga    | vga     | svga    | wvga    |  +| qqvga   | qvga    | vga     | svga    | wvga    | 
-| 160x120 | 320x240 | 640x480 | 800x600 | 852x480 | +| 160x120 | 320x240 | 640x480 | 800x600 | 852x480 |
  
 | xga      | uxga      | sxga      | wxga     | wsxga     | wuxga     | qxga      | woxga     | qsxga     | wqsxga ​   | wquxga ​   | | xga      | uxga      | sxga      | wxga     | wsxga     | wuxga     | qxga      | woxga     | qsxga     | wqsxga ​   | wquxga ​   |
Ligne 358: Ligne 393:
 <​code>​-r FPS</​code>​ <​code>​-r FPS</​code>​
  
-par exemple :+Par exemple :
 <​code>​-r 25</​code>​ <​code>​-r 25</​code>​
  
Ligne 368: Ligne 403:
 ==== Faire des essais de conversion avec FFmpeg sur une portion de fichier ==== ==== Faire des essais de conversion avec FFmpeg sur une portion de fichier ====
  
-La commande ci dessous permet de faire un essai d'​encodage:​+La commande ci dessous permet de faire un essai d'​encodage :
 <​code>​ffmpeg -ss 80 -t 60 -i videoInput.mpg -s 240x180 -b 380k -ab 64k videoOutput.flv</​code>​ <​code>​ffmpeg -ss 80 -t 60 -i videoInput.mpg -s 240x180 -b 380k -ab 64k videoOutput.flv</​code>​
  
Ligne 378: Ligne 413:
  
 ==== Exemples de conversions ==== ==== Exemples de conversions ====
 +
 +=== Convertir un fichier video pour faciliter le partage sur les clouds, réseaux sociaux et messageries ===
 +Cette conversion est utile pour réduire de façon drastique la taille des fichiers en conservant une qualité suffisante pour le regarder sur un téléphone.
 +<​code>​ffmpeg -i FichierSource.MOV -vcodec libx264 FichierResultat.mp4</​code>​
 +Si la source est en HD, vous pouvez réduire la définition pour réduire de façon importante la taille du fichier :
 +<​code>​ffmpeg -i FichierSourceHD.MOV -s wvga -vcodec libx264 FichierResultat.mp4</​code>​
 +(on peut remplacer //wvga// par //hd720//, cf. [[wpfr>​Format_d'​affichage_vidéo]]… ou définir la taille//​x//​×//​y//,​ mais attention de respecter le ratio
  
 === Convertir une vidéo en WebM (VP8+Vorbis) en deux passes === === Convertir une vidéo en WebM (VP8+Vorbis) en deux passes ===
Ligne 384: Ligne 426:
 Pour que cela fonctionne vous devez avoir minimum FFMpeg 0.6 ! Pour que cela fonctionne vous devez avoir minimum FFMpeg 0.6 !
  
-<​code>​ffmpeg ​-i '​fichier source'​ -threads 0 -vcodec libvpx -b 1500000 ​-rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -minrate 0 -maxrate 9000000 ​-an  -pass 1 -passlogfile pass1.fpf pass1.webm +<​code>​avconv ​-i '​fichier source'​ -threads 0 -vcodec libvpx -b 1500k -minrate 0 -maxrate 9000k -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -an  -pass 1 -passlogfile pass1.fpf pass1.webm 
-  ​ffmpeg ​-i '​fichier source'​ -threads 0 -vcodec libvpx -b 1500000 ​-rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -minrate 0 -maxrate 9000000 ​-acodec libvorbis -ab 192k -ar 44100 -ac 2 -pass 2 -passlogfile pass1.fpf "​fichier final.webm"</​code>​+avconv ​-i '​fichier source'​ -threads 0 -vcodec libvpx -b 1500k -minrate 0 -maxrate 9000k -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -acodec libvorbis -ab 192k -pass 2 -passlogfile pass1.fpf "​fichier final.webm"​</​code>​ 
 + 
 +===Convertir un fichier webm en .mp4=== 
 +Le format [[webm|webm]] est largement utilisé sur internet, en particulier pour youtube. Vous pouvez télécharger ces vidéos de différentes façons, par exemple via [[youtube-dl|youtube-dl]]. Pour voir ces vidéos sur une télévision,​ il vous faudra sans doute modifier le format (il n'est généralement pas reconnu). Pour passer la vidéo webm en .mp4 : 
 + 
 +<​code>​ffmpeg -i ma-video.webm ma-video.mp4</​code>​ 
 +La qualité de sortie est alors en qualité moyenne. 
 + 
 +Vous pouvez spécifier une autre qualité de sortie avec l'​option **-crf**. "​0"​ donne la meilleur qualité (et le plus gros fichier), "​51"​ donne la moins bonne qualité (et le plus petit fichier). Pour une qualité maximum (mais le fichier peut-être 10 fois plus gros que le webm initial !) : 
 + 
 +<​code>​ffmpeg -i ma-video.webm -crf 0 ma-video.mp4</​code>​
  
 === Convertir une vidéo en x264 en qualité constante === === Convertir une vidéo en x264 en qualité constante ===
  
-Cette commande permet d'​encoder un fichier vidéo en H.264 en qualité constante:+Cette commande permet d'​encoder un fichier vidéo en H.264 en qualité constante :
 <​code>​ffmpeg -threads 0 -i "​fichier d'​origine"​ -f matroska -vcodec libx264 -vpre normal -crf 20 -acodec libvorbis -ab 192k -ar 44100 -ac 2 "​fichier final.mkv"</​code>​ <​code>​ffmpeg -threads 0 -i "​fichier d'​origine"​ -f matroska -vcodec libx264 -vpre normal -crf 20 -acodec libvorbis -ab 192k -ar 44100 -ac 2 "​fichier final.mkv"</​code>​
  
 === Convertir le format FLV en AVI === === Convertir le format FLV en AVI ===
  
-Cette conversion est utile si vous téléchargez des vidéos en streaming (YouTube, Google Video, etc.).+Cette conversion est utile si vous téléchargez des vidéos en streaming (YouTube, Google Video, framatube.org !-), etc.).
 <​code>​ffmpeg -i nom_du_fichier.flv -f avi nom_du_fichier.avi</​code>​ <​code>​ffmpeg -i nom_du_fichier.flv -f avi nom_du_fichier.avi</​code>​
 +
 +Si vous voulez télécharger une vidéo depuis Youtube ou d'​autres sites, voir aussi : [[:​telecharger_streaming]]
  
 === Convertir le format AVI en MPEG === === Convertir le format AVI en MPEG ===
  
 Un exemple de commande, et d'​options,​ pour faire un DVD (donc un format MPEG) depuis un fichier ''​avi''​ :  Un exemple de commande, et d'​options,​ pour faire un DVD (donc un format MPEG) depuis un fichier ''​avi''​ : 
-<​code>​ffmpeg -i ma_video.avi -target pal-dvd -aspect 16:9 -sameq mon_dvd_video.mpg</​code>​+<​code>​ffmpeg -i ma_video.avi -target pal-dvd -aspect 16:9 -qscale 0 mon_dvd_video.mpg</​code>​
 Où : Où :
   * **-i ma_video.avi** est le fichier départ ;   * **-i ma_video.avi** est le fichier départ ;
Ligne 417: Ligne 471:
  
 Ce script permet d'​automatiser la conversion de vidéos de plusieurs formats ( Mpeg4, Avi, Flv etc... ) vers le format MP3. Ce script permet d'​automatiser la conversion de vidéos de plusieurs formats ( Mpeg4, Avi, Flv etc... ) vers le format MP3.
-Plusieurs formats de vidéos peuvent se trouver dans le même dossier au moment de la conversion. ​+Plusieurs formats de vidéos peuvent se trouver dans le même dossier au moment de la conversion. 
 +<file bash videos_to_mp3_converter.sh>​ 
 +#!/bin/bash
  
-<​code>​ #!/bin/bash +echo videos to mp3 converter!
-#Fichier "​Convertion Script " ​+
  
-echo "Création ​de la liste de fichiers..." +VIDEO_DIR="$HOME/​Vidéos"​ # mettez le chemin vers votre dossier ​de vidéos 
-cd CHEMIN_VERS_LES_VIDEOS ( par exemple ~/Downloads ou ~/Videos ) +MUSIQUE_DIR="$HOME/Musique" ​# mettez le chemin vers votre dossier ​de musiques/​sons 
-ls *.* > to_convert + 
-echo "Préparation ​de ffmpeg..."​ +cd "$VIDEO_DIR" ​|| exit 1 
-while read line  ​ + 
-do +for FILE in *.*; do 
- echo ​"Traitement de $line programmé+ if file --mime-type ​"$FILE" ​| grep -qF video; then 
-done < to_convert + echo -e "Processing file '​$FILE'​
-#On s'​assure que chaque vidéo à été detectée + ffmpeg ​-i "${FILE}" -vn -ab 128k -ar 44100 -"$MUSIQUE_DIR""/""​${FILE%.*}.mp3"​ 2> /dev/null 
-while read line + fi 
-do +done 
- sed --"s/(//g" ​to_convert +</file> 
- sed -i -e "s/)//g" ​to_convert ​ + 
- sed -i -e "s/\[//g" ​to_convert  +=== Convertir tous les fichiers Windows Media Audio WMA en mp3  === 
- sed --e "​s/​\]//​g"​ to_convert  + 
- sed --"s/\ /\./g" to_convert +Dans un dossier contenant des fichiers au format wma. 
-done < to_convert +La boucle for lance la conversion des fichiers. 
-#Ceci permet de contourner le problème posé par d'​éventuels caractères spéciaux dans le titre de la vidéo traitée ( tels que "​[","​]","​(","​)"​ ou " ") +Il suffira de supprimer les fichier wma une fois la conversion terminée.
-echo "​_______________________________________________"​ +
-while read line +
-do +
- rename=`echo ​${line%%.*}` +
- original=`ls CHEMIN_VERS_LES_VIDEOS| grep $rename` +
- mv CHEMIN_VERS_LES_VIDEOS/​"$original" ​CHEMIN_VERS_LES_VIDEOS/"$line" +
- echo "$line loaded"​ +
-done < to_convert +
-echo "​______________________________________________"​ +
-echo "La convertion a démarré : " +
-while read line  +
-do +
- sdot=`echo ​${line%.*}+
- echo "​CONVERTION EN COURS :[ $line ]" +
- ffmpeg -ab 192k -i `echo "​$line"​` `echo "$sdot.mp3"` 1>​.ffmpeg_last_log ​2>/​dev/​null +
-        #Le fichier log de la conversion seront stockés dans le dossier courant sous le nom "​.ffmpeg_last_log"​ +
- mv $line /RÉPERTOIRE OU SERONT STOCKÉES LES VIDÉOS SI ON SOUHAITE LES CONSERVER ( COMMENTER POUR ENLEVER ) +
- mv "​$sdot.mp3"​ /​RÉPERTOIRE OU SERA DÉPLACÉ LE FICHIER *.MP3 GÉNÉRÉ ​COMMENTER POUR ENLEVER ​+
- echo "→ OK !" +
-done < to_convert +
-rm to_convert +
-</​code>​+
  
-==== Utilisations spécifiques ====+<​code>​for i in *.wma; do ffmpeg -i "​$i"​ -ab 256k "​${i%wma}.mp3";​ done</​code>​
  
 === Convertir le format AVI en MP4 (PSP) === === Convertir le format AVI en MP4 (PSP) ===
Ligne 476: Ligne 509:
  
 Pour avoir une bonne qualité avec une résolution 480×272, avec un débit de 768 kbps, //​firmware//​ conseillé 3.71 ou supérieur : Pour avoir une bonne qualité avec une résolution 480×272, avec un débit de 768 kbps, //​firmware//​ conseillé 3.71 ou supérieur :
-<​code>​ffmpeg -i video_en_entrée.avi -r 29.97 -vcodec h264 -s 640x480 -aspect 16:9 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -b 768k -maxrate 1500k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec aac -ab 112k -ar 48000 -ac 2 -s 480x272 -aspect 4:3 video_en_sortie.mp4 ​</​code>​+<​code>​ffmpeg -i video_en_entrée.avi -r 29.97 -vcodec h264 -s 640x480 -aspect 16:9 -flags +loop -cmp +chrom</​code>​
  
-Créer une vignette de la vidéo qui vient d'​être encodé au format 160x120 ​en jpg.+=== Convertir un mkv en gif animé ===
  
-  * -ss 5 : Va à la 5ème seconde de la vidéo +<​code>​ffmpeg ​-i input.mkv ​-pix_fmt rgb24 -r 10 -s 320x240 output.gif</​code>​
-  * -vframes 1 : Pour n'​avoir qu'une image+
  
-<​code>​ffmpeg -i video.mp4 -f image2 -ss 5 -vframes 1 -s 160x120 video.jpg</​code>​+Résumé des options
  
-=== Convertir un fichier 3GP ou AMR en MPEG ou MP3 ===+-pix_fmt rgb24 pour '​encoder'​ le gif.
  
-Les fichiers ''​.AMR''​ (Pour //Adaptive Multi-Rate Codec//, ou Codec multi-débit adaptatif) sont des fichiers sons spécifiques aux téléphones mobiles, et deviennent de plus en plus répandus au fur et à mesure du développement des dictaphones intégrés aux portables et des téléphones-baladeurs,​ tout comme les fichiers ''​.3GP''​ (Pour //3rd Generation Partnership Project//, projet de partenariat de 3ème génération) qui sont leurs homologues vidéos.+-r 10 pour avoir 10 images par seconde.
  
-Il existe différentes méthodes ​pour les manipuler, dont celles utilisant FFmpeg en ligne de commande.+-s 320x240 ​pour avoir une résolution ​de sortie de 320x240.
  
-Dans les premières versions ​de cet article, nous présenterons ​une méthode par interface graphique, utilisant l'​utilitaire [[http://www.miksoft.net/​mobileMediaConverter.htm|Mobile Media Converter]].+Vous pouvez également choisir ​de découper ​une portion de vidéo avec les options -ss et -t. 
 +Par exemple ​: 
 +<​code>​ffmpeg -i input.mkv -ss 00:01:00.00 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.00 output.gif</​code>​ 
 +Permet de convertir 10 secondes de vidéo à partir de 1 minute.
  
-Ce programme se présente sous forme d'archive à décompacteret il suffit de double-cliquer sur l'exécutable Mobile Media Converter ​pour le lancer ​une fois extrait de l'archive.+=== Réaliser une rotation ​d'une vidéo === 
 +Une vidéo pourtant prise en "​paysage"​ se visualisait en mode "​portrait"​. Pour réaliser la rotationon utilise ​l'option //​filtergraph//​ (-vf) avec //​transpose//​.\\ 
 +Le chiffre passé avec transpose correspond à: 
 +^chiffre ^ filtrage appliqué ^ désignation en anglais ^ 
 +|0|-90° (sens anti-horaire) puis symétrie verticale (par défaut)|90CounterClockwise and Vertical Flip (default)| 
 +|1|90° (sens horaire) |90Clockwise| 
 +|2|-90° (sens anti-horaire)|90CounterCLockwise| 
 +|3|90° (sens horaire) puis symétrie verticale|90Clockwise and Vertical Flip (default)| 
 +Voici la  commande ​pour -90°: 
 +<​code>​ffmpeg -i vidéo_originale.mp4 -vf "​transpose=2"​ vidéo_correctement_orienté.mp4</​code>​ 
 +du fait du  codec audio utilisé, //​aac//, ​une erreur est survenu en précisant d'ajouter //-strict -2//, ce qui donne: 
 +<​code>​ffmpeg -i vidéo_originale.mp4 -strict -2 -vf "​transpose=2"​ vidéo_correctement_orienté.mp4</​code>​
  
-=== Convertir des fichiers musicaux ​===+==== Effectuer une capture vidéo (screencast) de l'​écran ​==== 
 +Après avoir exécuté cette commande, appuyez sur q pour arrêter la capture.
  
-Pour les fichiers sonores, la commande ​typique ​est : +<​code>​ffmpeg -f x11grab -s 1920x1080 -r 25 -i :0.0 screencast.mp4</​code>​ 
-<​code>​ffmpeg -i monMorceau.mp3 monMorceau.wav</​code>​+//-f// force la capture de l'​écran (//​x11grab//​)\\ 
 +//-s// définit la [[wpfr>​Format_d'​affichage_vidéo|taille de la capture]], doit être inférieur ou égale à la taille réelle d'​affichage!\\ 
 +//-r// définit le nombre d'​images par seconde : 12.5, 25, 30 sont les plus courantspour un //​screencast//​ de tutoriel, on peut descendre à 5, mais du fait de la compression,​ l'​économie sur la taille mémoire n'est pas proportionnel.\\ 
 +//-i:0:0// correspond au nombre du serveur X11, [[http://​ffmpeg.org/​ffmpeg.html#​X11-grabbing|peut permettre de définir un offset]] auquel cas, il faut réduire la taille d'​autant avec l'​option -s\\ 
 +<note warning>​Si une autre session est active (ou l'a été) il se peut que ça ne fonctionne pas avec -i:0:0, en effet, le premier nombre correspond au numéro de session qui s'​affiche entre parenthèse dans ce que retourne ​la commande ​//who// et qui correspond à l'​ordre d'​ouverture de session (:0 pour le premier connecté, :1 pour le deuxième …). Si c'est le cas, vous pouvez utiliser la commande ci-dessous qui ajuste le numéro de session
 +<​code>​ffmpeg ​-f x11grab -s 1920x1080 -r 25 -i $(who | awk '​{print substr($5,​2,​2)}'​).0 screencast.mp4</​code></​note>​ 
 +Pour une capture d'​écran Hi-Fi, **son et vidéo** sans perte, avec **Pulse Audio** comme serveur de son : 
 +<​code>​ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s 1024x768 -i :0.0 -acodec flac -vcodec libx264 -preset ultrafast -qn 0 output.mkv 
 +</​code>​
  
-Cependant pour convertir un fichier quelconque en fichier ​mp3, il faut régler le //bitrate//. +**NB1** vous pouvez changer ​ flac  par  aac  ou  ac3  ou  ​mp3  etcTestez car selon votre PC cela joue sur la qualité et fluidité globales lors de la restitution.
-Par défaut le bitrate est de 64 kbps, ce qui donne des fichiers extrêmement légers mais des morceaux ignobles à écouter. +
-Il faut donc modifier ce //​bitrate//,​ on conseille un minimum de 128 kbps, mais pour avoir le meilleur rapport ​qualité/taille, préférez 192 kbps, et sachez que les //​bitrates//​ courants peuvent aller jusqu'​à 320 kbps.+
  
-Pour une conversion vers un MP3 avec un //bitrate// de 192 kbps, la commande est : +**NB2** pour la même raison que NB1 vous pouvez aussi changer l'​extension  ​.mkv  du fichier en  .mp4  .avi   etc.. Une fois de plus, testez et voyez.
-<​code>​ffmpeg -ab 192k -i monMorceau.ogg monMorceau.mp3</​code>​+
  
-=== Extraire la bande son d'une vidéo ===+**PROBLEME DE CAPTURE ECRAN SANS L'AUDIO**
  
-Pour extraire la bande sonore d'une vidéo (dans cet exemple, avec un format « .avi »,​ cela fonctionne également pour les autres formats), et le récuperer en mp3 (Autres choix possibles) : +Dans le terminal lancez la commande ​   alsamixer
  
-<​code>​ffmpeg -i fichier_video.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 fichier_son.mp3</​code>​+Appuyez sur  F6  et choisissez ​ default ​ (normalement c'est la première ligne)
  
-== Extraction sans perte == +Si vous utilisez une carte son, après avoir fait F6 choisissez là afin de vérifier-ajuster le volume à son maximum. 
 +Ensuite ​ esc  et retapez dans le terminal ​ alsamixer puis F6 pour choisir la valeur ​ default ​ puis  esc
  
-Pour extraire ​la piste audio d'un fichier sans aucune perte de qualité (utile pour les vidéos musiques téléchargées sur youtube par exemple). +Ensuite toujours dans le terminal tapez  pavucontrol 
-<​code>​ffmpeg -i fichier_entrer.mp4 -vn -acodec copy fichier_sortie.m4a</​code>​ +Vérifiez que vous avez bien choisi ​la source ​de sortie que vous utilisez habituellement,​ déconnectez toutes ​les autres, micro inclus puis allez à l'​onglet ​ gestion des entrée. Vérifiez ​qu'il affiche un élément actif pour la source d'​entrée retenue avec le volume à 100. Si nonactivez ​le en cliquant sur l'​icone d'un haut-parleur (en haut à droite juste au-dessus ​de la ligne concernée) et ajustez si besoin le volume à 100.
-m4a correspond ​à un fichier mp4 ne contenant ​qu'une piste audio, le conteneur ​de sortie est donc mp4.+
  
-Adapté le conteneur au codec audio utilisé dans le fichier d'entrée. +ENFIN, redémarrez votre PC car j'ai relevé que sur certains PC tout devenait fonctionnel après un redémarrage (???)Ne me demandez pas pourquoi je ne suis pas un expert hardware-software bas/moyen-niveau donc je n'​aurai aucune réponse à vous donner.
-Vous pouvez déterminer ce codec avec la commande : +
-<​code>​ffmpeg ​-i fichier_entrer.mp4<​/code>+
  
-[[http://​en.wikipedia.org/​wiki/​Comparison_of_container_formats#​Audio_formats_supported|Wikipédia]] peut vous aider à choisir un conteneur compatible avec votre codec. 
  
-==== Convertir tous les fichiers Windows Media Audio ( WMA ) en mp3  ​===+==== Pour créer une vidéo à partir de photos ​===
 +À partir des images //​img001.png,​ img002.png, img003.png//:​\\ 
 +FIXME (le code ci-dessous ne fonctionne pas sous [[:​Jammy]] 
 +<​code>​ 
 +ffmpeg -framerate 24 -i img%03d.png output.mp4 
 +</​code>​ 
 +[[https://​trac.ffmpeg.org/​wiki/​Slideshow|Explication pour créer une vidéo à partir de photo (animation) (en)]]\\ 
 +Alternative ((src (en) : https://​stackoverflow.com/​a/​37478183/​6614155)) : 
 +<code bash> 
 +ffmpeg -framerate 1 -pattern_type glob -i '​img*.png'​ -c:v libx264 -pix_fmt yuv420p output.mp4 
 +</​code>​ 
 +<note important>​le //​framerate//​ est le nombre d'​images pas seconde en entrée (ips)… si vous avez 24 images et définissez 24… vous n'​aurez qu'une seconde de vidéo et n'​aurez pas le temps de voir les images si elles sont très différentes. Pour 10 secondes de vidéo à 24 ips, il faut donc 240 images ! Il est possible d'​avoir un //​framerate//​ sur les images fournies en entrée et un //fps// en sortie différent, ffmpeg laissera la même image plusieurs fois ou au contraire en enlèvera ((https://​trac.ffmpeg.org/​wiki/​Slideshow#​Framerates))</​note>​
  
-Dans un dossier contenant des fichiers au format wma. +==== Découper une vidéo ==== 
-La boucle for lance la conversion des fichiers. +Découper ​la vidéo entre la 24ème minute et la 50ème plus 14 secondes (-c:v copy -c:a copy permettent de conserver le même encodeur vidéo et audio) 
-Il suffira de supprimer les fichier wma une fois la conversion terminée.+<​code>​ 
 +ffmpeg -i fichieradecouper.avi -ss 00:24:00.00 -to 00:50:14.00 -c:v copy -c:a copy  extrait.avi 
 +</​code>​
  
-<​code>​for i in *.wma; do ffmpeg -i "​$i" ​-ab 256k "​${i%wma}mp3";​ done</​code>​+Extraire une séquence de 12 mn 18.25 secondes à partir de la 18ème minute 
 +<​code>​ 
 +ffmpeg -i fichieradecouper.avi ​-ss 00:18:00.00 -t 00:12:18.25 -c:v copy -c:a copy  extrait.avi 
 +</​code>​
  
-=== Effectuer ​une capture vidéo (screencast) ​de l'écran ===+<note tip>​Insérer les balises de temps -ss, -to et -t avant -i permet d'​éviter de ré-encoder les parties du fichier qui ne sont pas utilisées : 
 +<​code>​ 
 +ffmpeg -ss 00:8:00.00 -t 00:12:18.25 -i fichieradecouper.avi -c:v copy -c:a copy  extrait.avi 
 +</​code>​ 
 +</​note>​ 
 +<note tip>​L'​utilisation de -c:v copy et -c:a copy permet ​une découpe très rapide car il n'y a pas de ré-encodage du fichier. Cependant la découpe est moins précise car calée sur l'image clé la plus proche de la borne de temps définie par l'​utilisateur. L'​utilisation de la syntaxe suivante permet une découpe plus précise mais prend davantage de temps car il y a ré-encodage de la séquence extraite : 
 +<​code>​ 
 +ffmpeg -ss 00:18:00.00 -t 00:12:18.25 -i fichieradecouper.mp4 fichierdecoupe.mp4 
 +</​code></​note>​
  
-Après avoir exécuté cette commande, appuyez sur q pour arrêter la capture.+==== Pivoter une vidéo ==== 
 +Utile par exemple ​pour redresser une vidéo réalisée avec un téléphone mobile tourné dans le mauvais sens 
 +<​code>​ 
 +ffmpeg -i VideoInitiale.MOV -vf "​transpose=1"​ VideoRedressee.MOV 
 +</​code>​ 
 +L'​option transpose supporte plusieurs paramètres selon la transformation à réaliser : 
 +| Option | Effet | 
 +| 0 | Rotation à 90° sens des aiguilles d'une montre et miroir vertical (défaut) | 
 +| 1 | Rotation à 90° sens des aiguilles d'une montre | 
 +| 2 | Rotation à 90° sens inverse des aiguilles d'une montre | 
 +| 3 | Rotation à 90° sens inverse des aiguilles d'une montre et miroir vertical (défaut) |
  
-<​code>​ffmpeg ​-b 1000k -f x11grab -s 800x600 -r 30 -i :0.0 screencast.mpg</​code>​+==== Concaténer plusieurs vidéos ==== 
 +Abouter (enfiler plusieurs vidéos successivement en une seule plus longue) plusieurs vidéos n'est pas l'​opération la plus simple. Celle-ci dépend de la nature des fichiers à concaténer.
  
-Pour une capture d'​écran Hi-Fi**son et vidéo** sans perteavec **Pulse Audio** comme serveur de son : +=== Concaténation simple === 
-<​code>​ffmpeg ​-f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1024x768 ​-i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast ​-threads 0 output.mkv</​code>​+Quelques rares formats ("file level"​) acceptent la concaténation simple : MPEG-1MPEG-2 PSDV. Dans ce cas l'​opération reste assez simple à réaliser. 
 +<​code>​ 
 +cat fichier1.mpg fichier2.mpg > Fichier_concatene.mpg 
 +</​code>​ 
 +ou 
 +<​code>​ 
 +ffmpeg -i concat:"​fichier1.mpg|fichier2.mpg" ​-c copy Fichier_concatene.mpg 
 +</code
 +<note tip>Si la qualité des fichiers s'y prête, il peut être plus simple de convertir les fichiers à concaténer en mpg, de réaliser la concaténation en mpg puis de ré-encoder le fichier concaténé dans votre format de prédilection.</​note>
  
 +=== Avec concat ===
 +Le filtre concat opère sur des segments synchrones de flux vidéo et audio. Tous les segments doivent avoir le même nombre de flux, qui sera également celui du fichier concaténé.
 +Options du filtre :
 +| Option | Usage | Valeur par défaut |
 +| n | Nombre de segments à concaténer | 2 |
 +| v | Nombre de flux vidéo (identique dans les sources et la destination) | 1 |
 +| a | Nombre de flux audio (identique dans les sources et la destination) | 0 |
 +| unsafe | Prévient l'​échec de l'​opération si les sources ne possèdent pas le même nombre de flux | désactivé |
 +
 +Concaténer une ouverture, un milieu et une fin avec 2 pistes son
 +<​code>​
 +ffmpeg -i ouverture.avi -i milieu.avi -i fin.avi -filter_complex '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2] concat=n=3:​v=1:​a=2 [v] [a1] [a2]' -map '​[v]'​ -map '​[a1]'​ -map '​[a2]'​ fichierfinal.avi
 +</​code>​
 +
 +=== Autres cas et cas complexes ===
 +Voir la documentation (en anglais), notamment [[https://​ffmpeg.org/​faq.html#​How-can-I-concatenate-video-files_003f|3.14]],​ [[https://​ffmpeg.org/​ffmpeg-filters.html#​concat|15.8]] et [[https://​ffmpeg.org/​ffmpeg-formats.html#​concat|3.4]]
 +
 +==== Méta-données ====
 +On peut visualiser quelques méta-données en exécutant :
 +<code bash>​ffmpeg -i ma_vidéo.AVI</​code>​
 +qui va nous retourner l'​appareil qui a créé la vidéo, la date de création, la durée, et des infos sur l'​encodage de la vidéo et de la bande son.\\
 +Pour les méta-données,​ on peut aussi utiliser [[:​exiftool]]
 +
 +==== Ajouter une piste son ainsi que des sous-titres ====
 +Dans cet exemple :
 +  * on va ajouter une deuxième piste son (française) au fichier video.mp4 qui en possède déjà une (anglaise)
 +  * on va ajouter des sous-titres dans chacune des deux langues
 +  * on va ajouter une image de couverture image.jpg
 +  * on va mettre à jour des métadonnées
 +<code bash>​ffmpeg -i video.mp4 -i son_francais.aac -i st_ang.srt -i st_fr.srt -i image.jpg -map 0 -map 1 -map 2 -map 3 -map 4 -c copy -metadata comment="​Paris brûle-t-il (1966) doublé 1080p x265" -metadata:​s:​a:​0 title="​Anglais (English)"​ -metadata:​s:​a:​0 language=eng -metadata:​s:​a:​1 title="​Français (French)"​ -metadata:​s:​a:​1 language=fra -metadata:​s:​v:​0 title="​Vidéo"​ -c:s mov_text -metadata:​s:​s:​0 language=eng -metadata:​s:​s:​1 language=fra output.mp4
 +</​code>​
 +<note tip> ​ * -map 0 -map 1 -map 2 -map 3 -map 5 : applique le traitement aux 5 fichiers d'​entrée définis avec -i
 +  * -c copy : copie sans réencoder
 +  * -metadata comment="​Ceci est un commentaire 1080p x265" : modifie la métadonnée commentaire du fichier
 +  * -metadata title="​Le titre de la vidéo"​ : modifie la métadonnée titre du fichier (en général s'​affiche au lancement)
 +  * -metadata:​s:​a:​0 title="​Anglais (English)"​ : titre du premier flux (stream) audio (au cas d'​espèces déjà dans le fichier)
 +  * -metadata:​s:​a:​0 language=eng : langue du premier flux audio (anglais)
 +  * -metadata:​s:​a:​1 title="​Français (French)"​ : titre du deuxième flux audio (son_francais.aac)
 +  * -metadata:​s:​a:​1 language=fra : langue du deuxième flux audio (français)
 +  * -metadata:​s:​v:​0 title="​Vidéo"​ : titre du premier flux vidéo
 +  * -c:s mov_text : convertit les fichiers srt en sous-titres mov_text pour mp4
 +  * -metadata:​s:​s:​0 language=eng : métadonnée langue (anglais) du premier fichier de sous-titres (st_ang.srt)
 +  * -metadata:​s:​s:​1 language=fra : métadonnée langue (français) du deuxième fichier de sous-titres (st_fr.srt)
 +  * output.mp4 : fichier de sortie
 +</​note>​
 ==== Pour consulter le manuel de FFmpeg ==== ==== Pour consulter le manuel de FFmpeg ====
  
 <​code>​man ffmpeg</​code>​ <​code>​man ffmpeg</​code>​
  
-===== Pour en savoir plus sur Internet =====+Pour une synthèse des options 
 +<​code>​ffmpeg -help long</​code>​
  
-  ​* ''​**(en)**''​ [[http://​ffmpeg.mplayerhq.hu/|Site officiel]]+===== Pour en savoir plus sur Internet ===== 
 +  ​* ''​**(en)**''​ [[http://​ffmpeg.org/|Site officiel]] ​
   * ''​**(fr)**''​ [[http://​www.jcartier.net/​spip.php?​article36|Exemples d'​usages]]   * ''​**(fr)**''​ [[http://​www.jcartier.net/​spip.php?​article36|Exemples d'​usages]]
-  ​* ''​**(fr)**''​ [[http://​fr.lprod.org/​wiki/​doku.php?​id=video:​ffmpeg|ffmpeg sur le site de montage vidéo libre, lprod.org]] +  * ''​**(fr)**''​ [[http://​www.korben.info/​ffmpeg-pour-les-nuls.html|FFMPEG ​pour les nuls]]
-  ​* ''​**(fr)**''​ [[http://​www.korben.info/​ffmpeg-pour-les-nuls.html]] +
-  * ''​**(fr)**''​ [[http://​c-net.fr/?​p=269|Exemple d'​installation de ffmpeg]] +
-  * ''​**(fr)**''​ [[http://​c-net.fr/?​p=493|Utilisation de ffmpeg ​pour diffuser vos vidéos sur le Net]] +
-  * ''​**(fr)**''​ [[http://​yves.demur.free.fr/​conv2pana.bash|Un script pour convertir ​les vidéos en .3gp]]+
  
-----+ ----
  
-//​Contributeurs principaux : loup_74, ​utilisateurs:​ElGeneralMidi,​ [[utilisateurs:​Wido]],​ [[utilisateurs:​laurentb|Laurent Bellegarde]].//​+//​Contributeurs principaux : loup_74, ElGeneralMidi,​ [[utilisateurs:​Wido]],​ [[utilisateurs:​laurentb|Laurent Bellegarde]], Isamaya (pour l'​extraction des flux audio et vidéo).//
  • ffmpeg.1323897216.txt.gz
  • Dernière modification: Le 15/12/2011, 15:18
  • (modification externe)