Jak uzyskać najlepszą jakość przy konwersji z MP4 na AVI za pomocą FFMPEG?

11

Kiedy go używam, jakość nie wygląda źle.

ffmpeg -same_quant -i video.mp4 video.avi

W ffmpegdokumentacji napisano: „Pamiętaj, że NIE JEST TO TAKA JAKOŚĆ. Nie używaj tej opcji, chyba że wiesz, że jej potrzebujesz”.

Czy otrzymuję -same_quantnajlepszą jakość, czy jest opcja, która zapewnia tę samą jakość co dane wejściowe i jest bardziej zalecana?

sid_com
źródło
W zależności od używanych kodeków (niektóre kodeki są niekompatybilne z niektórymi kontenerami), zawsze możesz po prostu skopiować strumienie ( -codec copy). Jest to najlepszy sposób na uniknięcie zmian jakości, ponieważ nie ponownie kodujesz strumieni, po prostu ponownie pakujesz je w innym kontenerze.
njsg
Kiedy próbuję to uzyskać: Unknown decoder 'copy'.
sid_com
3
Wydaje się, -codec copymusi iść po -i video.mp4 - można spróbować ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quanttu też działa, ale nic nie zrobi, ponieważ kopiuje po prostu strumienie)
njsg
Odnośnie rozmieszczenia opcji wiersza polecenia ffmpeg, patrz Dokumentacja ffmpeg - 2 Opis : Oto fragment: Zasadniczo opcje są stosowane do następnego określonego pliku. Dlatego porządek jest ważny, ...
Peter.O,
Dzięki! Teraz z -codec copywłaściwym miejscem jest praca.
sid_com

Odpowiedzi:

14

(na podstawie powyższych komentarzy)

W zależności od używanych kodeków (niektóre kodeki są niekompatybilne z niektórymi kontenerami), zawsze możesz po prostu skopiować strumienie ( -codec copy). Jest to najlepszy sposób na uniknięcie zmian jakości, ponieważ nie ponownie kodujesz strumieni, po prostu ponownie pakujesz je w innym kontenerze.

Podczas pracy z plikami audio / wideo należy pamiętać, że kontenery są w większości niezależne od używanych kodeków. Często ludzie określają pliki jako „wideo AVI” lub „wideo MP4”, ale są to kontenery i niewiele mówią o tym, czy odtwarzacz będzie mógł odtwarzać strumienie, ponieważ oprócz ograniczeń technicznych (na przykład AVI może mieć problemy z h264 i Ogg Vorbis ), możesz użyć dowolnego kodeka.

-same_quantwydaje się być sposobem, aby powiedzieć ffmpeg, aby spróbował osiągnąć podobną jakość, ale jak tylko ponownie kodujesz wideo (przynajmniej z kodekami stratnymi), nie masz możliwości uzyskania takiej samej jakości. Jeśli zależy Ci na jakości, dobrą zasadą jest unikanie ponownego kodowania strumieni, gdy jest to możliwe.

Aby skopiować strumienie za pomocą ffmpeg, wykonaj następujące czynności:

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

( Jak wspomniano @ Peter.O , kolejność opcji jest ważna, więc tam -codec copytrzeba iść. Możesz nadal zachować -same_quant, ale nie przyniesie to żadnego efektu, ponieważ nie będziesz ponownie kodować strumieni.)

njsg
źródło
Twoje rozwiązanie działa dla mnie. Widzę, że avconvteraz jest to zalecane zamiast tego, ffmpega właściwie tego właśnie użyłem.
Faheem Mitha
3

Pod FreeBSD 8. 2 próbowałem kopiować -kodek, ale otrzymałem również wiadomość nieznaną. Po próbach i błędach znalazłem ten, który działa pod FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
binyo66
źródło