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 Prochaine révision Les deux révisions suivantes | ||
ffmpeg [Le 03/01/2018, 14:22] bcag2 [Effectuer une capture vidéo (screencast) de l'écran] n° de session |
ffmpeg [Le 16/12/2018, 09:59] christophe c [Exemples de conversions] qualité maximum |
||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
**FFmpeg** est une application de lecture et encodage de vidéo. Très puissante comme son alter ego [[Mencoder]], il assure en [[;commande_shell|ligne de commande]] la possibilité de convertir les fichiers vidéo d'un format à un autre, dont le **mts** et m2ts. | **FFmpeg** est une application de lecture et encodage de vidéo. Très puissante comme son alter ego [[Mencoder]], il assure en [[;commande_shell|ligne de commande]] la possibilité de convertir les fichiers vidéo d'un format à un autre, dont le **mts** et m2ts. | ||
- | <note>Pour la [[:versions|version d'Ubuntu]] [[:trusty|Trusty 14.04]], **FFmpeg** a été remplacé par son [[wpfr>fork]] [[:avconv|avconv]]. **FFmpeg** a cependant été réintégré depuis la version [[:xenial|Ubuntu 16.04]] si bien que **FFmpeg** et **avconv** sont désormais deux applications à part entière.</note> | + | <note importante>Pour la [[:versions|version d'Ubuntu]] [[:trusty|14.04]], **FFmpeg** a été remplacé par son [[wpfr>fork]] [[:avconv|avconv]]. **FFmpeg** a cependant été réintégré depuis la version [[:xenial|Ubuntu 16.04]] si bien que **FFmpeg** et **avconv** sont désormais deux applications à part entière.</note> |
===== Utilisation graphique ===== | ===== Utilisation graphique ===== | ||
Ligne 27: | Ligne 27: | ||
* [[http://sourceforge.net/projects/outreel/files/|Outreel]] - Une autre interface graphique pour FFMpeg. | * [[http://sourceforge.net/projects/outreel/files/|Outreel]] - Une autre interface graphique pour FFMpeg. | ||
- | =====Pré-requis===== | ||
- | * Disposer des [[:sudo|droits d'administration]]; | ||
- | * Disposer d'une connexion à Internet configurée et activée. | ||
===== Installation ===== | ===== Installation ===== | ||
==== Via les dépôts officiels==== | ==== Via les dépôts officiels==== | ||
- | <note important>__[[:trusty|Particularité pour Ubuntu Trusty 14.04]]:__\\ | + | |
- | **FFmpeg** n'est pas disponible dans les [[:depots|dépôts officiels]] pour [[:trusty|Trusty 14.04]]. Il est remplacé par son [[wpfr>fork]] [[:avconv]] (présent dans le paquet **libav-tools**). Si vous souhaitez utiliser **FFmpeg** à la place de [[:avconv]] il est possible de l'installer [[#Via un PPA pour Trusty 14.04 uniquement|depuis un PPA]]. | + | |
- | </note> | + | |
[[:tutoriel:comment_installer_un_paquet|Installer le paquet]] **[[apt>ffmpeg|ffmpeg]]** | [[:tutoriel:comment_installer_un_paquet|Installer le paquet]] **[[apt>ffmpeg|ffmpeg]]** | ||
- | __Note__: \\ FIXME : N'est plus d'actualité, mpeg4 est maintenant pris en charge et la désinstallation des paquets ci-après provoquera la désinstallation des éventuelles applications vidéos utilisant l'encodeur. \\ <del>les packages par défaut ne contiennent pas les codecs les plus classiques comme "mpeg4", pour cela il faut [[:tutoriel:comment_installer_un_paquet|installer spécifiquement]] **[[apt>libavcodec54,libavdevice53,libavformat54,libavutil52,libpostproc52,libswscale2,ffmpeg|libavcodec54 libavdevice53 libavformat54 libavutil52 libpostproc52 libswscale2 ffmpeg]]**</del> | + | ====Via un PPA pour Ubuntu 14.04 uniquement==== |
- | + | ||
- | ====Via un PPA pour Trusty 14.04 uniquement==== | + | |
- | <note important>Les [[:PPA|dépôts PPA]] sont des [[:dépôts]] non-officiels et installer un paquet hors des [[:dépôts]] officiels peut présenter un risque d'instabilité pour votre système. </note> | + | |
Pour utiliser **FFmpeg** sous [[:trusty|Ubuntu Trusty 14.04]] : | Pour utiliser **FFmpeg** sous [[:trusty|Ubuntu Trusty 14.04]] : | ||
Ligne 49: | Ligne 41: | ||
- [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>ffmpeg]]**. | - [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>ffmpeg]]**. | ||
- :!: __Attention__: Le [[:PPA]] **mc3man/trusty-media** contient de très nombreux autres paquets médias de versions supérieures. Si vous ne souhaitez pas de mise à jour vers des versions supérieures de ses paquets lors de la prochaine mise à jour de votre système, [[:ppa#suppression_d_un_ppa|supprimer ce PPA]] de vos sources de logiciels. | - :!: __Attention__: Le [[:PPA]] **mc3man/trusty-media** contient de très nombreux autres paquets médias de versions supérieures. Si vous ne souhaitez pas de mise à jour vers des versions supérieures de ses paquets lors de la prochaine mise à jour de votre système, [[:ppa#suppression_d_un_ppa|supprimer ce PPA]] de vos sources de logiciels. | ||
- | Ou bien dans un [[:terminal]], saisir les [[:commande_shell|commandes]] suivantes : <code>sudo add-apt-repository ppa:mc3man/trusty-media | ||
- | sudo apt-get update | ||
- | sudo apt-get install ffmpeg</code> | ||
- | Puis si vous souhaitez retirer le [[:PPA]] **mc3man/trusty-media** de vos sources de logiciels: <code>sudo add-apt-repository -r ppa:mc3man/trusty-media</code> | ||
À noter que le binaire fourni par ce PPA (depuis la version 2.7.8) prend en compte les filtres x265 et fdk_aac (codec AAC de Fraunhofer). | À noter que le binaire fourni par ce PPA (depuis la version 2.7.8) prend en compte les filtres x265 et fdk_aac (codec AAC de Fraunhofer). | ||
- | ==== Par compilation ==== | ||
- | <note important> | ||
- | Cette méthode permet d'installer la toute dernière version de FFmpeg, mais celle-ci provenant du serveur [[git|Git]], elle est toujours en développement, ce qui signifie qu'elle peut se révéler instable. L'utilisation de cette version est donc à vos risques et périls.</note> | ||
- | |||
- | Il peut être intéressant de compiler FFmpeg afin de bénéficier des dernières optimisations et de manipuler des formats qui n'étaient pas encore supportés. Par exemple pour les vidéos haute définition encodées avec x264 qui demandent beaucoup moins de ressources dans les dernières versions. (Voir le [[http://ffmpeg.mplayerhq.hu/changelog.html|changelog]] de FFmpeg) | ||
- | Pour les détails de la compilation, rendez-vous à la page : [[tutoriel:comment_compiler_ffmpeg|Comment compiler FFmpeg]]\\ | ||
- | |||
- | |||
- | ==== FFmpeg et le support AAC ==== | ||
- | Référez-vous à la méthode par compilation : [[tutoriel:comment_compiler_ffmpeg|Comment compiler FFmpeg]]\\ | ||
- | Et voilà, la version compilée devrait permettre de compresser vos vidéo pour la PSP. | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
Ligne 402: | Ligne 379: | ||
<code>avconv -i 'fichier source' -threads 0 -vcodec libvpx -b 1500k -minrate 0 -maxrate 9000k -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -an -pass 1 -passlogfile pass1.fpf pass1.webm | <code>avconv -i 'fichier source' -threads 0 -vcodec libvpx -b 1500k -minrate 0 -maxrate 9000k -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -an -pass 1 -passlogfile pass1.fpf pass1.webm | ||
avconv -i 'fichier source' -threads 0 -vcodec libvpx -b 1500k -minrate 0 -maxrate 9000k -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -acodec libvorbis -ab 192k -pass 2 -passlogfile pass1.fpf "fichier final.webm"</code> | avconv -i 'fichier source' -threads 0 -vcodec libvpx -b 1500k -minrate 0 -maxrate 9000k -rc_lookahead 16 -keyint_min 0 -g 360 -skip_threshold 0 -level 116 -qmin 1 -qmax 51 -acodec libvorbis -ab 192k -pass 2 -passlogfile pass1.fpf "fichier final.webm"</code> | ||
+ | |||
+ | ===Convertir un fichier webm en .mp4=== | ||
+ | Le format [[webm|webm]] est largement utilisé sur internet, en particulier pour youtube. Vous pouvez télécharger ces vidéos de différentes façons, par exemple via [[youtube-dl|youtube-dl]]. Pour voir ces vidéos sur une télévision, il vous faudra sans doute modifier le format (il n'est généralement pas reconnu). Pour passer la vidéo webm en .mp4 : | ||
+ | |||
+ | <code>ffmpeg -i ma-video.webm ma-video.mp4</code> | ||
+ | La qualité de sortie est alors en qualité moyenne. | ||
+ | |||
+ | Vous pouvez spécifier une autre qualité de sortie avec l'option **-crf**. "0" donne la meilleur qualité (et le plus gros fichier), "51" donne la moins bonne qualité (et le plus petit fichier). Pour une qualité maximum (mais le fichier peut-être 10 fois plus gros que le webm initial !) : | ||
+ | |||
+ | <code>ffmpeg -i ma-video.webm -crf 0 ma-video.mp4</code> | ||
=== Convertir une vidéo en x264 en qualité constante === | === Convertir une vidéo en x264 en qualité constante === | ||
Ligne 518: | Ligne 505: | ||
<code>ffmpeg -i input.mkv -ss 00:01:00.00 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.00 output.gif</code> | <code>ffmpeg -i input.mkv -ss 00:01:00.00 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.00 output.gif</code> | ||
Permet de convertir 10 secondes de vidéo à partir de 1 minute. | Permet de convertir 10 secondes de vidéo à partir de 1 minute. | ||
+ | |||
+ | === Réaliser une rotation d'une vidéo === | ||
+ | Une vidéo pourtant prise en "paysage" se visualisait en mode "portrait". Pour réaliser la rotation, on utilise l'option //filtergraph// (-vf) avec //transpose//.\\ | ||
+ | Le chiffre passé avec transpose correspond à: | ||
+ | ^chiffre ^ filtrage appliqué ^ désignation en anglais ^ | ||
+ | |0|-90° (sens anti-horaire) puis symétrie verticale (par défaut)|90CounterClockwise and Vertical Flip (default)| | ||
+ | |1|90° (sens horaire) |90Clockwise| | ||
+ | |2|-90° (sens anti-horaire)|90CounterCLockwise| | ||
+ | |3|90° (sens horaire) puis symétrie verticale|90Clockwise and Vertical Flip (default)| | ||
+ | Voici la commande pour -90°: | ||
+ | <code>ffmpeg -i vidéo_originale.mp4 -vf "transpose=2" vidéo_correctement_orienté.mp4</code> | ||
+ | du fait du codec audio utilisé, //aac//, une erreur est survenu en précisant d'ajouter //-strict -2//, ce qui donne: | ||
+ | <code>ffmpeg -i vidéo_originale.mp4 -strict -2 -vf "transpose=2" vidéo_correctement_orienté.mp4</code> | ||
==== Effectuer une capture vidéo (screencast) de l'écran ==== | ==== Effectuer une capture vidéo (screencast) de l'écran ==== | ||
Ligne 527: | Ligne 527: | ||
//-r// définit le nombre d'images pas seconde : 12.5, 25, 30 sont les plus courants, pour un //screencast// de tutoriel, on peut descendre à 5, mais du fait de la compression, l'économie sur la taille mémoire n'est pas proportionnel.\\ | //-r// définit le nombre d'images pas seconde : 12.5, 25, 30 sont les plus courants, pour un //screencast// de tutoriel, on peut descendre à 5, mais du fait de la compression, l'économie sur la taille mémoire n'est pas proportionnel.\\ | ||
//-i:0:0// correspond au nombre du serveur X11, [[http://ffmpeg.org/ffmpeg.html#X11-grabbing|peut permettre de définir un offset]] auquel cas, il faut réduire la taille d'autant avec l'option -s\\ | //-i:0:0// correspond au nombre du serveur X11, [[http://ffmpeg.org/ffmpeg.html#X11-grabbing|peut permettre de définir un offset]] auquel cas, il faut réduire la taille d'autant avec l'option -s\\ | ||
- | <note warning>Si une autre session est active (ou l'a été) il se peut que ça ne fonctionne pas avec -i:0:0, en effet, le premier nombre correspond au numéro qui s'affiche entre parenthèse dans ce que retourne la commande //who// et qui correspond à l'ordre d'ouverture de session (:0 pour le premier connecté, :1 pour le deuxième …)</note> | + | <note warning>Si une autre session est active (ou l'a été) il se peut que ça ne fonctionne pas avec -i:0:0, en effet, le premier nombre correspond au numéro de session qui s'affiche entre parenthèse dans ce que retourne la commande //who// et qui correspond à l'ordre d'ouverture de session (:0 pour le premier connecté, :1 pour le deuxième …). Si c'est le cas, vous pouvez utiliser la commande ci-dessous qui ajuste le numéro de session: |
+ | <code>ffmpeg -f x11grab -s 1920x1080 -r 25 -i $(who | awk '{print substr($5,2,2)}').0 screencast.mp4</code></note> | ||
Pour une capture d'écran Hi-Fi, **son et vidéo** sans perte, avec **Pulse Audio** comme serveur de son : | Pour une capture d'écran Hi-Fi, **son et vidéo** sans perte, avec **Pulse Audio** comme serveur de son : | ||
<code>ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s 1024x768 -i :0.0 -acodec flac -vcodec libx264 -preset ultrafast -qn 0 output.mkv | <code>ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s 1024x768 -i :0.0 -acodec flac -vcodec libx264 -preset ultrafast -qn 0 output.mkv |