Próbuję zmienić liczbę klatek na sekundę filmu MP4 (jest to film GoPro 120 kl./s, chcę go odtworzyć przy 30 kl./s, aby uzyskać efekt zwolnionego tempa).
Używam do tego avconv:
avconv -i SourceMovie.mp4 -vf setpts=4.0*PTS -r 30 DestMovie.mp4
To technicznie działa, ale ponownie koduje film. Oprócz tego, że jest powolny, jest to oczywiście kwestia jakości. Technicznie powinien istnieć sposób, aby ustawić fps w nagłówku wideo, jak mogę to zmienić? (Każde narzędzie inne niż avconv też by działało).
video
avconv
video-conversion
EboMike
źródło
źródło
MP4Box -add source.mp4#video -raw 1 -new test
), a następnie zapisz go ponownie jako MP4 (MP4Box -add test_track1.h264:fps=30 -new dest.mp4
). Możesz tam również dodać ścieżkę audio (przez #audio).-single
opcji dla pierwszego polecenia.MP4Box -single 1 -raw 1 SourceMovie.mp4
tworzy tylko jeden plikSourceMovie_track1.h264
zamiast dwóch.Zmiana liczby klatek na sekundę w nagłówku wideo (kontenera) nie ma wpływu na sam strumień wideo (lub audiostream). Ponowne kodowanie jest jedyną opcją.
Strumienie wideo mają znaczniki czasu, aw większości filmów klatki są od siebie zależne ze względu na kompresję między ramkami. Niektórzy gracze mogą przyspieszyć i spowolnić wideo, ale nie przez wbudowane polecenia lub coś w tym rodzaju. Żaden gracz nie może zmieniać prędkości klatek w locie, gdy komenda kontenera o to poprosi. Plik wideo skończy się ze specyfikacją (tj. Niezgodną ze standardami), a 99,9% graczy odmówi przestrzegania go. Nie jest możliwe robienie tego, co chcesz bez ponownego kodowania. Oczywiście możesz poczekać z przekodowaniem do ostatniego kroku edycji.
źródło
Jeśli twoim głównym celem jest odtwarzanie go w zwolnionym tempie, a nie zachowanie pliku jako MP4, możesz użyć narzędzia GUI MKVmerge, aby przełożyć go ponownie na pojemnik Matroska, który z łatwością może zmienić ilość klatek na sekundę. Remuxowanie jest znacznie lepsze niż ponowne kodowanie, ponieważ zmienia tylko metadane, a nie sam strumień.
Najpierw zainstaluj pakiet
Następnie uruchamiasz MKVmerge GUI. Pojawi się takie okno
Wystarczy nacisnąć przycisk Dodaj i wybrać plik lub nawet przeciągnąć i upuścić plik w obszarze „Pliki wejściowe”. W tym momencie powinieneś być w stanie wybrać strumień wideo w swoim filmie. Możesz także usuwać inne strumienie, ponieważ one i tak przeszkadzają.
Po wybraniu powinieneś zobaczyć dolne zakładki, które stają się aktywne:
Zmień na „Formatuj określone działania”
Widoczne jest pole „FPS”, w którym można wprowadzić wartość klatek na sekundę. Wyglądało na to, że planujesz cztery razy zwolnić, więc Twoim celem będzie około 7 klatek na sekundę. Możesz także użyć opcji „Rozciągnij o”.
Następnie możesz po prostu zmienić nazwę pliku wyjściowego (jeśli chcesz) i nacisnąć „Rozpocznij multipleksowanie”.
Program uruchomi się i powinieneś mieć swój plik.
źródło
Chciałem też bezstratnie zwolnić moje 120 filmów FPS do 30 FPS. Stworzyłem skrypt, który robi to, zmieniając tempo dźwięku i modyfikując FPS bezpośrednio w kontenerze MP4. Wymagane są następujące narzędzia:
Skrypt używany do konwersji znajduje się tutaj:
Ten skrypt tworzy kopię MP4 z _slow postfix.
źródło