Nie mam żadnej wiedzy na temat kodowania wideo, mam aplikację napisaną w OpenGL i mam Zapisuję wygenerowane klatki w obrazach png. Klatki z mojej aplikacji mają szybkość 7 kl./s i próbuję utworzyć 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 witryny , jednak zastanawiałem się, czy można mieć wideo pokazujące animację przy 30 FPS?

Komentarze

Odpowiedź

Używam poniższego kodu, aby zrobić to samo.

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4 

Podział polecenia:

ffmpeg <- call ffmpeg -framerate 30 <- set the input framerate to 30 -i img%03d.png <- read PNG images with filename img001, img002, img003, etc.. img can be changed to another prefix %03d can be changed to %04d for 0001, %05d for 00001 formats, etc... -c:v libx264 <- Set the codec to libx264 -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp -crf 23 <- set the Constant Rate Factor to 23 (default value) -output.mp4 <- the output filename 

Czyta dane wejściowe przy 30 fps (-framerate 30) i koduje go za pomocą kodeka libx264 z współczynnikiem stałej szybkości wynoszącym 23 (-crf 23).

Odpowiedź

Należy wziąć pod uwagę dwie liczby klatek na sekundę: wejściową i wyjściową.

Domyślnie wejściowa liczba klatek na sekundę wynosi 25 , a wyjście będzie używać tej samej liczby klatek na sekundę co wejście, chyba że powiesz inaczej.

Ta sama liczba klatek na sekundę dla wejścia i wyjścia

Jeśli chcesz wprowadzić i mają taką samą liczbę klatek na sekundę, a następnie po prostu podaj wejściową liczbę klatek na sekundę. Ten przykład ustawi liczbę klatek na sekundę 30000/1001 (wideo NTSC):

ffmpeg -framerate 30000/1001 -i input output.mp4 
  • Alternatywnie, w tym przykładzie możesz użyć ntsc zamiast 30000/1001, ale nie używaj 29.97, ponieważ jest to niedokładne lub poprawnie. Zobacz inne aliasy liczby klatek na sekundę .

  • Ponieważ domyślna liczba klatek na sekundę to 25, a jeśli ustawia tylko wyjściową liczbę klatek na sekundę, a następnie klatki zostaną odrzucone lub zduplikowane w celu skompensowania. Dlatego w tej sytuacji ustawiana jest wejściowa liczba klatek na sekundę.

Inna liczba klatek na sekundę i wyjście

Czasami możesz chcieć, aby częstotliwość klatek wejściowych i wyjściowych różniły się. Na przykład możesz chcieć wprowadzić klatki z określoną częstotliwością, a następnie zduplikować lub upuścić klatki, aby wynik miał Może to być konieczne ze względu na problemy ze zgodnością z kontenerem formatu wyjściowego, odtwarzaczem i / lub urządzeniem:

  • W tym przykładzie klatki zostaną zduplikowane, aby przejść od 10 do 25. Dane wyjściowe konsoli poinformują Cię, czy ramki są gubione czy powielane.

  • demukser plików graficznych używa -framerate, podczas gdy wyjściowa liczba klatek na sekundę jest ustawiana za pomocą -r.

  • Może być konieczne dodanie opcji -pix_fmt yuv420p w w pewnych okolicznościach, jeśli „ponownie wyprowadzasz wideo H.264 (ffmpeg konsola wyświetli ostrzeżenie, jeśli zajdzie taka potrzeba). Spowoduje to użycie schematu podpróbkowania barwy, który jest kompatybilny ze wszystkimi odtwarzaczami.

Komentarze

  • ffmpeg wersja 3.2.2 mówi mi: Option framerate not found. 🙁
  • Tak, masz rację. Mimo to opcja -framerate nie istnieje już. Usunę swój komentarz, ponieważ tak naprawdę nie ma on nic wspólnego z konwersją serii obrazów do filmu z określoną liczbą klatek na sekundę.
  • @erik -framerate istnieje. ' s używane przez demuxery obrazu i rawvideo oraz niektóre urządzenia wejściowe, takie jak x11grab i v4l2.
  • Gdzie jest opcja -framerate udokumentowane? ' przeczytałem stronę man ffmpeg, ale nie mogłem ' nie znaleźć. Może jakiś wskaźnik?
  • OK, znalazłem … FFMPEG-DEVICES(1).

Odpowiedź

ffmpeg -framerate 30 -i img%03d.png output.mp4 

wystarczy na koniec t wersja ffmpeg.

Komentarze

Odpowiedź

Mówisz o interpolacji wideo. Nie ma możliwości, aby 7 fps zmieniło się w 30 fps bez interpolacji wideo … Zasadniczo chcesz uzyskać 30 fps od samego początku, w procesie tworzenia filmów … Ponieważ interpolacja wideo zajmie dużo zasobów i czasu, a może być wypełnione artefaktami.Słyszałem, że możesz zamienić jedno ujęcie w krótkie filmy, używając Adobe, ale dużo pracy ręcznej …

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *