Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ffmpeg et capture d'ecran

11 réponses
Avatar
Hugolino
Salut,

Je veux faire une vidéo de mon écran. Dans la page de man de ffmpeg, il
est dit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
X11 grabbing

FFmpeg can grab the X11 display.

ffmpeg -f x11grab -i :0.0 /tmp/out.mpg

0.0 is display.screen number of your X11 server, same as the DIS
PLAY environment variable.
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Mais quand je lance la commande, elle me répond qu'elle ne connaît pas
le format x11grab.

Qui sait pourquoi ?

La sortie complète (ubuntu gutsy):
8<-----------8<---------8<----------8<----------8<----------8<----------8<
$ ffmpeg -f x11grab -i :0.0 /tmp/out.mpg
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-pp --enable-swscaler
--enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg
--enable-libgsm --enable-dc1394 --disable-debug --enable-libmp3lame
--enable-libfaadbin --enable-libfaad --enable-libfaac --enable-xvid
--enable-x264 --enable-liba52 --enable-amr_nb --enable-amr_wb
--enable-shared --prefix=/usr
libavutil version: 1d.49.3.0
libavcodec version: 1d.51.38.0
libavformat version: 1d.51.10.0
built on Dec 20 2007 21:25:50, gcc: 4.1.3 20070929 (prerelease) (Ubuntu
4.1.2-16ubuntu2)
Unknown input or output format: x11grab
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Merci de votre aide.

--
> Linux c'est une philosophie un art de vivre, un état intérieur,
> une sorte de fluide qui nous entoure et nous pénètre.
Fais tourner stp !
Hugo (né il y a 1 381 195 491 secondes)

10 réponses

1 2
Avatar
Nicolas George
Hugolino wrote in message
:
Mais quand je lance la commande, elle me répond qu'elle ne connaît pas
le format x11grab.

Qui sait pourquoi ?


Manifestement, il a été compilé sans. Télécharge le SVN et compile avec les
options que tu veux.

Avatar
Hugolino
Le 31 Jan 2008 17:41:06 GMT, Nicolas George a écrit:
Hugolino wrote in message
:
Mais quand je lance la commande, elle me répond qu'elle ne connaît pas
le format x11grab.

Qui sait pourquoi ?


Manifestement, il a été compilé sans. Télécharge le SVN et compile
avec les options que tu veux.


Oui, je n'avais pas percuté que '--enable-x11grab' aurait du apparaître
dans la sortie.

Des années que je n'avais pas compilé un source (ah la joie d'aller à la
pêche aux lib*-dev :)

J'arrive donc à obtenir un fichier vidéo avec la commande 'ffmpeg -r 25
-s 1280x960 -f x11grab -i :0.0 -r 25 -s 360x270 test.mpg' (ou test.flv).

Donc ça marche: merci à toi.

Mais.. le problème est que la charge de mon vieux[1] PC explose, elle
grimpe au-dessus de 3 en moins d'une minute (CPU à 100%, sys:25% +
user:75%)[2]

Evidemment avec compiz-fusion, c'est pire: la charge peut dépasser 20.

Quels paramètres me permettraient de diminuer la charge ?
J'imagine qu'il s'agirait d'enregistrer en "raw", puis de faire un
réencodage/traitement vidéo (mais là il va me falloir de la doc car la
vidéo, les *sombres* histoires de codecs , j'y entrave que dalle)

De plus j'aimerais bien augmenter la qualité des vidéos que je ne trouve
pas folichonne, (et pour bien faire, enregistrer du son)

J'ai fait 4 vidéos d'environ 1' 30'' (2000 à 4000 frames) de mes tests
dans <http://roulaize.fr/vrac/ffmpeg-test-drive/>


[1] Athlon K7 2400+ @2GHz / RAM 512MB + SWAP 640MB sous ubuntu 7.10

[2] J'ai un script php qui enregistre la charge du PC et un autre qui
dessine le graphe de la charge en fonction du temps, l'image est là:
<http://roulaize.fr/vrac/ffmpeg-test-drive/charge_2008-01-31.png>


--
Comment épouser une femme belle, intelligente et riche ?
Se marier trois fois ?

Hugo (né il y a 1 381 270 463 secondes)



Avatar
Nicolas George
Hugolino wrote in message
:
Quels paramètres me permettraient de diminuer la charge ?


Le framerate me semble le plus important.

Essaie de regarder ce que ça donne avec :

ffmpeg ... -i :0 -f rawvideo -vcodec rawvideo - > /dev/null

De plus j'aimerais bien augmenter la qualité des vidéos que je ne trouve
pas folichonne, (et pour bien faire, enregistrer du son)


Utilise du H.264 avec libx264.

Avatar
Fabien LE LEZ
On Thu, 31 Jan 2008 23:21:33 +0100, Hugolino :

Mais.. le problème est que la charge de mon vieux[1] PC explose, elle
grimpe au-dessus de 3 en moins d'une minute (CPU à 100%, sys:25% +
user:75%)[2]


