Tại sao tôi chọn Libav trên FFmpeg, hoặc thậm chí có sự khác biệt?


72

Từ những gì tôi thấy, có vẻ như Libav's avconvđược cho là sẽ trở thành người kế thừa ffmpeg- điều đó có đúng không?

Nếu đó là sự thật, tại sao lại như vậy? Chính xác thì libav đang làm gì tốt hơn và tại sao tôi lại muốn chọn nó qua ffmpeg?

Tôi đã gặp phải "vấn đề" này trong khi cài đặt Ubuntu 12.04.1 LTS trong máy ảo và khi tôi cài đặt ffmpeg, nó xuất hiện một thông báo cho biết ffmpeg không được chấp nhận và trước tiên tôi nghĩ "wtf?".

Nếu tôi sử dụng avconvTôi có thể di chuyển tập lệnh của mình tùy thuộc vào ffmpeg dễ dàng hơn hay ít hơn để libav không? Tôi chủ yếu sử dụng nó để ghi dữ liệu meta và thực hiện chuyển đổi âm thanh (wav, flac, vorbis, mp3, aac).


1
ffmpeg chắc chắn không lỗi thời, nó là giống tốt nhất cho những gì nó làm.
James Campbell

Câu trả lời:


94

Trước hết hãy xem Ai có thể cho tôi biết sự khác biệt và mối quan hệ giữa ffmpeg, libav và avconv . Phần lớn sự nhầm lẫn là kết quả của:

  1. Người dùng không phân biệt giữa các dự án, FFmpeg và libav và các công cụ dòng lệnh tương ứng của họ ffmpegavconv.
  2. Người dùng tin nhắn kém chữ nhận được khi họ cố gắng sử dụng libav ffmpeg.

FFmpeg vs ffmpegvà libav vsavconv

  • FFmpeg là tên dự án. ffmpeglà tên của công cụ dòng lệnh của họ.
  • libav là tên dự án. avconvlà tên của công cụ dòng lệnh của họ. Trong một thời gian ngắn libav cũng có một ffmpeg.

Người dùng thường nghĩ "dự án" khi "công cụ" đang được thảo luận dẫn đến ...

Một tin nhắn kém

Vì vậy, như chúng tôi đã học được từ liên kết Ai có thể cho tôi biết ... khi libav rẽ nhánh từ FFmpeg, họ cũng tạm thời cung cấp phiên bản của họ ffmpeg. Là thành viên của libav, người duy trì ffmpeg trong Debian và Ubuntu sau đó đã quyết định chuyển distro sang sử dụng libav. Từ quan điểm của libav, đây là động thái tốt nhất của họ: buộc một cộng đồng người dùng lớn sử dụng ngã ba.

Ubuntu chuyển đổi trong giai đoạn chuyển tiếp khi libav cung cấp cả phiên bản ffmpegvà công cụ đổi tên của họ avconv. Khi người dùng cố gắng sử dụng libav, ffmpeghọ nhận được thông báo sau:

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

Trong trường hợp này, "ffmpeg" được đề cập trong tin nhắn là phiên bản tạm thời của libav mà sau đó đã bị xóa (cũng như tin nhắn). Hãy nhớ sự khác biệt giữa FFmpeg và ffmpeg? Tất nhiên, thông điệp này hoàn toàn nhầm lẫn nhiều người dùng, những người dễ hiểu không tạo ra sự khác biệt giữa dự án và công cụ; đặc biệt là những người dùng Ubuntu không biết rằng bản phân phối của họ đã sử dụng một thiết bị chuyển mạch hoặc người dùng chưa bao giờ nghe nói về libav. Tôi không biết liệu libav có ý định người dùng nghĩ điều này không, nhưng có lẽ họ rất thích hiệu ứng phụ này.

Một số người dùng Ubuntu nghĩ rằng thông báo này quá sai lệch và sau đó được đổi thành:

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

Một cải tiến nhỏ trong quan điểm của tôi, nhưng tôi cảm thấy như thể nó không đủ rõ ràng.

Tôi sử dụng cái nào?

