Sự khác biệt và tương đồng giữa ffmpeg, libav và avconv là gì?


246

Khi tôi chạy ffmpegtrên Ubuntu, nó hiển thị:

$ 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).

Hoặc nó hiển thị (tùy thuộc vào phiên bản 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.

Tôi tìm thấy avconv trên http://libav.org . Tôi chỉ bối rối bởi họ.


1
Điều này ngụ ý rằng bạn đang đưa ra các đối số dòng lệnh sai.
Dipan Mehta

18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
tại sao

1
Bạn đang cố làm gì vậy? ffmpeglà thư viện chủ yếu và ffmpegdòng lệnh chính là nhiều hơn để thể hiện các tính năng của nó (mặc dù nó không quan trọng mà bạn sử dụng nếu nó giúp). Nếu bạn chỉ muốn sử dụng như một lệnh, có nhiều ứng dụng sử dụng ffmpeg để làm những gì bạn muốn làm.
Dipan Mehta

19
Có một lời giải thích hữu ích về toàn bộ thỏa thuận tại blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic

4
Tôi không thể cho bạn biết tất cả sự khác biệt, nhưng: avconv -ss 00:01:42 -t 00:00:32 -i sourcefilename -acodec sao chép targetfilename không hoạt động và ffmpeg -ss 00:01:42 -t 00:00 : 32 -i sourcefilename -acodec copyfilename không hoạt động như mong đợi mặc dù các tài liệu

Câu trả lời:


472

Tin nhắn khó hiểu

Những thông điệp này khá sai lệch và dễ hiểu là một nguồn gây nhầm lẫn. Các phiên bản Ubuntu cũ hơn đã sử dụng Libav, một nhánh của dự án FFmpeg. FFmpeg đã trở lại trong Ubuntu 15.04 "Verv Vervet".

Cái ngã ba về cơ bản là kết quả không thể hòa hợp của các tính cách và phong cách phát triển mâu thuẫn trong cộng đồng FFmpeg. Điều đáng chú ý là bộ duy trì cho Debian / Ubuntu đã chuyển từ FFmpeg sang Libav theo cách riêng của mình do có liên quan đến ngã ba Libav.

Người thật ffmpegvà người giả

Trong một thời gian, cả Libav và FFmpeg đều phát triển phiên bản riêng của họ ffmpeg.

Libav sau đó đổi tên bizarro của họ ffmpegđể avconvtạo khoảng cách với dự án FFmpeg. Trong giai đoạn chuyển tiếp, thông báo "không được phát triển nữa" được hiển thị để báo cho người dùng bắt đầu sử dụng avconvthay vì phiên bản giả mạo của họ ffmpeg. Điều này khiến người dùng bối rối khi nghĩ rằng FFmpeg (dự án) đã chết, điều đó không đúng. Một lựa chọn từ ngữ tồi, nhưng tôi không thể tưởng tượng Libav không mong đợi phản hồi như vậy của người dùng nói chung.

Thông báo này đã bị xóa ngược dòng khi "" giả mạo ffmpegcuối cùng đã bị xóa khỏi nguồn Libav, nhưng, tùy thuộc vào phiên bản của bạn, nó vẫn có thể hiển thị trong Ubuntu vì nguồn Libav mà Ubuntu sử dụng là từ giai đoạn chuyển tiếp ffmpeg sang avconv.

Vào tháng 6 năm 2012, tin nhắn đã được gửi lại cho gói libav - 4:0.8.3-0ubuntu0.12.04.1. Thật không may, thông báo "không dùng nữa" đã gây thêm nhầm lẫn cho người dùng.

Bắt đầu với Ubuntu 15.04 "Vivid vervet", FFmpeg của ffmpegtrở lại trong kho một lần nữa.

libav vs Libav

Để làm phức tạp thêm vấn đề, Libav đã chọn một cái tên được FFmpeg sử dụng trong lịch sử để chỉ các thư viện của nó (libavcodec, libavformat, v.v.). Ví dụ , danh sách gửi thư của người dùng libav , cho các câu hỏi và thảo luận về việc sử dụng các thư viện FFmpeg, không liên quan đến dự án Libav.

Làm thế nào để nói sự khác biệt

Nếu bạn đang sử dụng avconvthì bạn đang sử dụng Libav. Nếu bạn đang sử dụng, ffmpegbạn có thể sử dụng FFmpeg hoặc Libav. Tham khảo dòng đầu tiên trong đầu ra giao diện điều khiển để biết sự khác biệt: thông báo bản quyền sẽ đề cập đến FFmpeg hoặc Libav.

Thứ hai, các sơ đồ đánh số phiên bản khác nhau. Mỗi thư viện FFmpeg hoặc Libav chứa một version.htiêu đề hiển thị số phiên bản. FFmpeg sẽ kết thúc bằng ba chữ số, chẳng hạn như 57,67. 100 và Libav sẽ kết thúc bằng một chữ số, chẳng hạn như 57,67. 0 . Bạn cũng có thể xem số phiên bản thư viện bằng cách chạy ffmpeghoặc avconvxem đầu ra của bàn điều khiển.

Nếu bạn muốn sử dụng thực sự ffmpeg

Ubuntu 15.04 "Verv Vervet" hoặc mới hơn

Cái thực ffmpegcó trong kho lưu trữ, vì vậy bạn có thể cài đặt nó với:

apt-get install ffmpeg

Đối với các phiên bản Ubuntu cũ hơn

Lựa chọn của bạn là:

Các phương thức này không xâm phạm, có thể đảo ngược và sẽ không can thiệp vào hệ thống hoặc bất kỳ gói kho lưu trữ nào.

Một tùy chọn khác có thể là nâng cấp lên Ubuntu 15.04 "Verv Vervet" hoặc mới hơn và chỉ sử dụng ffmpegtừ kho lưu trữ.

Cũng thấy

Đối với một bài viết blog thú vị về tình huống này, cũng như một cuộc thảo luận về sự khác biệt kỹ thuật chính giữa các dự án, xem tình huống FFmpeg / Libav .


89
có vẻ như đó là một vấn đề cá nhân
mirza

1
Nếu ngay cả sau khi cài đặt ffmpeg thực, bạn không thể làm cho nó hoạt động. Bạn nên xóa ffmpeg mặc định được gửi cùng với ubfox dưới dạng libav-tools, xem: askubfox.com/questions/162740/how-do-i-uninstall-ffmpeg .
dùng568109

@ user568109 Nó phụ thuộc vào cách bạn cài đặt ffmpeg. Xem Cách biên dịch FFmpeg trên Ubuntu, Debian hoặc Mint hoặc chỉ sử dụng bản dựng Linuxffmpeg . Một trong hai phương pháp này sẽ hoạt động nếu gói kho lưu trữ cũng được cài đặt.
llogan

1
Tôi đã xây dựng ffmpeg nhưng khi chạy ffmpeg từ thiết bị đầu cuối, một mặc định được vận chuyển đang chạy và thực hiện apt-get remove ffmpeg đã không xóa nó. Vì vậy, tôi đã để lại một tin nhắn cho những người mắc kẹt với vấn đề này, chỉ để xóa sự nhầm lẫn. Nó được vận chuyển như libav-tools.
dùng568109

Có vẻ như một số hệ thống "nhãn hiệu" là cần thiết trong cộng đồng nguồn mở để tránh những tình huống này !!!
rkachach
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.