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 16/12/2018, 09:39]
christophe c [Exemples de conversions] Convertir un fichier webm en .mp4
ffmpeg [Le 24/09/2023, 10:36] (Version actuelle)
146.70.196.140 [Utilisation]
Ligne 1: Ligne 1:
-{{tag>Xenial ​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}}
  
 ---- ----
Ligne 7: Ligne 7:
  
 **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 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.
- 
-<note importante>​Pour la [[:​versions|version d'​Ubuntu]] [[:​trusty|14.04]],​ **FFmpeg** a été remplacé par son [[wpfr>​fork]] [[:​avconv|avconv]]. **FFmpeg** a cependant été réintégré depuis la version [[:​xenial|Ubuntu  16.04]] si bien que **FFmpeg** et **avconv** sont désormais deux applications à part entière.</​note>​ 
  
 ===== Utilisation graphique ===== ===== Utilisation graphique =====
Ligne 15: Ligne 13:
   * [[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.   * [[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.
   * [[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]] - 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é.
-  * [[:​arista|Arista Transcoder]] ​ - Type WinFF , avec une interface. 
  
 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 :
Ligne 25: Ligne 22:
   * [[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   * [[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.   * [[Kino]] - Application de montage et de transcodage destinée aux débutants.
-  * [[http://​sourceforge.net/​projects/​outreel/​files/​|Outreel]] - Une autre interface graphique pour FFMpeg.+  * [[https://​sourceforge.net/​projects/​outreel/​files/​|Outreel]] - Une autre interface graphique pour FFMpeg.
  
  
 ===== Installation ===== ===== Installation =====
  
-==== Via les dépôts officiels====+[[:​tutoriel:​comment_installer_un_paquet|Installer le paquet]] **[[apt>​ffmpeg]]**
  
-[[:​tutoriel:​comment_installer_un_paquet|Installer le paquet]] **[[apt>​ffmpeg|ffmpeg]]**+===== Utilisation =====
  
-====Via un PPA pour Ubuntu 14.04 uniquement====+**Tout ce qui suit parlera de la partie manipulation de fichier Audio - Video.**
  
-Pour utiliser **FFmpeg** sous [[:​trusty|Ubuntu Trusty 14.04]] : +Cependant, il est utile de savoir que **ffmpeg** ​intègre par défaut un lecteur minimaliste audio-video **ffplay** utilisable depuis le terminal.
-  - [[:​ppa|Ajoutez le PPA]] **ppa:​mc3man/​trusty-media**((https://​launchpad.net/​~mc3man/​+archive/​ubuntu/​trusty-media)) à vos sources ​de logiciels ; +
-  - [[:​tutoriel:​comment_modifier_sources_maj#​recharger_la_liste_des_paquets|Rechargez la liste de vos paquets]] ; +
-  - [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] ​**[[apt>ffmpeg]]**.  +
-  ​:!: __Attention__:​ Le [[:​PPA]] ​**mc3man/​trusty-media** contient de très nombreux autres paquets médias de versions supérieures. Si vous ne souhaitez pas de mise à jour vers des versions supérieures de ses paquets lors de la prochaine mise à jour de votre système, [[:​ppa#​suppression_d_un_ppa|supprimer ce PPA]] de vos sources de logiciels.+
  
 +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.\\
 +Seul ressource pour cela ... connaitre les arguments à entrer dans la commande terminal.
  
-À noter que le binaire fourni ​par ce PPA (depuis la version 2.7.8) prend en compte les filtres x265 et fdk_aac (codec AAC de Fraunhofer) +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.
  
  
-===== Utilisation =====+**Utilisation ​pour lire UN SEUL fichier Audio ou Video** 
 + 
 +Tapez dans le terminal ce qui suit et appuyez sur la touche "​Entrée"​ du clavier\\ 
 + 
 +__Pour un fichier video__\\ 
 +<​code>​ffplay "​le_chemin_du_fichier_que_je_veux_lire.mkv"​ (ou .mp4, etc.;​l'​extension du fichier à lire)</​code>​ 
 + 
 +__Pour un fichier audio__\\ 
 +<​code>​ffplay "​le_chemin_du_fichier_que_je_veux_lire.wav"​ (ou .aac, etc.;​l'​extension du fichier à lire)</​code>​ 
 + 
 +//NB les guillemets sont importants car ils vous éviteront une erreur si le chemin a des espaces ou des caractères spéciaux//​ 
 + 
 +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\\ 
 +\\ 
 + 
 +**Utilisation pour lire plusieurs fichiers audio ou video CONTENUS __DANS UN SEUL ET MEME REPERTOIRE__**\\ 
 + 
 + 
 +Tapez dans le terminal ce qui suit et appuyez sur la touche "​Entrée" ​ du clavier\\ 
 + 
 +<​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>​ 
 + 
 +// 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//\\ 
 +//​-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.)// 
 + 
 +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 pour lire TOUT LE CONTENU D'UN RÉPERTOIRE contenant PLUSIEURS DOSSIERS avec des fichiers audio** 
 + 
 +<​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\\ 
 + 
 +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.\\
  
 ==== Commencer sur une bonne base ==== ==== Commencer sur une bonne base ====
Ligne 55: Ligne 95:
  
 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 195: 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 ====
  
Ligne 331: 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 371: 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 433:
  
 <​code>​ffmpeg -i ma-video.webm ma-video.mp4</​code>​ <​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 ===
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 "​Conversion 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 a été détecté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  +
- sed --e "​s/​\]//​g"​ to_convert  +
- sed --"s/\ /\./g" to_convert +
-done < to_convert +
-#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 " ") +
-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 conversion a démarré : " +
-while read line  +
-do +
- sdot=`echo ​${line%.*}+
- echo "​CONVERSION 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>+
  
 === Convertir tous les fichiers Windows Media Audio ( WMA ) en mp3  === === Convertir tous les fichiers Windows Media Audio ( WMA ) en mp3  ===
Ligne 513: Ligne 540:
 du fait du  codec audio utilisé, //aac//, une erreur est survenu en précisant d'​ajouter //-strict -2//, ce qui donne: 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>​ <​code>​ffmpeg -i vidéo_originale.mp4 -strict -2 -vf "​transpose=2"​ vidéo_correctement_orienté.mp4</​code>​
-==== Effectuer une capture vidéo (screencast) de l'​écran ==== 
  
 +==== Effectuer une capture vidéo (screencast) de l'​écran ====
 Après avoir exécuté cette commande, appuyez sur q pour arrêter la capture. Après avoir exécuté cette commande, appuyez sur q pour arrêter la capture.
  
Ligne 520: Ligne 547:
 //-f// force la capture de l'​écran (//​x11grab//​)\\ //-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!\\ //-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 ​pas seconde : 12.5, 25, 30 sont les plus courants, pour 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.\\+//-r// définit le nombre d'​images ​par seconde : 12.5, 25, 30 sont les plus courants, pour 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\\ //-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: <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:
Ligne 528: Ligne 555:
 </​code>​ </​code>​
  
-==== Pour consulter le manuel ​de FFmpeg ====+**NB1** vous pouvez changer ​ flac  par  aac  ou  ac3  ou  mp3  etc. Testez car selon votre PC cela joue sur la qualité et fluidité globales lors de la restitution.
  
-<​code>​man ffmpeg</​code>​+**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.
  
-===== JDownloader 2 Beta =====+**PROBLEME DE CAPTURE ECRAN SANS L'​AUDIO**
  
-FFmpeg is missing ! Pour résoudre ce problème, notamment avec le site Youtube, il faut: +Dans le terminal lancez ​la commande ​   alsamixer
-  * Installer FFmpeg avec la Logithèque  +
-  * Ouvrir JD et aller dans les Préférences +
-  * Puis dans les Paramètres avancés +
-  * Trouver la clef FFmpegSetup:​ Binary Path +
-  * A la place de '​null',​ mettre /​usr/​bin/​ffmpeg +
-  * Arrêter les téléchargements (bouton Stop), puis redémarrer les (bouton Lecture) +
-  * Enjoy !+
  
 +Appuyez sur  F6  et choisissez ​ default ​ (normalement c'est la première ligne)
  
-===== Pour en savoir plus sur Internet =====+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
  
 +Ensuite toujours dans le terminal tapez  pavucontrol
 +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 non, activez 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.
 +
 +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.
 +
 +
 +==== 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>​
 +
 +==== Découper une vidéo ====
 +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)
 +<​code>​
 +ffmpeg -i fichieradecouper.avi -ss 00:24:00.00 -to 00:50:14.00 -c:v copy -c:a copy  extrait.avi
 +</​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>​
 +
 +<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>​
 +
 +==== 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) |
 +
 +==== 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.
 +
 +=== Concaténation simple ===
 +Quelques rares formats ("file level"​) acceptent la concaténation simple : MPEG-1, MPEG-2 PS, DV. 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 ====
 +
 +<​code>​man ffmpeg</​code>​
 +
 +Pour une synthèse des options
 +<​code>​ffmpeg -help long</​code>​
 +
 +===== Pour en savoir plus sur Internet =====
   * ''​**(en)**''​ [[http://​ffmpeg.org/​|Site officiel]] ​   * ''​**(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]]
  • ffmpeg.1544949559.txt.gz
  • Dernière modification: Le 16/12/2018, 09:39
  • par christophe c