Không ai có thể cho bạn biết nên sử dụng cái nào. Sự khác biệt chính đối với người dùng là FFmpeg hợp nhất nhiều cam kết từ libav, nhưng nó không tương hỗ vì libav dường như giả vờ rằng FFmpeg không tồn tại và chỉ thỉnh thoảng chọn cherry từ FFmpeg.

Đối với người dùng thông thường, không nên có sự khác biệt lớn. Đối với người dùng Ubuntu muốn sử dụng FFmpeg, bạn có thể biên dịch nó bằng cách làm theo Cách biên dịch FFmpeg và x264 , sử dụng FFmpeg PPA của Jon Severinsson hoặc nhận một nhị phân tĩnh đơn giản được liên kết từ trang tải xuống FFmpeg .

Để biết thêm thông tin, xem tình huống FFmpeg / Libav .


27
Nó vượt quá một thông điệp xấu, nó hoàn toàn sai. FFmpeg hoàn toàn không ngừng phát triển, trên thực tế FFmpeg có cộng đồng lớn hơn nhiều so với LibAV ... các nhà bảo trì Ubuntu đã đưa ra thông điệp đó để lừa người dùng sử dụng LibAV khỏi niềm tin nhầm lẫn rằng FFmpeg đã chết. đó là ác ý nguyên chất 100%.
MarcusJ

1
avconv thậm chí không hỗ trợ LADSPA
Vassilis

5
@MarcusJ ... về mặt kỹ thuật, đó là những người bảo trì debian. Nhưng vâng, tôi đồng ý; thật là giả dối.
Wyatt8740

Bị bỏ rơi cho cụm từ "Một thông điệp kém chữ" trong trường hợp không có. Đó là một hành động sai trái có chủ ý.
Anwar

1
@Anwar Vâng, có vẻ như vậy. Đó là lý do tại sao tôi nói đó là "từ kém", nhưng tôi đoán đó là từ kém.
llogan

32

Cập nhật (đầu năm 2016)

  • Tỷ lệ cược ủng hộ ffmpeg. Hầu hết các bản phân phối đã chuyển trở lại / đang chuyển trở lại ffmpeg ( Gentoo , Debian )
  • Một lợi thế thực tế của ffmpeg là tính khả dụng của nhị phân cho nhiều nền tảng. Googling cho libs tĩnh / libs / nhị phân động mang lại kết quả tốt cho linux, mac, windows, ios và android cho ffmpeg, trong khi tôi chỉ có thể tìm thấy bản dựng linux và windows cho libav. Đây có thể là một điểm quan trọng nếu bạn có ít kinh nghiệm với C / makefiles.

Tình hình hiện tại (giữa năm 2015)

Nó có vẻ tốt hơn để gắn bó với FFmpeg. Toàn bộ tình hình khá lộn xộn và xấu xí. Tôi mới bắt đầu đọc lên ngã ba vài ngày trước. Bỏ qua tất cả các bộ phim, đây là những gì có vẻ là sự thật:

  • FFmpeg kết hợp các bộ thay đổi từ libav, trong khi libav không muốn làm như vậy (xem tranh luận về debian )
  • Chrome sử dụng ffmpeg và google đã nỗ lực nghiêm túc để đảm bảo an toàn. libav cũng đang kết hợp những thay đổi đó, nhưng với tốc độ chậm hơn ( bài đăng trên blog của google )
  • FFmpeg cố gắng giữ càng nhiều codec càng tốt, trong khi libav đã bỏ một số ( danh sách gửi thư libav , đăng từ một nhà phát triển libav )
  • Cộng đồng FFmpeg lớn hơn libav và nhà phát triển chuyên dụng nhất (michael niedermayer) bị mắc kẹt với FFmpeg ( thống kê cam kết )
  • Các bộ duy trì ubfox / debian cho FFmpeg là một phần của ngã ba libav. họ đã thêm thông điệp phản đối vào một số công cụ dòng lệnh, gợi ý rằng ffmpeg không được dùng nữa. Điều này gây ra nhiều nhầm lẫn. cả debianubfox đang chuyển trở lại ffmpeg.

Tôi đã tình cờ với Google Michael Niedermayer và kết thúc với bài đăng này , trong đó anh ấy từ chức.
bzeaman

