Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
ffmpeg [Le 09/09/2023, 01:00] 146.70.184.10 [Méta-données] |
ffmpeg [Le 27/08/2024, 16:29] (Version actuelle) ouvradou [Transformer la vidéo] |
||
---|---|---|---|
Ligne 30: | Ligne 30: | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
+ | |||
+ | **Tout ce qui suit parlera de la partie manipulation de fichier Audio - Video.** | ||
+ | |||
+ | Cependant, il est utile de savoir que **ffmpeg** intègre par défaut un lecteur minimaliste audio-video **ffplay** utilisable depuis le terminal. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | 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 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 343: | Ligne 400: | ||
<code>-aspect aspect</code> | <code>-aspect aspect</code> | ||
Aspect étant 4:3, 16:9 ou 1.3333, 1.7777. Vous pouvez faire des aspects spéciaux si vous le voulez. | Aspect étant 4:3, 16:9 ou 1.3333, 1.7777. Vous pouvez faire des aspects spéciaux si vous le voulez. | ||
+ | |||
+ | === Stabiliser la vidéo === | ||
+ | |||
+ | Pour réduire en post-production les tremblements de la caméra lors de la prise de vue. | ||
+ | |||
+ | Prérequis : la bibliothèque vidstab doit être intégrée à la configuration de ffmpeg. | ||
+ | |||
+ | Pour le vérifier : | ||
+ | <code>$ ffmpeg | ||
+ | ffmpeg version n7.0.1 Copyright (c) 2000-2024 the FFmpeg developers | ||
+ | built with gcc 14.1.1 (GCC) 20240522 | ||
+ | configuration: | ||
+ | ... --enable-libvidstab ... | ||
+ | </code> | ||
+ | |||
+ | ffmpeg effectue la stabilisation d'une vidéo en deux passes : | ||
+ | - une passe d'analyse de la vidéo qui produit un fichier nommé //transforms.trf// | ||
+ | - une passe de traitement qui exploite ce fichier et produit la vidéo stabilisée. | ||
+ | |||
+ | La [[https://github.com/georgmartius/vid.stab|bibliothèque vidstab]] utilise de nombreux paramètres pour analyser les tremblements. | ||
+ | Dans une approche simplissime, on peut se reposer sur les valeurs par défaut de ceux-ci. | ||
+ | |||
+ | Supposons que la vidéo à stabiliser se nomme //inputFile// et qu'on souhaite encoder la version stabilisée avec le codec vidéo x264 et une qualité crf=20 et l'audio avec le codec aac avec une bande passante de 192 kbit/s. | ||
+ | On saisira les deux lignes ci-dessous : | ||
+ | |||
+ | <code> | ||
+ | ffmpeg -i inputFile -vf vidstabdetect -f null transforms.trf | ||
+ | ffmpeg -i inputFile -vf vidstabtransform=:input=transforms.trf -c:v libx264 -crf 20 -c:a aac -ab 192k output.mp4 | ||
+ | </code> | ||
+ | |||
+ | Si le résultat de la stabilisation ne paraît pas suffisant mais si on ne souhaite pas se confronter à la complexité du traitement, on peut se limiter à jouer sur le seul paramètre de lissage (//smoothing//) qui peut montrer une bonne efficacité. | ||
+ | Sa valeur par défaut est 10. On peut tenter de l'augmenter sensiblement et visualiser l'effet. | ||
+ | |||
+ | Ainsi pour lui donner une valeur de 40, par exemple, on saisira les lignes suivantes (première ligne inchangée donc optionnelle si elle a déjà été exécutée) : | ||
+ | <code> | ||
+ | ffmpeg -i inputFile -vf vidstabdetect -f null transforms.trf | ||
+ | ffmpeg -i inputFile -vf vidstabtransform=smoothing=40:input=transforms.trf -c:v libx264 -crf 20 -c:a aac -ab 192k output.mp4 | ||
+ | </code> | ||
+ | |||
+ | À noter que le processus de stabilisation applique une certaine valeur de zoom à l'image pour pouvoir la décaler sans faire apparaître de bordures noires. | ||
+ | <note>Si on ne souhaite pas de ré-encodage de l'audio : remplacer <code>"-c:a aac -ab 192k" par "-c:a copy"</code></note> | ||
==== Faire des essais de conversion avec FFmpeg sur une portion de fichier ==== | ==== Faire des essais de conversion avec FFmpeg sur une portion de fichier ==== |