web-dev-qa-db-fra.com

Pourquoi devrais-je choisir Libav plutôt que FFmpeg, ou y a-t-il une différence?

D'après ce que j'ai vu, il me semble que la variable avconv de Libav est supposée devenir le successeur de ffmpeg - est-ce exact?

Si c'est vrai, pourquoi est-ce le cas? Qu'est-ce que libav fait exactement mieux et pourquoi voudrais-je le choisir plutôt que ffmpeg?

Je suis arrivé à ce "problème" lors de l'installation d'Ubuntu 12.04.1 LTS dans un VM et lorsque j'ai installé ffmpeg, un message indiquant que mit ffmpeg était obsolète et que je pensais pour la première fois "wtf?".

Si j'utilise avconvEst-il possible de migrer mes scripts en fonction de ffmpeg plus ou moins facile à libav? Je l'utilise principalement pour l'écriture de métadonnées et la conversion audio (wav, flac, vorbis, mp3, aac).

68
burzum

Tout d’abord, voyez Qui peut me dire la différence et la relation entre ffmpeg, libav et avconv . Une grande partie de la confusion est le résultat de:

  1. Les utilisateurs ne différencient pas les projets, FFmpeg et libav, et leurs outils de ligne de commande respectifs, ffmpeg et avconv.
  2. Les messages mal formulés que les utilisateurs reçoivent lorsqu'ils essaient d'utiliser la variable ffmpeg de libav.

FFmpeg vs ffmpeg et libav vs avconv

  • FFmpeg est le nom du projet. ffmpeg est le nom de leur outil de ligne de commande.
  • libav est le nom du projet. avconv est le nom de leur outil de ligne de commande. Pendant un court laps de temps, libav a aussi eu une ffmpeg.

Les utilisateurs pensent souvent "projet" lorsque "outil" est en cours de discussion, ce qui conduit à ...

Un message mal rédigé

Donc, comme nous l’avons appris de Qui peut me dire ... link, quand libav a lancé FFmpeg, ils ont aussi fourni temporairement leur version de ffmpeg. En tant que membre de libav, le responsable de ffmpeg dans Debian et Ubuntu a ensuite décidé de changer de distribution pour utiliser libav. Du point de vue de libav, c’était leur meilleur choix: forcer une grande communauté d’utilisateurs à utiliser le fork.

Ubuntu a basculé pendant la période de transition lorsque libav a fourni à la fois sa version de ffmpeg et son outil renommé avconv. Lorsque les utilisateurs ont tenté d'utiliser la variable ffmpeg de libav, ils ont reçu le message suivant:

This program is not developed anymore and is only provided for compatibility.  
Use avconv instead (see Changelog for the list of incompatible changes).

Dans ce cas, le "ffmpeg" mentionné dans le message était la version temporaire de libav qui a ensuite été supprimée (de même que le message). Rappelez-vous la différence entre FFmpeg et ffmpeg? Bien sûr, ce message a profondément dérouté de nombreux utilisateurs qui, de manière compréhensible, ne faisaient pas la distinction entre projet et outil. en particulier les utilisateurs d’Ubuntu qui ne savaient pas que leur distribution faisait un switcharoo ou ceux qui n’ont jamais entendu parler de libav. Je ne sais pas si libav voulait que les utilisateurs pensent cela, mais ils ont probablement apprécié cet effet secondaire.

Certains utilisateurs d’Ubuntu ont trouvé le message trop trompeur. Il a ensuite été remplacé par:

***THIS PROGRAM IS DEPRECATED***
This program is not developed anymore and is only provided for compatibility.  
Use avconv instead (see Changelog for the list of incompatible changes).

Une petite amélioration à mon avis, mais j'ai l'impression que ce n'est pas assez clair.

Lequel dois-je utiliser?

Personne ne peut vous dire lequel utiliser. La principale différence pour les utilisateurs est que FFmpeg fusionne de nombreux commits de libav, mais ce n’est pas aussi réciproque puisque libav semble prétendre que FFmpeg n’existe pas et qu’il n’y a que de temps à autre des choix sélectifs de FFmpeg.

Pour l'utilisateur occasionnel, il ne devrait pas y avoir d'énormes différences. Pour les utilisateurs Ubuntu souhaitant utiliser FFmpeg, vous pouvez le compiler en suivant Comment compiler FFmpeg et x264 , utilisez FFmpeg PPA de Jon Severinsson , ou obtenez un simple binaire statique lié au téléchargement de FFmpeg page.

Pour plus d'informations, voir La situation FFmpeg/Libav .

93
llogan

