J'utilise des choses comme ça:
avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm
Où:
-f x11grab
- applique la capture d'écran au "format" de l'entrée.
-s 1024x768
est la résolution du fichier d'entrée (alias zone de capture). Par exemple, est égal à la résolution du bureau. Si elle est plus petite que cela, la zone d'enregistrement serait à gauche et en haut. J'ai utilisé une zone d'enregistrement 1024x768 dans cet exemple.
-r 24
- framerate. Fondamentalement, 23 à 30 FPS utilisés par de vrais films pour donner une image d'enregistrement fluide. Cependant, pour la capture d'écran, il pourrait être correct de réduire cela pour obtenir une meilleure image à des débits inférieurs. J'ai utilisé 24 pour faire une capture d'écran de jeu.
-i 0:0
est un indice pour utiliser l'affichage 0: 0 comme source (le périphérique est en notation xorg). Si vous n'avez qu'un seul moniteur et une configuration Xorg par défaut, 0: 0 sera correct la plupart du temps.
-deadline realtime
- est un indice pour libvpx. Nous voulons une capture en direct. Nous voulons des performances en temps réel. Libvpx fera donc de son mieux pour encoder VP8 en temps réel. Pour ce faire, il échange un peu la qualité contre la vitesse. À un débit donné, la qualité sera un peu pire qu'elle ne le serait en temps non réel. Mais la vitesse d'encodage monterait en flèche. Donc, sur mon matériel, il peut crunch 1024x768 @ 24FPS, des scènes intenses, sans laisser tomber aucune image (CPU puissant recommandé cependant). Dans cet exemple, je voulais une capture en direct de qualité décente à un bon FPS et une zone de capture assez grande. L'utilisation du processeur par le codec pourrait donc être un problème. C'est pourquoi cette indication était vraiment nécessaire pour de bons résultats.
-b 5000000
- débit binaire cible en bits / seconde. J'ai utilisé 5Mbits pour obtenir une image plus ou moins bonne de scènes assez intenses. Le codec essaiera de maintenir la vitesse de transmission moyenne de la vidéo proche de cette valeur. Plus cette valeur est faible, plus la qualité est mauvaise et le fichier plus petit. Vous pouvez expérimenter un peu pour savoir quel débit est bon pour des utilisations particulières. Les services de partage vidéo réduiraient la conversion vidéo en cas de dépassement. Si vous êtes sur le point d'utiliser votre propre serveur, c'est à vous de gérer le trafic. Si vous sous-estimez, la qualité de l'image sera mauvaise. N'hésitez pas à modifier la valeur pour vous faire une idée de ce qui vous convient le mieux. 5Mbits étaient destinés à une capture en direct plus ou moins agréable des scènes intenses lors de jeux où vous ne pouvez pas facilement voir que l'image est surcompressée. Pour capturer des applications fixes, vous aurez besoin de beaucoup moins que cela.
-minrate
200000 - est un débit binaire minimum autorisé pour le codec. En fonction de la nature de la chose que vous souhaitez capturer, vous pouvez parfois vouloir forcer le débit binaire minimum pour garder une image raisonnablement belle à tout prix. Parfois, l'heuristique du codec peut réduire le débit binaire bien en dessous des valeurs souhaitées, donnant une mauvaise image dans certaines scènes. Cette option permet de forcer le codec à conserver un débit binaire minimum même si le codec pense que la scène est simple et que le débit binaire pourrait être abandonné. Une valeur élevée de ce paramètre peut augmenter la taille du fichier en empêchant le codec d'utiliser des débits binaires inférieurs.
-maxrate 40000000
- Cette valeur contrôle le débit binaire maximal en rafale dans les scènes intenses. J'ai utilisé une valeur vraiment élevée pour permettre au codec d'aller bien au-dessus de la moyenne souhaitée s'il considère qu'une vitesse plus élevée est obligatoire pour conserver une qualité décente sur certaines scènes. Pour obtenir une belle image dans toutes les conditions, il est souhaitable de régler cette valeur suffisamment haut (40Mbits est une vitesse de type BlueRay et fera l'affaire). D'autre part, si vous êtes sur le point de le diffuser en utilisant votre propre serveur, vous devez réduire cette valeur au prix d'une certaine qualité d'image lors de scènes intenses. Sinon, le serveur pourrait ne pas gérer le débit de rafale souhaité, étant incapable de le fournir aux utilisateurs en temps réel. Ensuite, le joueur serait confronté à une sous-exécution du tampon (ce qui est agaçant). Les services de partage de vidéos prendront soin d'eux-mêmes et généralement convertiront la vidéo en baisse pour réduire les paramètres au détriment de la qualité de l'image.
recording-filename-000.webm
- est un nom de fichier de sortie. Si vous utilisez l'extension .webm, ffmpeg / avconv sont suffisamment intelligents pour comprendre que vous voulez WEBM. C'est SI simple - avconv devine le format souhaité à partir du nom de fichier. Les fichiers .WEBM sont donc WEBM à l'intérieur.
C'est tout - cette commande dirige l'enregistrement d'écran vers le fichier webm. Aucune conversion supplémentaire n'est nécessaire et devrait libvpx
être aussi rapide que possible. Il n'y a pas de son car il n'y a pas de spécification pour l'entrée du son. Cela peut ou non être ce que vous voulez. Pour le son, vous devez également spécifier la source d'entrée pour le flux sonore.
PS, cela peut sembler un peu trop compliqué, mais à la fin de la journée, vous pouvez comprendre qu'une seule taille ne convient pas à tous. Donc, pour obtenir une belle image dans toutes les situations, vous voudrez peut-être vraiment utiliser des poignées pour le codec et les ajuster. Ffmpeg vous offre toutes les poignées dont vous pourriez avoir besoin et bien plus que cela. C'est une arme lourde de conversion et d'encodage vidéo. Cet exemple est donc un bon point de départ pour ceux qui veulent faire des encodages plus ou moins avancés et est prêt à expérimenter un peu pour obtenir des résultats vraiment décents.