logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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
obsolete:avconv [30/09/2023 20:32]
captnfab supprimée
— (Version actuelle)
Ligne 1: Ligne 1:
-====== avconv ====== 
  
-  * Objet : avconv 
-  * Niveau requis : {{tag>​débutant avisé}} 
-  * Commentaires : //avconv permet de traiter des flux vidéos ou audio en ligne de commande. // 
-  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) 
-  * Suivi du wiki : {{tag>​obsolète}} 
-  * Création par [[user>​smolski]] 20-05-2015 
-  * Mise à jour le 20-05-2015 
-  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​id=11343 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
-  * relecture le 24 avril 2023 par lagrenouille 
-  ​ 
-  ​ 
- 
- 
-===== Introduction ===== 
- 
-<note warning>​**ATTENTION !** Ce tutoriel est une copie adaptée de celui concernant [[doc:​media:​ffmpeg|ffmpeg]]. \\ 
-Si vous y rencontrez des erreurs de traitement dans les commandes, reportez-les sur le forum par le lien mis dans l'​entête de celui-ci afin de permettre de les actualiser.</​note>​ 
- 
-avconv est une suite de logiciels libres en ligne de commande qui permet de traiter des flux vidéo et/ou audio. \\ 
-Avec avconv, on peut déclencher des enregistrements,​ comme des lectures, appliquer des corrections à l'aide de filtres, ou transcoder des médias d'un format vers un autre. 
- 
-Aujourd'​hui,​ il est préférable d'​utiliser avconv à la place de [[doc:​media:​ffmpeg|ffmpeg]] tout en conservant les mêmes options. 
- 
-===== Installation ===== 
- 
-avconv est fourni par le paquet libav-tools des dépôts Debian officiels : 
-<code root>​apt-get update && apt-get install libav-tools</​code>​ 
- 
-Si vous utilisez [[doc:​systeme:​apt:​sources.list:​stable#​les-depots-deb-multimedia | les dépôts deb-multimedia]],​ n'​oubliez pas de les mettre en priorité restreinte comme indiqué dans le tutoriel en lien. 
- 
-===== Utilisation ===== 
- 
-avconv peut être manipulé à l'aide de différentes interfaces graphiques : 
-  *[[:​doc:​media:​vlc | VLC]] 
-  *... 
- 
-Ou directement en ligne de commande comme on va le détailler ci-dessous. 
- 
-===== Préambule ===== 
- 
-Une petite introduction aux différentes terminologies de la vidéo peut être utile pour bien comprendre la syntaxe de avconv. 
- 
-==== Les formats: ==== 
- 
-Le format est le container qui permet le transport de la vidéo, du son et des sous-titres soit sous forme de fichier (mkv, mov...) soit sous forme de flux (MPEG TS). A l’intérieur d'un container on peut insérer (muxer) ou extraire (demuxer): 
-  *un ou plusieurs flux vidéo (un film, ou des chaînes de télévision....) 
-  *un ou plusieurs flux audio (la version original, la version française, ... ) 
-  *un ou plusieurs flux de sous-titres. (Français, Sourd et malentendant,​ ...) 
-  *plus des métadonnées (titre, nom de l'​artiste par exemple) 
- 
-On parle de multiplexer les différentes pistes (flux ou stream) dans un format. 
- 
-avconv fournit une liste des formats qu'il supporte: 
-<code user>​avconv -formats</​code>​ 
-<file config retour de la commande>​ 
-DE avi             AVI (Audio Video Interleaved) 
-DE ogg             Ogg 
-D  matroska,​webm ​  ​Matroska / WebM 
- E mov             ​QuickTime / MOV 
-D  mov,​mp4,​m4a,​3gp,​3g2,​mj2 QuickTime / MOV 
- E webm            WebM 
-</​file>​ 
-Le D signifie la capacité à le lire, et E la possibilité d'​encapsuler dans le format. 
- 
-==== Les codecs ==== 
- 
-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, avconv liste les codecs qu'il est capable de gérer: 
-<code user>​avconv -formats</​code>​ 
- 
-==== Les filtres ==== 
- 
-avconv disposent aussi d'une base importante de filtre qui permettent de modifier le contenu de chaque flux, comme changer la résolution,​ modifier le volume d'une piste, incruster un logo etc.... 
-<code user>​avconv -formats</​code>​ 
- 
-==== Formats + Codecs + filtres ==== 
- 
-Si on résume, avconv permet de multiplexer ou de-multiplexer dans différents formats: 
-  *  des flux vidéos compressés (ou pas), 
-  *  des flux audio compressés (ou pas), 
-  *  des sous-titres dans différents formats. 
- 
-Et de modifier à l'aide de filtre le contenu de chaque flux indépendamment. 
- 
-<note tip>Mais si avconv peut gérer des tonnes de formats et des tonnes de codecs différents,​ toutes les combinaisons ne sont pas possible, comme le montre ce tableau: http://​www.videolan.org/​streaming-features.html.</​note>​ 
- 
-En effet, chaque codec ou format comporte sa propre norme avec plus ou moins de licences restrictives,​ toutes les combinaisons ne sont donc pas possible. \\ 
-Heureusement le libre fournit plusieurs formats ainsi que plusieurs codecs libre de droit : 
-  * Dans les formats citons: mkv, webm, ogv, ogg... 
-  * Dans les codecs vidéos citons: vp9, vp8, theora(vp3),​ dirac... 
-  * Dans les codecs audio citons: flac, opus, vorbis et bien d'​autre... 
- 
-===== Connaître le contenu d'un fichier ===== 
- 
-Avant de commencer tout encodage il est bon de connaître son contenu, avconv permet de lire l'​entête du "​format":​ 
-<code user>​avconv -i tears_of_steel.mkv </​code>​ 
-  * -i permet de déclarer l'​entrée à démuxer. 
- 
-Ce qui nous retourne ceci: 
-<file config retour de la commande>​ 
-Input #0, matroska,​webm,​ from '​tears_of_steel.mkv':​ 
-Metadata: 
-  title           : ​ 
-  ARTIST ​         :  
-  COMPOSER ​       :  
-  SYNOPSIS ​       :  
-  DATE_RELEASED ​  : ​ 
-  GENRE           : ​ 
-  ENCODER ​        : Lavf54.29.104 
-Duration: 00:​12:​14.12,​ start: 0.000000, bitrate: 4615 kb/s 
-  Stream #0:0(eng): Video: h264 (Main), yuv420p, 1280x534 [SAR 1:1 DAR 640:267], 24 fps, 24 tbr, 1k tbn, 180k tbc (default) 
-  Stream #0:1(eng): Audio: aac, 44100 Hz, stereo, s16 (default) 
-  Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default) 
-  Stream #0:3(eng): Subtitle: ssa (default) 
-  Stream #0:4(fr): Subtitle: ssa (default)</​file>​ 
- 
-Et pour ce fichier, on y apprend beaucoup de choses : 
-  * L'​input 0 décrit le format du fichier (Matroska ici). (Certains formats autorisent plusieurs Input, d’où la numérotation) 
-  * Le fichier comprend 5 flux (stream) numérotés de 0 à 4: 
-    *un flux vidéo encodé en h264 
-    *un flux audio stéréo en anglais 
-    *un flux audio 5.1 en anglais 
-    *et deux sous-titres Anglais + Français. 
- 
-=====Changer de Format===== 
- 
-On peut facile changer de format sans toucher au flux : 
- 
-<code user>​avconv -i tears_of_steel.mkv -c copy tears_of_steel.mov</​code>​ 
- 
-^   //​COMMANDE// ​ ^   //​ACTION// ​  ^ 
-| -i   | spécifie le fichier d'​entrée ​  | 
-| -c copy   | copie à l'​identique la totalité des flux   | 
-| -c:v copy   | copie à l'​identique les pistes vidéos ​  | 
-| -c:a copy   | copie à l'​identique les pistes audio   | 
-| -c:s copy   | copie à l'​identique les pistes sous-titres ​  | 
- 
-<​note>​Si on indique pas à avconv de faire la copie exacte des flux, il lancera un profil d'​encodage par défaut.</​note>​ 
- 
-Si l'on souhaite différencier les flux entre eux 
- 
-^   //​COMMANDE// ​ ^   //​ACTION// ​  ^ 
-| -c:​v:​0 ​  | première piste vidéo ​  | 
-| -c:​a:​0 ​  | première piste audio   | 
-| -c:​a:​1 ​  | deuxième piste audio   | 
-| -c:​s:​0 ​  | première piste sous-titre ​  | 
-| -c:s 1   | deuxième piste sous-titre ​  | 
- 
-<note important>​ 
-Pour des fichiers comprenant plus de 3 flux, il semble qu'il y est un bug avec la fonction "​copy"​.Certain flux sont perdus lors de la copie, il faut passer par la fonction mapping pour pouvoir en copier l'​intégralité.</​note>​ 
- 
-===== Organiser l'​ordre des flux (mapping)===== 
- 
-{{ /​file-R25c876eb2dff659bf9c5f2a5b572d153.png }} 
- 
-avconv permet de modifier l'​ordre des flux pour les adapter à ses usages à l'aide du paramètre "​-map"​ : 
-<code user>​avconv -i tears_of_steel.mkv -map 0:0 -map 0:2 -map 0:1 -map 0:4 -map 0:3 -c copy tears_of_steel-v2.mkv </​code>​ 
- 
-Dans cette commande j'​inverse les deux flux audio entre-eux et ainsi que les deux sous-titres. 
-  *-map 0:1: piste 1 de l'​input 0 (tears_of_steel.mkv) 
-  *-map 0:2: piste 2 de l'​input 0 (tears_of_steel.mkv) 
- 
-Lors de l’exécution avconv indiquent quel croisement (mapping) il applique : 
-<file config retour de la commande> ​ 
-Stream mapping: 
-Stream #0:0 -> #0:0 (copy) 
-Stream #0:2 -> #0:1 (copy) 
-Stream #0:1 -> #0:2 (copy) 
-Stream #0:4 -> #0:3 (copy) 
-Stream #0:3 -> #0:4 (copy)</​file>​ 
- 
-=====Ajouter un flux===== 
- 
-Le paramètre ''​-map''​ permet aussi d'​ajouter un flux.Dans l'​exemple qui suit un sous-titre en espagnol (TOS-es.srt) en position 4 : 
-<code user>​avconv -i tears_of_steel.mkv ​ -i TOS-es.srt -map 0:0 -map 0:1 -map 0:2 -map 1:0 -map 0:3 -map 0:4 -c:v copy -c:a copy  -metadata:​s:​s:​0 language=esp tears_of_steel-v2.mkv</​code>​ 
- 
-  *-map 0:0 faisant référence au premier flux du premier "​input"​ : soit la vidéo du fichier ​ "​tears_of_steel.mkv"​ 
-  *-map 1:0 faisant référence au premier flux du deuxième "​input"​ : soit le sous-titre du fichier "​TOS-es.srt"​ 
- 
-Cela permet de l’insérer où l'on souhaite : 
-  * Stream #0:0(eng): Video: h264 (Main), yuv420p, 1280x534 [SAR 1:1 DAR 640:267], 24 fps, 24 tbr, 1k tbn, 180k tbc (default) 
-  * Stream #0:1(eng): Audio: aac, 44100 Hz, stereo, s16 (default) 
-  * Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default) 
-  * Stream #0:3(esp): Subtitle: ssa (default) 
-  * Stream #0:4(eng): Subtitle: ssa (default) 
-  * Stream #0:5(fr): Subtitle: ssa (default) 
- 
-L'​option metadata permet de renseigner la langue du fichier : 
-  * -metadata:​s:​s:​0 language=esp \\    
- 
-===== Extraire un flux ===== 
- 
-En utilisant les possibilités du mapping il est très facile d'​extraire un seul flux d'un fichier en comportant plusieurs : 
-<code user>​avconv -i tears_of_steel.mkv -map 0:2 -acodec copy tears_of_steel_BO.mkv </​code>​ 
- 
-Dans cet exemple, je ne copie qu'une seule des pistes audio. 
- 
-====Extraire une piste audio en MP3 ==== 
- 
-Et l'on peut, très bien, faire une conversion dans la foulée : 
-<code user>​avconv -i tears_of_steel.mkv -map 0:2 -acodec libmp3lame -ar 44100 -ac 2 -ab 192k tears_of_steel_BO.mp3</​code>​ 
- 
-====Extraire un sous-titre ==== 
- 
-<code user>​avconv -i tears_of_steel.mkv -map 0:4 -c:s srt tears_of_steel_FR.srt</​code>​ 
- 
-===== Extraire un segment ===== 
- 
-avconv permet d'​extraire,​ des morceaux d'un média, en précisant un point d'​entrée avec **-ss** (-ss 00:06:46) et précisant une durée avec **-t** (-t 00:01:00). Cette fonction est très utile pour faire des tests d'​encodage et pour valider sa commande. A noter que **-ss** et **-t** doivent être placés devant le premier input (-i). 
- 
-<code user>​avconv -ss 00:06:46 -t 00:01:00 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv</​code>​ 
- 
-Parfois la durée **-t** ​ n'est pas prise en compte. On peut utiliser l'​option **-to** en la plaçant au niveau du fichier de sortie 
-<code user>​avconv -ss 00:​06:​46 ​ -i tears_of_steel.mkv -c copy -to 00:01:00 tears_of_steel_extrait.mkv</​code>​ 
- 
-===== Augmenter le nombre de threads ===== 
- 
-Selon les codecs, il est possible de lancer une conversion sur plusieurs threads processeurs grâce à l'​option **threads** : 
-<code user>​avconv -threads 4 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv</​code>​ 
- 
-Ici je force le travail sur 4 threads ce qui peux me faire gagner un temps précieux. 
- 
-<note tip>​**-threads 0** correspond au mode automatique et utilisera le maximum de threads disponibles mais il ne fonctionne pas avec tout les codecs (notamment libvpx)</​note>​ 
- 
-===== Encoder la vidéo ===== 
- 
-^ option ​   ^  explication de l'​option ​ | 
-|-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) | 
-|-qmin | détermine le seuil minimum du débit binaire variable (VBR) | 
-|-qmax | détermine le seuil maximum du débit binaire variable (VBR) | 
-|-f | sélectionne le nom du conteneur | 
-|-r | définit le nombre d'​images par seconde | 
- 
- 
-==== Encoder la vidéo en VP8 ==== 
- 
-VP8 est un codec vidéo libre promu par Google, un bon équivalent au h264/mp4 : 
-<code user>​avconv -i tears_of_steel_720p.mkv -c:v:0 libvpx -crf 10 -vb 4M -c:a copy   ​tears_of_steel_vp8.mkv</​code>​ 
- 
-Ici on utilise la librairie **libvpx** avec deux options : 
-  *-crf  permet de définir un niveau de qualité entre 0 et 63 (petit nombre = meilleure qualité mais plus de temps de calcul) 
-  *-vb 4M permet de donner un objectif de débit à 4 Megabit/s 
- 
-Une liste des options possibles pour encoder en vp8 est disponible ici: 
-  * [[http://​wiki.webmproject.org/​ffmpeg]] 
- 
- 
-==== Encoder la vidéo en H264/Mpeg4 ==== 
- 
-Le h264 ou mpeg4 est un codec propriétaire couramment utilisé pour son bon rapport qualité/​débit : 
-<code user>​avconv -i tears_of_steel_720p.mkv -c:v:0 libx264 -preset slow -crf 22 -c:a copy tears_of_steel_h264.mkv</​code>​ 
- 
-  * **-preset** permet de définir une vitesse d'​encodage,​ plus il sera lent plus l'​image sera de qualité. Sont disponibles:​ ultrafast,​superfast,​ veryfast, faster, fast, medium, slow, slower et veryslow. Medium étant le réglage par défaut. 
-  * **-crf** ​ permet de définir un niveau de qualité entre 0 et 51 (petit nombre = meilleure qualité mais plus de temps de calcul) 
- 
-Une documentation plus détaillée en anglais est disponible ici: 
-  * [[https://​trac.ffmpeg.org/​wiki/​x264EncodingGuide | trac.ffmpeg.org]] 
- 
-===== Encoder le son ===== 
- 
-La liste des options avconv pour le traitement Audio est disponible ici: 
-[[http://​ffmpeg.org/​ffmpeg.html#​Audio-Options]] 
- 
-En voici les principales:​ 
-^ option ​   ^  explication de l'​option ​ | 
-|-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 | 
-|-ac | configure le nombre de canaux (mono-stéréo) | 
- 
-==== Encoder le son en Vorbis ==== 
- 
-Vorbis est un codec audio libre, d'​encodage avec perte, équivalent au mp3/h263 : 
-<code user> avconv -i tears_of_steel_720p.mkv -c:v copy -c:a:0 libvorbis -qscale:a 5 -ar 48000   ​tears_of_steel_vorbis.mkv</​code>​ 
-  *-qscale:a permet de gérer la qualité d'​encodage sur une échelle de 0–10, où 10 est la meilleure qualité. par défaut qscale: a est à 3. 
-  *-ar 48000 permet de ré-échantillonner l'​audio en 48Khz. 
- 
- 
-==== Encoder un fichier audio en mp3 ==== 
- 
-Plusieurs codec permettent d'​encoder le son en mp3, libmp3lame est l'un des plus utilisé. \\ 
-Voici un exemple en forçant le bitrate à 256kbits/s, en ré-échantillonnant en 44100hz et en forçant la fabrication d'un stéréo : 
-<code user>​avconv -i 01.ogg -acodec libmp3lame -ar 44100 -ac 2 -ab 256k 01.mp3</​code>​ 
- 
-<note important>​Attention les métadonnées peuvent être perdues en utilisant cette méthode</​note>​ 
- 
-===== Images Fixes ===== 
- 
-==== Transformer une série d’images en vidéo ==== 
- 
-<code user>​avconv -f image2 -i image%d.jpg video.mpg</​code>​ 
- 
-Ce qui transformera les images du répertoire courant nommées image1.jpg, image2.jpg, image3.jpg, ... en un fichier vidéo nommé video.mpg. \\ 
-Notons que %d sera autoamtiquement transformé en 1, 2, 3, 4, 5... 
- 
-Si l’on a des images nommées image001.jpg,​ image002.jpg,​ image003.jpg,​ ... vous utiliserez la commande : 
-<code user>​avconv -f image2 -i image%03d.jpg video.mpg</​code>​ 
- 
-Mais on peut aussi utiliser d’autres types de format d’images : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TGA, TIFF, SGI, PTX 
- 
-On peut aussi paramétrer plus finement l’export vidéo : 
-<code user>​avconv -r 24 -b 1800 -i image%d.bmp video.mpg</​code>​ 
- 
-Ici on spécifie 24 images par seconde et un bitrate de 1800kb/s. 
- 
-==== Transformer une vidéo en une série images ==== 
- 
-<code user>​avconv -i video.mpg image%d.jpg</​code>​ 
- 
-ce qui générera les fichiers image1.jpg, image2.jpg, ... \\ 
-Mais on peut aussi générer des images au format : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI. Par exemple : 
-<code user>​avconv -i video.mpg image%d.tif</​code>​ 
- 
-==== Extraire une seule image (Vignette)===== 
- 
-<code user>​avconv -i fichier_video -f mjpeg -ss 10 -vframes 1 -s 320x240 fichier_vignette.jpg</​code>​ 
- 
-  * -f mjpeg pour obtenir un fichier en format JPG 
-  * -ss 10 pour choisir la vignette de la 10ème seconde après le début de la vidéo 
-  * -vframes 1 la première frame 
-  * -s 320x240 les dimensions de la vignette image JPG. 
- 
-<note tip>​L'​ancien avconv demandait l'​option : -f **image2** à la place de -f **mjpeg** maintenant.</​note>​ 
- 
-===== Enregistrer son bureau ===== 
- 
-La capture d'​écran vidéo dépend beaucoup des capacités de votre machine, notamment de la vitesse d'​écriture des disques et de la rapidité du processeur pour l'​encodage temps réel. Il est d'​ailleurs conseillé de faire la capture de manière brute et de faire un encodage plus fin par la suite. \\ 
-Si votre machine ne permet d'​enregistrer qu'un nombre plus petit d'​images que prévu, la vidéo semblera accélérée. 
- 
-avconv permet de capturer la sortie du  serveurX avec le module x11grab : 
-<code user>​avconv -f x11grab -r 25 -s 1280x1024 -i :0.0  -vcodec libx264 -crf 0 -preset ultrafast output.mkv</​code>​ 
- 
-  *-i 0:0 représente le premier écran 
-  *-r donne le nombre d'​image par seconde 
-  *-s la résolution de la capture 
- 
-Pour capturer seulement un morceau de l'​écran,​ on peut préciser les coordonnées du point de départ de la capture (x=200 et y= 100) : 
-<code user>​avconv -f x11grab -r 25 -s 512x512 -i :​0.0+200,​100 ​ -vcodec libx264 -crf 0 -preset ultrafast output.mkv</​code>​ 
- 
-<note important>​avconv ne semble pas respecter le nombre d'​image par seconde. Si les capacités de la machine le permettent, il pourra aller au delà, la vidéo sera donc ralentie.</​note>​ 
- 
-Plus d'​informations disponibles sur : 
-  * [[http://​trac.ffmpeg.org/​wiki/​How%20to%20grab%20the%20desktop%20%28screen%29%20with%20FFmpeg | trac.avconv.org ]] 
- 
-===== Enregistrer sa webcam ===== 
- 
-avconv permet de capturer l'​image en provenance d'une Webcam grâce au module video4linux2 : 
-<code user>​avconv -f video4linux2 -r 25 -s 640x480 -i /dev/video0 mawebcam.avi</​code>​ 
- 
-  */​dev/​video0 pointe vers votre webcam. 
-  *-r 25 force la capture à 25 images par seconde (fps). 
-  *-s 640x480 force la résolution de la capture. 
- 
-Plus d'​information sur la capture avec video4linux2 : 
-  * [[https://​trac.ffmpeg.org/​wiki/​How%20to%20capture%20a%20webcam%20input | trac.avconv.org]] 
- 
-<note important>​avconv ne semble pas respecter le nombre d'​image par seconde. Si les capacités de la machine le permettent, il pourra aller au delà, la vidéo sera donc ralentie.</​note>​ 
- 
- 
-  

Pied de page des forums

Propulsé par FluxBB