Quelles sont les différences et les similitudes entre ffmpeg, libav et avconv?

246

Quand je cours ffmpegsur Ubuntu, cela montre:

$ ffmpeg 
ffmpeg version v0.8, Copyright (c) 2000-2011 the Libav developers
  built on Feb 28 2012 13:27:36 with gcc 4.6.1
This program is not developed anymore and is only provided for compatibility. Use avconv instead (see Changelog for the list of incompatible changes).

Ou cela montre (selon la version d'Ubuntu):

$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
  built on Jan 24 2013 14:49:20 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

J'ai trouvé avconv sur http://libav.org . Je suis juste perplexe devant eux.

Pourquoi
la source
1
Cela implique que vous donnez des arguments de ligne de commande incorrects.
Dipan Mehta
18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
pourquoi le
1
Qu'essayez-vous de faire? ffmpegest principalement une bibliothèque et la ffmpegligne de commande principale est plus pour la démonstration de ses fonctionnalités (même si cela n'a pas d'importance si vous aidez). Si vous souhaitez utiliser uniquement en tant que commande, il existe de nombreuses applications qui utilisent ffmpeg pour faire ce que vous voulez faire.
Dipan Mehta
19
Il y a une explication utile de l'ensemble de l'accord sur blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic
4
Je ne peux pas vous dire toutes les différences, mais: avconv -ss 00:01:42 -t 00:00:32 -i sourcefilename -acodec copie targetfilename ne fonctionne pas, et ffmpeg -ss 00:01:42 -t 00:00 : 32 -i sourcefilename -acodec copy targetfilename fonctionne comme prévu même si les documentations correspondent

Réponses:

473

Messages déroutants

Ces messages sont plutôt trompeurs et naturellement une source de confusion. Les anciennes versions d'Ubuntu utilisaient Libav qui est un fork du projet FFmpeg. FFmpeg est revenu dans Ubuntu 15.04 "Vivid Vervet".

La fourchette était essentiellement un résultat non amiable de personnalités et de styles de développement contradictoires au sein de la communauté FFmpeg. Il convient de noter que le responsable de Debian / Ubuntu est passé de FFmpeg à Libav de son propre gré en raison de son implication dans le fork Libav.

Le vrai ffmpegcontre le faux

Pendant un certain temps, Libav et FFmpeg ont développé séparément leur propre version de ffmpeg.

Libav a ensuite renommé leur bizarro ffmpegpour avconvse distancier du projet FFmpeg. Pendant la période de transition, le message "plus développé" a été affiché pour indiquer aux utilisateurs de commencer à utiliser à la avconvplace de leur version contrefaite de ffmpeg. Cela a incité les utilisateurs à penser que FFmpeg (le projet) était mort, ce qui n'est pas vrai. Un mauvais choix de mots, mais je ne peux pas imaginer que Libav n'attende pas une telle réponse de la part des utilisateurs généraux.

Ce message a été supprimé en amont lorsque le faux " ffmpeg" a finalement été supprimé de la source Libav, mais, selon votre version, il peut toujours apparaître dans Ubuntu car la source Libav qu'Ubuntu utilise provient de la période de transition ffmpeg-à-avconv.

En juin 2012, le message a été reformulé pour le package libav - 4:0.8.3-0ubuntu0.12.04.1. Malheureusement, le nouveau message "obsolète" a provoqué une confusion supplémentaire des utilisateurs.

À partir d'Ubuntu 15.04 "Vivid Vervet", FFmpeg ffmpegest de retour dans les référentiels .

libav vs Libav

Pour compliquer encore les choses, Libav a choisi un nom qui était historiquement utilisé par FFmpeg pour faire référence à ses bibliothèques (libavcodec, libavformat, etc.). Par exemple, la liste de diffusion libav-user , pour les questions et les discussions sur l'utilisation des bibliothèques FFmpeg, n'est pas liée au projet Libav.

Comment faire la différence

Si vous utilisez, avconvvous utilisez Libav. Si vous utilisez, ffmpegvous pouvez utiliser FFmpeg ou Libav. Reportez-vous à la première ligne de la sortie de la console pour faire la différence: l'avis de droit d'auteur mentionnera FFmpeg ou Libav.

Deuxièmement, les schémas de numérotation des versions diffèrent. Chacune des bibliothèques FFmpeg ou Libav contient un en- version.htête qui affiche un numéro de version. FFmpeg se terminera sur trois chiffres, comme 57,67. 100 et Libav se terminera par un chiffre tel que 57,67. 0 . Vous pouvez également afficher les numéros de version de la bibliothèque en exécutant ffmpegou avconvet en affichant la sortie de la console.

Si vous voulez utiliser le vrai ffmpeg

Ubuntu 15.04 "Vivid Vervet" ou plus récent

Le réel ffmpegest dans le référentiel, vous pouvez donc l'installer avec:

apt-get install ffmpeg

Pour les anciennes versions d'Ubuntu

Vos options sont:

Ces méthodes sont non intrusives, réversibles et n'interfèrent pas avec le système ou les packages de référentiel.

Une autre option possible consiste à mettre à niveau vers Ubuntu 15.04 "Vivid Vervet" ou une version plus récente et à utiliser simplement à ffmpegpartir du référentiel.

Regarde aussi

Pour un article de blog intéressant sur la situation, ainsi qu'une discussion sur les principales différences techniques entre les projets, voir La situation FFmpeg / Libav .

llogan
la source
89
ressemble à un problème personnel
mirza
1
Si même après avoir installé le vrai ffmpeg, vous ne pouvez pas le faire fonctionner. Vous devez supprimer ffmpeg par défaut livré avec ubuntu en tant que libav-tools, voir: askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg .
user568109
@ user568109 Cela dépend de la façon dont vous avez installé ffmpeg. Voir Comment compiler FFmpeg sur Ubuntu, Debian ou Mint ou simplement utiliser une version Linux deffmpeg . L'une ou l'autre de ces méthodes devrait fonctionner si le package de référentiel est également installé.
llogan
1
J'ai créé ffmpeg mais lors de l'exécution de ffmpeg à partir du terminal, celui livré par défaut était en cours d'exécution et faire apt-get remove ffmpeg ne l'a pas supprimé. J'ai donc laissé un message à ceux qui sont coincés avec ce problème, juste pour effacer la confusion. Il est livré sous libav-tools.
user568109
Il semble qu'un système de "marque" soit nécessaire dans la communauté open-source pour éviter ces situations !!!
rkachach