Làm thế nào để có được chất lượng tốt nhất khi chuyển đổi từ mp4 sang avi với ffmpeg?


11

Khi tôi sử dụng, chất lượng không tệ.

ffmpeg -same_quant -i video.mp4 video.avi

Trong ffmpegtài liệu được viết: "Lưu ý rằng đây KHÔNG PHẢI LÀ CHẤT LƯỢNG. Không sử dụng tùy chọn này trừ khi bạn biết bạn cần nó."

Tôi có nhận được với -same_quantchất lượng tốt nhất hay có một tùy chọn nào cho chất lượng tương tự như đầu vào và được đề xuất nhiều hơn không?


Tùy thuộc vào các codec được sử dụng (một số codec không tương thích với một số container), bạn luôn có thể sao chép các luồng ( -codec copy). Đó là cách tốt nhất để tránh thay đổi chất lượng, vì bạn không mã hóa lại các luồng, chỉ đóng gói lại các luồng trong một thùng chứa khác.
njsg

Khi tôi thử điều này, tôi nhận được : Unknown decoder 'copy'.
sid_com

3
Có vẻ như -codec copyphải đi sau -i video.mp4 - bạn có thể thử ffmpeg -i video.mp4 -codec copy video.avikhông? (cũng -same_quanthoạt động ở đây, nhưng sẽ không làm gì cả, vì điều này chỉ sao chép các luồng)
njsg

Về vị trí của các tùy chọn dòng lệnh của ffmpeg, xem Tài liệu ffmpeg - 2 Mô tả : Đây là đoạn trích: Theo quy tắc chung, các tùy chọn được áp dụng cho tệp được chỉ định tiếp theo . Do đó, trật tự rất quan trọng, ...
Peter.O

Cám ơn! Bây giờ với -codec copyđúng nơi là công trình.
sid_com

Câu trả lời:


14

(phỏng theo ý kiến ​​trên)

Tùy thuộc vào các codec được sử dụng (một số codec không tương thích với một số container), bạn luôn có thể sao chép các luồng ( -codec copy). Đó là cách tốt nhất để tránh thay đổi chất lượng, vì bạn không mã hóa lại các luồng, chỉ đóng gói lại các luồng trong một thùng chứa khác.

Khi xử lý các tệp âm thanh / video, điều quan trọng cần lưu ý là các container chủ yếu độc lập với các codec được sử dụng. Người ta thường thấy mọi người coi các tệp là "video AVI" hoặc "video MP4", nhưng đó là những thùng chứa và cho chúng tôi biết một chút về việc người chơi có thể phát các luồng không, ngoài các giới hạn kỹ thuật (ví dụ: AVI có thể có vấn đề với h264 và Ogg Vorbis ), bạn có thể sử dụng bất kỳ codec nào.

-same_quantdường như là một cách để nói với ffmpeg cố gắng đạt được chất lượng tương tự, nhưng ngay khi bạn mã hóa lại video (ít nhất là với các codec bị mất), bạn không có cách nào để có được chất lượng tương tự. Nếu bạn quan tâm đến chất lượng, một nguyên tắc tốt là tránh mã hóa lại các luồng khi có thể.

Vì vậy, để sao chép các luồng bằng ffmpeg, bạn sẽ làm:

ffmpeg -i video.mp4 -codec copy video.avi

( Như @ Peter.O đã đề cập , thứ tự tùy chọn rất quan trọng, vì vậy đó là nơi -codec copyphải đến. Bạn vẫn có thể giữ -same_quant, nhưng nó sẽ không có tác dụng gì khi bạn không mã hóa lại các luồng.)


Giải pháp của bạn làm việc cho tôi. Tôi thấy rằng avconvbây giờ được khuyến nghị thay thế ffmpegvà trên thực tế là những gì tôi đã sử dụng.
Faheem Mitha

3

Trong FreeBSD 8. 2, tôi đã thử sao chép -codec nhưng tôi cũng nhận được tin nhắn chưa được giải mã. Sau khi dùng thử và gặp lỗi, tôi đã tìm thấy cái đang hoạt động trong FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
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.