Nie mam żadnej wiedzy na temat kodowania wideo, mam aplikację napisaną w OpenGL i zapisuję wygenerowane klatki w png
obrazach. Ramki z mojej aplikacji mają 7 FPS i staram się stworzyć z nich wideo.
W tym celu używam ffmpeg w ten sposób
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
który został pobrany z tej strony , ale zastanawiałem się, czy można mieć film pokazujący animację przy 30 klatkach na sekundę?
-framerate
parametr, aby uzyskać pożądane wyniki.Odpowiedzi:
Korzystam z poniższego kodu, aby zrobić to samo.
Podział polecenia:
Odczytuje to dane wejściowe przy 30 fps (
-framerate 30
opcja) i koduje je przy użyciulibx264
kodeka o stałym współczynniku szybkości 23 (-crf 23
opcja).źródło
Do rozważenia są dwie liczby klatek: wejście i wyjście.
Domyślnie wejściowa liczba klatek na sekundę wynosi 25, a dane wyjściowe będą używać tej samej liczby klatek na sekundę co dane wejściowe, chyba że zostanie podane inaczej.
Ta sama częstotliwość klatek na wejściu i wyjściu
Jeśli chcesz, aby dane wejściowe i wyjściowe miały taką samą liczbę klatek na sekundę, po prostu podaj wejściową liczbę klatek na sekundę. W tym przykładzie ustawiono częstotliwość odświeżania 30000/1001 (wideo NTSC):
Alternatywnie, w tym przykładzie możesz użyć
ntsc
zamiast30000/1001
, ale nie używaj,29.97
ponieważ nie jest to dokładne ani poprawne. Zobacz inne aliasy klatek .Ponieważ domyślna wejściowa liczba klatek na sekundę to 25, a jeśli ustawisz tylko wyjściową liczbę klatek na sekundę, klatki zostaną upuszczone lub zduplikowane w celu kompensacji. Dlatego w tej sytuacji ustawiana jest liczba klatek na sekundę.
Inna częstotliwość klatek dla wejścia i wyjścia
Czasami może być konieczne, aby wejściowa liczba klatek na sekundę i wyjściowa częstotliwość klatek były różne. Na przykład, możesz chcieć wprowadzić klatki z określoną częstotliwością, a następnie powielić lub upuścić klatki, aby dane wyjściowe miały inną częstotliwość klatek. Możesz to zrobić z powodu problemów ze zgodnością z pojemnikiem formatu wyjściowego, odtwarzaczem i / lub urządzeniem:
W tym przykładzie ramki zostaną zduplikowane, aby przejść od 10 do 25. Dane wyjściowe konsoli powiedzą, czy ramki są upuszczane czy powielane.
W plików graficznych DEMUXERA zastosowania
-framerate
, natomiast stopa ramka wyjściowa jest ustawiana za pomocą-r
.W
-pix_fmt yuv420p
niektórych przypadkach może być konieczne dodanie tej opcji, jeśli wyprowadzasz wideo H.264 (ffmpeg
wyjście konsoli ostrzeże Cię, jeśli zajdzie taka potrzeba). Spowoduje to użycie schematu podpróbkowania kolorów, który jest zgodny ze wszystkimi odtwarzaczami.źródło
Option framerate not found.
:-(-framerate
już nie istnieje. Skasuję mój komentarz, ponieważ tak naprawdę nie ma to nic wspólnego z konwertowaniem serii zdjęć na wideo o określonej liczbie klatek na sekundę.-framerate
istnieje. Jest używany przez demuxery obrazu i rawvideo oraz niektóre urządzenia wejściowe, takie jak x11grab i v4l2.-framerate
udokumentowana opcja ? Przeczytałemman ffmpeg
stronę, ale nie mogłem jej znaleźć. Może jakiś wskaźnik?FFMPEG-DEVICES(1)
.będzie wystarczający w najnowszej wersji ffmpeg.
źródło