Bienvenue dans le monde merveilleux de la compression vidéo.

Si tu veux obtenir une vidéo de bonne qualité dans une taille de
fichier raisonnable, il te faudra probablement du MPEG-4, encodé en
deux passes (une passe pour détecter les endroits contenant du
mouvement, qui demandent beaucoup de bande passante, et une passe pour
l'encodage proprement dit).

Tout ça est impossible à faire en temps réel. Tu vas donc devoir
capturer ta vidéo dans un codec peu efficace mais très rapide (HuffYUV
généralement), qui va te pondre un fichier monstrueusement gros.
Ensuite, tu recompresseras ton fichier en MPEG4, pour obtenir un
fichier d'une taille décente.


Quels paramètres me permettraient de diminuer la charge ?


Réduire la fréquence d'échantillonnage. 25 fps, c'est très bien pour
un film ; mais s'il s'agit de faire une démonstration d'un logiciel,
10 fps, c'est largement suffisant.


J'ai fait 4 vidéos d'environ 1' 30'' (2000 à 4000 frames) de mes tests
dans <http://roulaize.fr/vrac/ffmpeg-test-drive/>


Oublie le MPEG-1. Il était déjà considéré comme antédiluvien il y a
dix ans.
Enlève la photo en fond d'écran, ça consomme de la bande passante pour
rien.

Avatar
Fabien LE LEZ
On 31 Jan 2008 23:10:51 GMT, Nicolas George :

Utilise du H.264 avec libx264.


Sauf s'il faut afficher la vidéo dans un navigateur, le format FLV
risque d'être obligatoire.

Quant à l'usage MPEG-1, c'est effectivement une hérésie.

Avatar
Hugolino
Le Fri, 01 Feb 2008 00:29:37 +0100, Fabien LE LEZ a écrit:
On Thu, 31 Jan 2008 23:21:33 +0100, Hugolino :

Bienvenue dans le monde merveilleux de la compression vidéo.


Je sens que ça va pas être facile-facile :)
Merci de me répondre (ainsi qu'à NG)

Si tu veux obtenir une vidéo de bonne qualité dans une taille de
fichier raisonnable, il te faudra probablement du MPEG-4, encodé en
deux passes (une passe pour détecter les endroits contenant du
mouvement, qui demandent beaucoup de bande passante, et une passe pour
l'encodage proprement dit).


OK,

Tout ça est impossible à faire en temps réel. Tu vas donc devoir
capturer ta vidéo dans un codec peu efficace mais très rapide (HuffYUV
généralement), qui va te pondre un fichier monstrueusement gros.


Effectivement, j'ai fait un test à 12 fps en 1280x960 et j'ai obtenu un
fichier d'un peu moins de 1 Mo par seconde de capture au lieu de 2 Mo
par minute pour mes fichiers de tests en flv et mpg.

Ensuite, tu recompresseras ton fichier en MPEG4, pour obtenir un
fichier d'une taille décente.


Aurais-tu une idée de la commande de mencoder qui ferait ça, parce que
la page de man de mencoder, comment dire... ?

Quels paramètres me permettraient de diminuer la charge ?


Réduire la fréquence d'échantillonnage. 25 fps, c'est très bien pour
un film ; mais s'il s'agit de faire une démonstration d'un logiciel,
10 fps, c'est largement suffisant.


OK

J'ai fait 4 vidéos d'environ 1' 30'' (2000 à 4000 frames) de mes tests
dans <http://roulaize.fr/vrac/ffmpeg-test-drive/>


Oublie le MPEG-1. Il était déjà considéré comme antédiluvien il y a
dix ans.


OK, voilà la ligne que je tape : 'ffmpeg -r 12 -s 1280x960 -f x11grab -i
:0.0 -vcodec huffyuv -f rawvideo -r 12 -s 240x180 ze_video'

Je ne mets pas d'extension qu fichier de sortie, car je ne sais tout
simplement pas quoi mettre.

Ça raconte:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Input #0, x11grab, from ':0.0':
Duration: N/A, start: 1201943336.943510, bitrate: 471859 kb/s
Stream #0.0: Video: rawvideo, rgb32, 1280x960 [PAR 0:1 DAR 0:1],
471859 kb/s, 12.00 tb(r)
Output #0, rawvideo, to 'ze_video':
Stream #0.0: Video: huffyuv, rgb32, 240x180 [PAR 0:1 DAR 0:1],
q=2-31, 200 kb/s, 12.00 tb(c)
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 107 fps= 12 q=0.0 Lsize= 7373kB time=8.9
bitrateg74.1kbits/s
video:5650kB audio:0kB global headers:0kB muxing overhead 30.493344%
8<-----------8<---------8<----------8<----------8<----------8<----------8<

$ file ze_video
ze_video: data

Si je tente de lire la video avec mplayer, j'ai une erreur:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Playing ze_video.
libavformat file format detected.
[mp3 @ 0x87f4834]Could not find codec parameters (Audio: mp1, 352 kb/s)
LAVF_header: av_find_stream_info() failed

Exiting... (End of file)
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Aurais-tu une idée de la commande que je dois saisir pour faire une
capture d'écran avec ffmpeg ?
Le fichier que j'obtiens n'a pas l'air exploitable.

--
Democracy is the worst form of government, except for all those other
forms that have been tried from time to time.
Hugo (né il y a 1 381 368 126 secondes)


Avatar
Fabien LE LEZ
On Sat, 2 Feb 2008 10:35:01 +0100, Hugolino :

Ensuite, tu recompresseras ton fichier en MPEG4, pour obtenir un
fichier d'une taille décente.


Aurais-tu une idée de la commande de mencoder qui ferait ça


Non, mais pour l'avoir testé, je sais que ffmpeg fait ça très bien.


Avatar
Nicolas George
Fabien LE LEZ wrote in message
:
Non, mais pour l'avoir testé, je sais que ffmpeg fait ça très bien.


Globalement, il est conseillé (par les développeurs concernés) d'utiliser
plutôt ffmpeg, sauf si (1) on cherche à utiliser l'un des nombreux filtres
de mplayer (jusqu'à ce qu'ils soient isolés dans une libavfilter), (2) on a
besoin d'un codec propriétaire, et (3) dans certains cas pour produire du
MPEG-2 compatible DVD.

Avatar
Hugolino
Le Sat, 02 Feb 2008 19:01:25 +0100, Fabien LE LEZ a écrit:
On Sat, 2 Feb 2008 10:35:01 +0100, Hugolino :

Ensuite, tu recompresseras ton fichier en MPEG4, pour obtenir un
fichier d'une taille décente.


Aurais-tu une idée de la commande de mencoder qui ferait ça


Non, mais pour l'avoir testé, je sais que ffmpeg fait ça très bien.


Et si tu l'a testé, tu dois bien avoir une idée de la ligne de commande
qui pourrait réencoder mon fichier en mpeg4 ou en flv.

Parce que la page de man de ffmpeg, entre ces histoires de codecs et de
formats...

Merci à toi

--
Et vous ne pouvez pas le présenter à votre mère
Y'en a aussi, on se demande si elles n'en seraient pas capables !

Bien sûr ! ..quand on tient un bon modèle ! sinon, on se demande bien

à quoi servirait cette légendaire complicite mère-fille.



Avatar
Fabien LE LEZ
On Sun, 3 Feb 2008 20:00:15 +0100, Hugolino :

Et si tu l'a testé, tu dois bien avoir une idée de la ligne de commande
qui pourrait réencoder mon fichier en mpeg4 ou en flv.


Ben... Les lignes de commande de ffmpeg, c'est pas le genre de truc
qu'on retient facilement...

Si tu veux afficher la vidéo dans une page web, tu écriras quelque
chose comme :

ffmpeg -i source -b 1500000 destination.flv

Si c'est pour une vidéo "normale", ça devrait donner à peu près :

ffmpeg -i source -b 1500000 -vcodec mpeg4 destination.avi

Le "mpeg4" pourra être remplacé par x264 ou h264, mais je n'ai pas ce
codec dans ma version. À regarder de plus près.

Tu n'as pas à spécifier le format de destination, il est implicite par
l'extension du fichier (ici, .avi).

Un détail important est le bitrate, c'est-à-dire le nombre de bits par
seconde de vidéo. Pour un film, on utilise souvent une valeur comprise
entre un million et un million cinq cent mille (soit 128 à 192 Ko par
seconde de vidéo), mais pour une capture d'écran, je ne sais pas
quelle valeur donnera de bons résultats. À expérimenter.

Bien sûr, ffmpeg a pas mal d'autres options, qu'on pourra rajouter au
fur et à mesure qu'on les comprend, pour améliorer la qualité de la
vidéo à taille de fichier constante.


Parce que la page de man de ffmpeg, entre ces histoires de codecs et de
formats...


Si tu as des problèmes avec ffmpeg, tu peux tenter AviDemux, qui fait
à peu près la même chose en GUI.

1 2