Mise à jour (début 2016)

  • Les chances restent en faveur de ffmpeg. La plupart des distributions sont passées/reviennent à ffmpeg ( Gentoo , Debian )
  • Un avantage pratique de ffmpeg est la large disponibilité des fichiers binaires pour de nombreuses plates-formes. Googler pour des bibliothèques statiques/des bibliothèques dynamiques/des fichiers binaires donne de bons résultats pour Linux, Mac, Windows, iOS et Android pour ffmpeg, alors que je ne pouvais trouver que les versions de Linux et Windows pour Libav. Cela pourrait être un point important si vous avez peu d’expérience avec C/makefiles.

La situation actuelle (mi-2015)

Il semble préférable de s'en tenir à FFmpeg. La situation est plutôt désordonnée et laide. Je viens de commencer à lire sur la fourche il y a quelques jours. En ignorant tout le drame, voici ce qui semble être des faits:

  • FFmpeg incorpore les ensembles de modifications de libav, alors que libav est réticent à le faire (voir debian debat )
  • Chrome utilise ffmpeg et Google a déployé des efforts considérables pour le sécuriser. libav intègre également ces changements, mais à un rythme plus lent ( google blog post )
  • FFmpeg tente de conserver autant de codecs que possible, tandis que libav en supprimait quelques-uns ( libav mailing list , post d'un libav dev )
  • La communauté FFmpeg est plus grande que libav, et le développeur le plus dédié (michael niedermayer) reste bloqué avec FFmpeg ( commit stats )
  • Les mainteneurs ubuntu/debian de FFmpeg faisaient partie de la fourchette libav. ils ont ajouté des messages de désapprobation à certains outils de ligne de commande, indiquant que ffmpeg est obsolète. cela a causé beaucoup de confusion. debian et ubuntu retournent tous deux à ffmpeg.
30
kritzikratzi

Quand vous allez ici vous verrez que la mise à jour la plus récente date de septembre 2012 (il y a quelques mois).

Il semble que this indique que cela est spécifique à Ubuntu et Debian pour le moment.

Il y a quelque temps, ffmpeg s'est scindé en deux fourches sous le nom de ffmpeg et de libav.

Debian suit le fork de libav dans sa distribution et dans un prochain envoi, le fichier binaire/usr/bin/ffmpeg sera remplacé par/usr/bin/avconv.

Autant que je sache, il n'est pas nécessaire de changer immédiatement de logiciel, mais Winff devrait être mis à niveau pour permettre l'un ou l'autre programme binaire (du point de vue de Debian, avec une préférence pour avconv). Je sais que vous pouvez définir l'emplacement du fichier binaire dans les préférences, mais je pense qu'avec l'emplacement défini, Winff devrait pouvoir trouver le fichier binaire approprié.

Je pense qu'à l'avenir, Windows et d'autres distributions pourraient également être touchées par ce problème.

Pour répondre à votre question à savoir si oui ou non c'est exactement la même chose:

J'ai implémenté les vérifications du bon binaire dans ma caisse locale, mais en lisant 1 , je constate qu'il existe des incohérences entre avconv et ffmpeg. Ce problème est plus important, car le fichier de préconfiguration doit être ajusté et la manière dont nous créons la ligne de commande doit être modifiée. Les options qui fonctionnent sur le fichier d’entrée doivent aller AVANT le fichier d’entrée "-i".

Veuillez noter que cela peut être spécifique à la version Windows. Cela a été posté concernant la version Linux:

L'outil de conversion audio/vidéo FFmpeg est maintenant connu sous le nom de AVConv (un meilleur nom à mon avis). Donc, l'outil de ligne de commande "ffmpeg" est obsolète et "avconv" doit être utilisé. Pour autant que je sache, tous les paramètres sont restés les mêmes, mais des investigations supplémentaires doivent être menées. Certaines modifications doivent être effectuées dans le CIS.

Les tâches:

Installez AVConv sur les machines qui exécutent CIS. Habituellement, avconv devrait paraître mettre à jour ffmpeg (cela fonctionnait sous Ubuntu; non testé pour Debian). Remplacez "ffmpeg" par "avconv" dans cis/api/ffmpeg.py, classe FFmpegTranscoder, champ prog_bin, qui représente l'exécutable de l'outil de conversion. Noms de fichiers de refactor, noms de classes, noms de méthodes, noms de variables, etc., contenant "FFmpeg" ou "ffmpeg", de sorte qu'ils contiennent AVConv. Un IDE comme Eclipse pourrait le faire automatiquement. Tester! Si des problèmes sont constatés, déboguez!

9
Everett