Differences between revisions 9 and 10
Revision 9 as of 2015-06-29 09:43:05
Size: 18982
Editor: kao
Comment: minor fix
Revision 10 as of 2015-07-12 08:56:36
Size: 19692
Editor: kao
Comment: add h265
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
 # apt-get install libav-tools
}}}

Pour installer le paquet ffmpeg (attention pas disponible pour Debian 8 jessie):
{{{
# apt-get install ffmpeg
}}}

Pour savoir dans quel dépôt est disponible le paquet, regardez ici DebPkg:libav ou ici DebPkg:ffmpeg :
apt-get install libav-tools
}}}

Pour installer le paquet ffmpeg
{{{
apt-get install ffmpeg
}}}

Attention ffmpeg n'est pas disponible pour Debian 8 jessie, pour savoir dans quel dépôt est le paquet, regardez ici DebPkg:libav ou ici DebPkg:ffmpeg .
Il est aussi possible de le compiler en suivant les instructions disponibles ici
: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
Line 51: Line 52:
$ avconv -formats avconv -formats
Line 74: Line 75:
$ avconv -codecs avconv -codecs
Line 81: Line 82:
$ avconv -filters avconv -filters
Line 105: Line 106:
$ avprobe tears_of_steel.mkv avprobe tears_of_steel.mkv
Line 140: Line 141:
$ avconv -i tears_of_steel.mkv -c copy tears_of_steel.mov avconv -i tears_of_steel.mkv -c copy tears_of_steel.mov
Line 225: Line 226:
$ avconv -i tears_of_steel.mkv -map 0:2 -acodec copy tears_of_steel_BO.mkv avconv -i tears_of_steel.mkv -map 0:2 -acodec copy tears_of_steel_BO.mkv
Line 234: Line 235:
$ avconv -i tears_of_steel.mkv -map 0:2 -acodec libmp3lame -ar 44100 -ac 2 -ab 192k tears_of_steel_BO.mp3 avconv -i tears_of_steel.mkv -map 0:2 -acodec libmp3lame -ar 44100 -ac 2 -ab 192k tears_of_steel_BO.mp3
Line 240: Line 241:
$ avconv -i tears_of_steel.mkv -map 0:4 -c:s srt tears_of_steel_FR.srt avconv -i tears_of_steel.mkv -map 0:4 -c:s srt tears_of_steel_FR.srt
Line 249: Line 250:
$ avconv -ss 00:06:46 -t 00:01:00 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv avconv -ss 00:06:46 -t 00:01:00 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv
Line 254: Line 255:
$ avconv -ss 00:06:46 -i tears_of_steel.mkv -c copy -to 00:01:00 tears_of_steel_extrait.mkv avconv -ss 00:06:46 -i tears_of_steel.mkv -c copy -to 00:01:00 tears_of_steel_extrait.mkv
Line 261: Line 262:
$ avconv -threads 4 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv avconv -threads 4 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv
Line 287: Line 288:
$ avconv -i tears_of_steel_720p.mkv -c:v:0 libvpx -crf 10 -vb 4M -c:a copy tears_of_steel_vp8.mkv avconv -i tears_of_steel_720p.mkv -c:v:0 libvpx -crf 10 -vb 4M -c:a copy tears_of_steel_vp8.mkv
Line 302: Line 303:
$ avconv -i tears_of_steel_720p.mkv -c:v:0 libx264 -preset slow -crf 22 -c:a copy tears_of_steel_h264.mkv avconv -i tears_of_steel_720p.mkv -c:v:0 libx264 -preset slow -crf 22 -c:a copy tears_of_steel_h264.mkv
Line 308: Line 309:
Une documentation plus détaillée en anglais est disponible ici : [[https://trac.ffmpeg.org/wiki/x264EncodingGuide | trac.ffmpeg.org]] Une documentation plus détaillée en anglais est disponible ici : https://trac.ffmpeg.org/wiki/Encode/H.264


== Encoder la vidéo en H.265/HEVC ==

Le H.265/HEVC est un nouveau codec propriétaire, futur successeur du H264/Mpeg4. Les codecs qui le gérent sont récent et toutes les options et optimisations ne sont pas encore disponible. Pour des temps de calcul plus courts et un meilleur encodage essayez d'optenir une version récente du codec.

La syntaxe suit celle du H264
{{{
avconv -i tears_of_steel_720p.mkv -c:v:0 libx265 -preset slow -crf 22 -c:a copy tears_of_steel_h265.mkv
}}}

Une documentation plus détaillée en anglais est disponible ici : https://trac.ffmpeg.org/wiki/Encode/H.265 et ici http://x265.readthedocs.org/en/default/
Line 327: Line 340:
$ avconv -i tears_of_steel_720p.mkv -c:v copy -c:a:0 libvorbis -qscale:a 5 -ar 48000 tears_of_steel_vorbis.mkv avconv -i tears_of_steel_720p.mkv -c:v copy -c:a:0 libvorbis -qscale:a 5 -ar 48000 tears_of_steel_vorbis.mkv
Line 338: Line 351:
$ avconv -i 01.ogg -acodec libmp3lame -ar 44100 -ac 2 -ab 256k 01.mp3 avconv -i 01.ogg -acodec libmp3lame -ar 44100 -ac 2 -ab 256k 01.mp3
Line 348: Line 361:
$ avconv -f image2 -i image%d.jpg video.mpg avconv -f image2 -i image%d.jpg video.mpg
Line 356: Line 369:
$ avconv -f image2 -i image%03d.jpg video.mpg avconv -f image2 -i image%03d.jpg video.mpg
Line 363: Line 376:
$ avconv -r 24 -b 1800 -i image%d.bmp video.mpg avconv -r 24 -b 1800 -i image%d.bmp video.mpg
Line 371: Line 384:
$ avconv -i video.mpg image%d.jpg avconv -i video.mpg image%d.jpg
Line 377: Line 390:
$ avconv -i video.mpg image%d.tif avconv -i video.mpg image%d.tif
Line 383: Line 396:
$ avconv -i fichier_video -f mjpeg -ss 10 -vframes 1 -s 320x240 fichier_vignette.jpg avconv -i fichier_video -f mjpeg -ss 10 -vframes 1 -s 320x240 fichier_vignette.jpg
Line 400: Line 413:
$ avconv -f x11grab -r 25 -s 1280x1024 -i :0.0 -vcodec libx264 -crf 0 -preset ultrafast output.mkv avconv -f x11grab -r 25 -s 1280x1024 -i :0.0 -vcodec libx264 -crf 0 -preset ultrafast output.mkv
Line 409: Line 422:
$ avconv -f x11grab -r 25 -s 512x512 -i :0.0+200,100 -vcodec libx264 -crf 0 -preset ultrafast output.mkv avconv -f x11grab -r 25 -s 512x512 -i :0.0+200,100 -vcodec libx264 -crf 0 -preset ultrafast output.mkv
Line 421: Line 434:
$ avconv -f video4linux2 -r 25 -s 640x480 -i /dev/video0 mawebcam.avi avconv -f video4linux2 -r 25 -s 640x480 -i /dev/video0 mawebcam.avi
Line 433: Line 446:


Traduction(s): English - Français


ffmpeg/libav est une suite de logiciels libres en ligne de commande qui permet de traiter des flux vidéos ou audio. Avec ffmpeg/libav, on peut déclencher des enregistrements, comme des lectures, appliquer des corrections à l'aide de filtre, ou transcoder des médias d'un format à un autre.

libav est un fork de ffmpeg que l'on peut retrouver dans les dépôts Debian. Si vous utilisez ffmpeg, il faudra remplacer le mot "avconv" par "ffmpeg". A part cela la ligne de commande reste identique.

Installation

Pour installer libav :

apt-get install libav-tools 

Pour installer le paquet ffmpeg

apt-get install ffmpeg

Attention ffmpeg n'est pas disponible pour Debian 8 jessie, pour savoir dans quel dépôt est le paquet, regardez ici libav ou ici ffmpeg . Il est aussi possible de le compiler en suivant les instructions disponibles ici : https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

Utilisation

FFmpeg ou Libav peuvent être manipulé à l'aide de différente interface graphique :

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.

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.

FFmpeg/Libav fournit une liste des formats qu'il supporte :

avconv -formats

...
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
...
  • D. = Démultiplexage supporté
  • .E = Multiplexage supporté

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, ffmpeg/libav liste les codecs qu'il est capable de gérer:

avconv -codecs

Les filtres

ffmpeg/libav dispose aussi d'une base importante de filtre qui permet de modifier le contenu de chaque flux, comme changer la résolution, modifier le volume d'une piste, incruster un logo etc....

avconv -filters

Formats + Codecs + Filtres

Si on résume, ffmpeg/libav 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.

Mais si ffmpeg/libav peut gérer des tonnes de formats et des tonnes de codecs différents, toutes les combinaisons ne sont pas possibles, comme le montre ce tableau : http://www.videolan.org/streaming-features.html .

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, ffprobe et avprobe permettent de lire l'entête du "format" :

avprobe tears_of_steel.mkv

Ce qui nous retourne ceci :

  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)

Ainsi ce fichier, on peut noter que :

  • L'input 0 décrit le format du fichier (Matroska ici). (Certain format autorise 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 premier flux audio en stéréo et en anglais
    • un deuxième flux audio en anglais 5.1
    • et deux sous-titres : un en anglais et un en français.

Changer de Format

On peut facilement changer de format sans toucher au flux :

avconv -i tears_of_steel.mkv -c copy tears_of_steel.mov
  • -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

Si on indique pas à ffmpeg de faire la copie exacte des flux, il lancera un profil d'encodage par défaut.

Si l'on souhaite différencier les flux entre eux :

  • -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

Pour des fichiers comprenant plus de 3 flux, il semble qu'il y ait 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é.

Organiser l'ordre des flux (mapping)

                 Streams:         _________      _________      _________
                  #0:0           |         |    |         |    |         |
                +------->------->| decoder |--->| filters |--->| encoder |--->----+
                |                |_________|    |_________|    |_________|        |
 __________     |                 _________      _________      _________         |       ___________
|          |    | #0:1           |         |    |         |    |         |        |      |           |
| Input #O |----+------->.   ,-->| decoder |--->| filters |--->| encoder |--->----+----->| Output #O |
|__________|    |         \ /    |_________|    |_________|    |_________|        |      |___________|
                |          X      _______________________________________         |
                | #0:2    / \    |                                       |        |
                +------->´   `-->|                 copy                  |--->----+
                                 |_______________________________________|
            \________/ \______/                                             \________/
              demuxer   mapping                                                muxer

ffmpeg/libav permet de modifier l'ordre des flux pour les adapter à ses usages à l'aide du paramètre "-map" :

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

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, ffmpeg indiquent quel croisement (mapping) il applique :

  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)

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 :

$ 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
  • -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 :

avconv -i tears_of_steel.mkv -map 0:2 -acodec copy tears_of_steel_BO.mkv

Dans cet exemple, on 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 :

avconv -i tears_of_steel.mkv -map 0:2 -acodec libmp3lame -ar 44100 -ac 2 -ab 192k tears_of_steel_BO.mp3

Extraire un sous-titre

avconv -i tears_of_steel.mkv -map 0:4 -c:s srt tears_of_steel_FR.srt 

Extraire un segment

FFmpeg/Libav 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 un 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. À noter que -ss et -t doivent être placés devant le premier input (-i).

avconv -ss 00:06:46 -t 00:01:00 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv

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

avconv -ss 00:06:46  -i tears_of_steel.mkv -c copy -to 00:01:00 tears_of_steel_extrait.mkv 

Augmenter le nombre de threads

Selon les codecs, il est possible de lancer une conversion sur plusieurs threads processeurs grâce à l'option threads :

avconv -threads 4 -i tears_of_steel.mkv -c copy tears_of_steel_extrait.mkv 

Ici je force le travail sur 4 threads ce qui peut me faire gagner un temps précieux.

-threads 0 correspond au mode automatique et utilisera le maximum de threads disponibles, mais il ne fonctionne pas avec tous les codecs.

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 :

avconv -i tears_of_steel_720p.mkv -c:v:0 libvpx -crf 10 -vb 4M -c:a copy   tears_of_steel_vp8.mkv

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:

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 :

avconv -i tears_of_steel_720p.mkv -c:v:0 libx264 -preset slow -crf 22 -c:a copy tears_of_steel_h264.mkv
  • -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/Encode/H.264

Encoder la vidéo en H.265/HEVC

Le H.265/HEVC est un nouveau codec propriétaire, futur successeur du H264/Mpeg4. Les codecs qui le gérent sont récent et toutes les options et optimisations ne sont pas encore disponible. Pour des temps de calcul plus courts et un meilleur encodage essayez d'optenir une version récente du codec.

La syntaxe suit celle du H264

avconv -i tears_of_steel_720p.mkv -c:v:0 libx265 -preset slow -crf 22 -c:a copy tears_of_steel_h265.mkv

Une documentation plus détaillée en anglais est disponible ici : https://trac.ffmpeg.org/wiki/Encode/H.265 et ici http://x265.readthedocs.org/en/default/

Encoder le son

La liste des options ffmpeg pour le traitement Audio est disponible ici: http://ffmpeg.org/ffmpeg.html#Audio-Options

En voici les principales:

options

explication des options

-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 :

avconv -i tears_of_steel_720p.mkv -c:v copy -c:a:0 libvorbis -qscale:a 5 -ar 48000   tears_of_steel_vorbis.mkv
  • -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 canal stéréo :

avconv -i 01.ogg -acodec libmp3lame -ar 44100 -ac 2 -ab 256k 01.mp3

Attention les métadonnées peuvent être perdues en utilisant cette méthode

Images Fixes

Transformer une série d’images en vidéo

avconv -f image2 -i image%d.jpg video.mpg

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 automatiquement 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 :

avconv -f image2 -i image%03d.jpg video.mpg

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 :

avconv -r 24 -b 1800 -i image%d.bmp video.mpg

Ici on spécifie 24 images par seconde et un bitrate de 1800kb/s.

Transformer une vidéo en une série images

avconv -i video.mpg image%d.jpg

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 :

avconv -i video.mpg image%d.tif

Extraire une seule image (Vignette)

avconv -i fichier_video -f mjpeg -ss 10 -vframes 1 -s 320x240 fichier_vignette.jpg
  • -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.

L'ancien ffmpeg demandait l'option : -f image2 à la place de -f mjpeg maintenant.

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.

FFmpeg permet de capturer la sortie du serveurX avec le module x11grab :

avconv -f x11grab -r 25 -s 1280x1024 -i :0.0  -vcodec libx264 -crf 0 -preset ultrafast output.mkv
  • -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) :

avconv -f x11grab -r 25 -s 512x512 -i :0.0+200,100  -vcodec libx264 -crf 0 -preset ultrafast output.mkv

FFmpeg/Libav 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.

Plus d'informations disponibles sur :

Enregistrer sa webcam

FFmpeg/Libav permet de capturer l'image en provenance d'une Webcam grâce au module video4linux2 :

avconv -f video4linux2 -r 25 -s 640x480 -i /dev/video0 mawebcam.avi
  • /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 :

FFmpeg/Libav 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.

Liens Externe