======ffmpeg : généralités non exhaustif ====== * Objet : du tuto ffmpeg * Niveau requis :{{tag>débutant avisé}} * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * Suivi : {{tag>à-tester à-placer}} * Création par [[user>lagrenouille ]] [[user>vv222]] 21/06/2024 * Testé par <...> le <...> * Commentaires sur le forum : [[:url-invalide | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) ===== Installation ===== L’installation sous debian est assez simple, en console sous root : apt install ffmpeg libavcodec-extra on peut ajouter l’installation de: oggvideotools vorbis-tools flac mpv La commande ffmpeg : La doc est monumentale et les options très nombreuses, nous ferons ici, une petite récapitulations des commandes les plus demandés. Si possible les plus simples.les plus courantes ====présentation==== Le codec est un algorithme qui permet d'encoder la vidéo ou le son afin de l'adapter au protocole de transport (IP,DVB,fichier...) notamment en réduisant le débit(Kbits/s). Selon les codecs, la compression peut s'accompagner d'une perte de qualité dans l'image ou le son plus ou moins importante. De la même manière que pour les formats, FFmpeg/Libav liste les codecs qu'il est capable de gérer: Codecs: cette commande renvoie un grand nombre de réponses. ffmpeg -codecs renvoie un grand nombre de réponses. **D** = Decoding supported **E** = Encoding supported **V** = Video codec **A** = Audio codec **S** = Subtitle codec **D** = Data codec **T** = Attachment codec **I** = Intra frame-only codec **L** = Lossy compression **S** = Lossless compression et ffmpeg -filters retourne elle aussi, une grande quantité d’informations Dans les formats citons mkv, webm, ogv, ogg. Dans les codecs vidéos citons : vp9, vp8, theora(vp3) Ogg, et le codec audio Vorbis sont 2 création du monde du logiciel libre Les formats Flac, apc, monkey audio sont des formats dits « lossless » : ils sont chargés d’encoder ’’’sans perte’’’ des données audio. La commande pour voir les formats disponibles sur lesquels ffmpeg peut travailler : ffmpeg -formats -hide-banner | less ffmpeg -formats | less **ça affichera des choses comme :** * **D** : sS ffMpeg sait Décoder ce type de boite ; * **E** :Si ffMpeg sait Encoder ce type de boite ; * **ffmpeg**: Prend en charge les formats courants tels que MP4, AVI, MKV, MOV, etc., ainsi que des codecs spécifiques tels que H. 264, H ; * **ffmpeg** : Outil de traitement ; * **ffprobe** : Outils d’analyse ; * **ffplay** : Lecteur vidéo. La première chose à faire lorsque l’on a un fichier, en l’occurrence multimédia, dont on ignore tout est de rechercher les informations le concernant. Exemple : ffmpeg -i ma-vidéo.mp4 **Pour mieux comprendre les options d’encodages des vidéos :** **-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 ou -c:v** décision du choix du codec **-pass** nombre de passage à l'encodage, une passe (-pass 1) ou deux passes (-pass 2) **-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 **-crf** (constant rate factor) permet de définir un niveau de qualité entre 0 et 51 (petit nombre = meilleure qualité, module facilement le ratio poid/qualité. Plus on donne un nombre proche de zéro plus le fichier et proche de sa source et donc lourd. En général en fonction du besoin on attribue des valeurs entre 15 et 25. mais plus de temps de calcul) en H264/Mpeg4. 0 = (Lossless) super lourd, identique à la source. 10 = lourd, grande qualité 30 = léger, mauvaise qualité **264 ou MPEG-4.** Le codec H. 264 est répandu pour la simple raison qu'il permet d'encoder des images de qualité DVD avec une fraction de la bande passante requise par les techniques de compression **framerate 30** nombre d'images par secondes **video_size 1280×720** taille de la vidéo **f x11grab** capturer la sortie X **i “$DISPLAY”** apturer l'écran par défaut **vcodec mpeg4** utiliser le codec vidéo mpeg4 **b 1200** bitrate à 1200 kb ( le bitrate audio) **qscale 1** zoom à 100% **-preset** Détermine la vitesse d’encodage, une vitesse plus lente permet au logiciel d’optimiser le fichier pour gagner encore de la place, les valeurs disponibles sont : ultrafast superfast veryfast faster fast medium (default) slow slower veryslow ====AUDIO==== **les options d’encodages pour le son** **-acodec ou -c:a** détermine le choix du codec **-ar** configuration de la fréquence d'échantillonnage (44100 Hz) **-ab** configuration du débit binaire par défaut 64 kbps (-ab 128kb) **-ac** configure le nombre de canaux (mono-stéréo) **-aac** (-acodec aac) Dans les codecs audio citons : flac, opus, vorbis et bien d'autre. Convertir simplement une vidéo de musique mp4 en son mp3 ffmpeg -i mamusic.mp4 mamusic.mp3 Convertir un son au format wav en son au format mp3 ffmpeg -i mamusic.wav -ar 44100 mamusic.mp3 Les fichiers MP3 peuvent aussi être encodés avec un bitrate variable. On peut encoder un MP3 en différentes qualités. de 64 à 320Kbps. Le plus courant étant le 128 ou le 192. Ils peuvent être encodés en mono, stéréo ou joint-stéréo =====exemples de commandes ffmpeg===== ====Fusionner des vidéos ==== fusionner deux vidéos, ici, j’ai la même vidéo mais deux fois une fois avec l’image sans le son. deskshare.mp4 une fois avec le son sans l’image. webcams.mp4 je vais donc les fusionner pour avoir l’image et le son ffmpeg -i deskshare.mp4 -i webcams.mp4 -map 0:v -map 1:a -c copy mavidéo-visio.mkv -map 0:v" : du premier fichier d’entrée, ne prendre que la vidéo -map 1:a" : du deuxième fichier d’entrée, ne prendre que l’audio VOIR le tuto de cemoi: **LIEN:** [[https://debian-facile.org/utilisateurs:cemoi:tutos:h265?s[]=ffmpeg]] ====video-copie-transformation==== **LIEN:** [[utilisateurs:smolski:tutos:tuto-video-copie-transformation|Copie Videos et Transformation]] ==== Convertir des vidéos==== Commençons par une application simple, convertir une vidéo au format MP4 en une vidéo MPEG.ou vice-versa ffmpeg -i vidéo.mp4 vidéo.mpeg ffmpeg -i vidéo.mpeg vidéo.mp4 ffmpeg -i Marlene-Dietrich-Lili_Marleen.webm Marlene-Dietrich-Lili_Marleen.mp4 Conversion AVI en FLV ffmpeg -i vidéo.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv vidéo.flv Convertir une vidéo en forçant un bitrate ffmpeg -i CLDM.mp4 -b:v 512k -b:a 96k CLDM-2.ogg explications des paramètres : * **-ab** : configuration du baud rate binaire du flux audio en kbps ; * **-ar** : définition de la fréquence d’échantillonnage de la piste audio ; * **-b** : configuration du baud rate binaire du flux vidéo en kbps ; * **-r** : valeur du nombre d’images par seconde (framerate) ; * **-s** : redimensionnement du format de la vidéo ; * **-f** : définition du format de sortie . ====Les conversions vidéos vers musiques. Extraction de la piste audio==== ====Extraction des images d’une vidéo==== ffmpeg -i video.mp4 -r 5 images%02d.png Le paramètre -r permet de définir la fréquence d’extraction d’images. Pour une vidéo dont le framerate est de 25 images par seconde, si vous spécifiez un paramètre à -r 5, cela correspondra à une extraction d’images toutes les 5 images. ==== Extraction de la piste audio ==== **LIEN:** [[doc:media:ffmpeg:extraction-audio|Extraire une piste audio d’un fichier multimédia avec ffmpeg]] ====Transformer une vidéo en une série images==== convertir une vidéo MP4 vers une image animée GIF non compressée ffmpeg -i vidéo.mp4 vidéo.gif ====Transformer webm ou mp4 une vidéo en mp3==== ffmpeg -i Marlene-Dietrich-Lili_Marleen.webm Marlene-Dietrich-Lili_Marleen.mp3 ====Compresser une vidéo==== Compresser une vidéo, est souvent utile pour mettre en ligne, et ainsi alléger le poids du fichier, il existe une multitude de façon de coder cette conversion, j'en mettrai que celles que j'ai testé. ffmpeg -i mavidéo.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 mavidéocompressé.mp4 ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4 Ici, "-crf 23" est utilisé pour contrôler la qualité de la vidéo compressée 18 produira une meilleure qualité mais un fichier plus volumineux 28 produira une qualité plus faible mais un fichier plus petit "-b:a 128k" fixe le débit audio à 128 kbps (kilobits par seconde) Compresser ma vidéo baba.mp4 ffmpeg -i baba.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 new_baba.mp4 ====redimensionner une vidéo==== ffmpeg -i mavidéo.mp4 -ss 00:00:30 -t 00:01:30 manouvellevidéo.mp4 **-ss** indique le moment où vous souhaitez récupérer la séquence vidéo **-t** indique la durée de la vidéo de sortie ====Convertir une vidéo en noir et blanc==== ffmpeg -i input.mp4 -vf "colorchannelmixer=.3 :.4 :.3:0 :.3 :.4 :.3:0 :.3 :.4 :.3" output.mp4 Cela permet d'appliquer une matrice de conversion des couleurs pour créer un effet noir et blanc. ====ffplay: Lire une vidéo ou une zic sur un terminal==== Avec mpv ou sous console, * pour augmenter le son et / pour diminuer le son ffplay Fabrizio-andré-le-passanti.mp3 monter ou diminuer le son de 10 décibels : ffmpeg -i video.mp4 -vcodec copy -af "volume=10dB" video-augmentee.mp4 On peut aussi baisser le son : ffmpeg -i video.mp4 -vcodec copy -af "volume=-5dB" video-diminuee.mp4 redimensionner ma vidéo en 1280x720 ffmpeg -i video.mkv -vf scale=-1:720 video-720p.mkv ====Capturer le premier écran (ou une partie de l'écran)==== dans cet exemple, je capture une vision-conférence sur le premier écran (avec un sérieux problème non résolu.. commande à adapter à votre écran, Il faut préciser les coordonnées du point de départ de la capture (x=200 et y= 100) : ffmpeg -video_size 1280x1024 -framerate 30 -f x11grab -i "$DISPLAY" -f pulse -i 0 -c:v libx264 -crf 22 -preset ultrafast -c:a libopus -ac 2 mavidéo.mkv //**le problème est, que j'ai seulement le son de mes interventions, et que les autres participants ne sont pas captés par ma commande, soit une option de firefox, soit une option ffmpeg... c'est à découvrir ?** // ====Transformer une série d’images en vidéo==== s'assurer que les images ont la même dimension renommer vos images en, 001.jpeg, 002.jpeg, 003.jpeg, ou 01.png. 02.png, 03.png etc.. ffmpeg -r 1 -s 1080x1620 -i pictures/%03d.jpeg -vcodec libx264 -crf 25 mavidéo.mp4 **-r** 1 est le taux d'images par seconde. **-s** 1080x1620 est la taille de notre vidéo **-i** image%d.jpg, %d est transformé en 1, 2, 3, 4, 5..etc... -crf permet de définir un niveau de qualité ====faire un diaporama musical, à partir d'images==== **LIEN:** [[https://debian-facile.org/utilisateurs:lagrenouille:tutos:ffmpeg-faire-un-diaporama_musical]] ====ffmpeg==== tuto de Pititux le 22-04-2010 **LIEN:** [[https://debian-facile.org/doc:media:ffmpeg]] =====Liens divers ffmpeg sur le web===== https://ffmpeg.org/ffmpeg-utils.html https://doc.ubuntu-fr.org/ffmpeg https://ffmpeg.org/documentation.html https://nschlia.github.io/ffmpegfs/html/index.html https://www.linuxtricks.fr/wiki/ffmpeg-la-boite-a-outils-multimedia http://www.jcartier.net/FFMpeg-par-l-exemple.html