1
@bzeaman vâng, tôi nhớ tình cờ gặp điều này. nhưng anh ấy dường như vẫn trung bình ở mức 2 sáp nhập / cam kết một ngày: git.videolan.org/iêu
kritzikratzi

hmm không có ứng cử viên cài đặt trong deb. Điều gì đã thay thế nó bây giờ?
Stígandr

nvm mind got it libav-tools
Stígandr

1
Niedermayer là lý do cho ngã ba. Điều đó nói rằng, anh ấy đã thay đổi rất nhiều.
Ismael Luceno

9

Khi bạn đến đây, bạn sẽ thấy bản cập nhật gần đây nhất là tháng 9 năm 2012 (một vài tháng trước).

Có vẻ như điều này nói rằng nó chỉ dành riêng cho Ubuntu và Debian vào thời điểm này.

Một thời gian trước, ffmpeg chia thành hai nhánh dưới tên ffmpeg và libav.

Debian đang theo ngã ba libav trong bản phân phối của nó và trong lần tải lên sắp tới, tệp nhị phân / usr / bin / ffmpeg sẽ được thay thế bằng / usr / bin / avconv.

Theo tôi biết, không cần thiết phải chuyển đổi ngay lập tức, nhưng Winff nên được nâng cấp để cho phép nhị phân (từ phối cảnh Debian, với ưu tiên cho avconv). Tôi biết bạn có thể đặt vị trí của nhị phân trong các tùy chọn, nhưng tôi nghĩ rằng với bộ vị trí, Winff sẽ có thể tìm thấy nhị phân thích hợp.

Tôi nghĩ rằng trong tương lai Windows và các bản phân phối khác có thể bị ảnh hưởng bởi vấn đề này.

Để trả lời câu hỏi của bạn về việc nó có giống hệt nhau hay không:

Tôi đã thực hiện kiểm tra nhị phân chính xác trong thanh toán cục bộ của mình, nhưng đọc lên 1 , tôi thấy rằng có một số mâu thuẫn giữa avconv và ffmpeg. Vấn đề đó lớn hơn, bởi vì tập tin cài sẵn sẽ cần điều chỉnh và đặc biệt là cách chúng ta tạo dòng lệnh sẽ phải thay đổi. Các tùy chọn hoạt động trên tệp đầu vào cần phải đi TRƯỚC tệp đầu vào "-i".

Xin lưu ý, điều này có thể dành riêng cho phiên bản Windows. Điều này đã được đăng liên quan đến phiên bản Linux:

Công cụ chuyển đổi âm thanh / video FFmpeg hiện được gọi là AVConv (theo tên của tôi tốt hơn). Vì vậy, công cụ dòng lệnh "ffmpeg" đã lỗi thời và "avconv" nên được sử dụng. Theo như tôi nhận thấy tất cả các thông số vẫn giữ nguyên, nhưng cần tiến hành điều tra thêm. Một số sửa đổi cần phải được thực hiện trong CIS.

Nhiệm vụ:

Cài đặt AVConv trên (các) máy chạy CIS. Thông thường avconv sẽ xuất hiện đang cập nhật ffmpeg (hoạt động trên Ubuntu; không được kiểm tra cho Debian). Thay thế "ffmpeg" bằng "avconv" trong cis / api / ffmpeg.py, lớp FFmpegTranscoder, trường prog_bin, đại diện cho công cụ chuyển đổi thực thi. Tên tệp tái cấu trúc, tên lớp, tên phương thức, tên biến, v.v ... có chứa "FFmpeg" hoặc "ffmpeg" sao cho chúng chứa AVConv. Một IDE như Eclipse có thể làm điều này tự động. Kiểm tra! Nếu vấn đề được chú ý, gỡ lỗi!


9
Tôi hoàn toàn không đồng ý với bài đăng có nội dung "ffmpeg đã lỗi thời và nên sử dụng avconv".
slhck

@slhck Đó dường như là thông lệ tiêu chuẩn khi bạn thực hiện dự án. Càng nhiều người dùng bạn có thể lừa nghĩ rằng nhánh chính đã lỗi thời, càng tốt cho ngã ba của bạn.
dùng253751
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.