Mam zestaw klatek wideo zapisanych jako obrazy w katalogu i próbuję zakodować je do dobrej jakości wideo, jednak każde ustawienie i każdy format, które próbuję, generuje bardzo zauważalne artefakty.
Podstawowe polecenie jest takie:
ffmpeg -r 25 -i %4d.png myvideo.mpg
i wypróbowałem flagi minrate i maxrate. Dowolny format {mpg, avi, mov, flv} będzie odpowiedni.
Jakieś sugestie dotyczące ustawień? Ostateczny rozmiar pliku nie jest problemem.
video
ffmpeg
video-encoding
CakeMaster
źródło
źródło
ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4
. Okazało się, że aby wymusić liczbę klatek na sekundę, musiałem określić ją zarówno dla plików wejściowych, jak i wyjściowych. Ten kodek wydaje się działać dla mnie - być może nie musisz go określać. Chciałem po prostu zawrzeć to, co zrobiłem, ponieważ spędziłem nad tym dużo czasu. Jedynym minusem jest to, że moje obrazy wejściowe mają wysoki kontrast (niebieskie i czerwone kule na białym tle), a później w filmie kule zaczynają nabierać tego samego ciemnego koloru - niepożądany efekt kontrastu.Odpowiedzi:
Kilka rzeczy:
Musisz ustawić szybkość transmisji wideo. Nigdy nie używałem minrate i maxrate, więc nie wiem, jak dokładnie działają, ale ustawiając szybkość transmisji za pomocą
-b
przełącznika, jestem w stanie uzyskać wysokiej jakości wideo. Musisz wymyślić szybkość transmisji, która zapewnia dobry kompromis między kompresją a jakością wideo. Być może będziesz musiał z tym poeksperymentować, ponieważ wszystko zależy od rozmiaru klatki, liczby klatek na sekundę i ilości ruchu w treści twojego wideo. Pamiętaj, że DVD ma średnio około 4-5 Mbit / s dla 720x480, więc zwykle zaczynam od tego i decyduję, czy potrzebuję więcej, czy mniej, a potem po prostu eksperymentuję. Na przykład możesz dodać-b 5000k
do wiersza poleceń, aby uzyskać mniejszą lub większą szybkość transmisji wideo DVD.Musisz określić kodek wideo. Jeśli tego nie zrobisz, ffmpeg domyślnie wybierze MPEG-1, który jest dość stary i nie zapewnia kompresji zbliżonej do MPEG-4 lub H.264. Jeśli twoja wersja ffmpeg jest zbudowana z obsługą libx264, możesz to określić
-vcodec libx264
w linii poleceń. W przeciwnym razie-vcodec mpeg4
wykona również lepszą pracę niż MPEG-1, ale nie tak dobrze, jak x264.Istnieje wiele innych zaawansowanych opcji, które pomogą Ci uzyskać najlepszą jakość przy najniższych przepływnościach. Spójrz tutaj, aby zobaczyć kilka przykładów.
źródło
ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …
. 18 to CRF z bardzo marginalną utratą jakości, ale przepływność będzie prawdopodobnie niska. Jeśli potrzebujesz mniejszego rozmiaru pliku, możesz wypróbować większe wartości CRF. Jak widzisz, jest to całkiem proste.Musisz określić opcję -vb, aby zwiększyć szybkość transmisji wideo, w przeciwnym razie otrzymasz wartość domyślną, która tworzy mniejsze filmy, ale z większą liczbą artefaktów.
Spróbuj czegoś takiego:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
źródło
Upewnij się, że pliki PNG są całkowicie nieprzezroczyste przed utworzeniem wideo
np. z imagemagick, nadaj im czarne tło:
Z moich testów wynika, że żaden bitrate ani kodek nie są wystarczające, aby wideo wyglądało dobrze, jeśli karmisz pliki PNG ffmpeg z przezroczystością
źródło
Jeśli nie wykonasz jakiejś obróbki końcowej, wideo nigdy nie będzie lepsze niż oryginalne klatki. Podobnie jak flipbook, jeśli wykonujesz duży „skok” między klatkami kluczowymi, będzie to wyglądać śmiesznie. Aby zapewnić płynną animację, zazwyczaj potrzeba wystarczającej liczby „animacji” między klatkami kluczowymi. HTH
źródło