Istnieje kilka „standardowych” klatek na sekundę, ale jest ich tak wiele, że obsługa dowolnych klatek jest łatwiejsza niż obsługa wielu konkretnych klatek. Jest to szczególnie prawdziwe w przypadku odtwarzaczy oprogramowania, takich jak VLC.
Coraz więcej wsparcia dla VARIABLE fps. (VFR, zmienna liczba klatek na sekundę). W tym przypadku odstęp między klatkami w tym samym filmie nie jest stały. Wiele formatów plików kontenerów wideo (takich jak Matroska ( .mkv
) lub MPEG-4 ( .mp4
blisko spokrewnionych z Apple .mov
)) nawet nie przechowuje numeru FPS, ale raczej podstawy czasu (np. 1/30 sekundy), a następnie każdej klatki ma znacznik czasu jako wielokrotność tej podstawy czasu. Tak się składa, że odstęp między każdą klatką to jedna lub mała liczba całkowita jednostek podstawy czasu w filmie CFR (stała szybkość klatek).
Materiał z kamery bezpieczeństwa z upuszczonymi niemal duplikatami byłby oczywistym przykładem użycia VFR. Nawet więcej, jeśli jest kompresowany za pomocą prostego kodeka wideo, który nie wykorzystuje przewagi czasowej (z ramkami inter (p i b)). (pobaw się, ffmpeg -vf mpdecimate
aby upuścić klatki bliskie duplikacji. Użyj, -vsync 2
jeśli wypisujesz na mp4, ponieważ z jakiegoś powodu nie jest to domyślny dla tego multipleksera, ale jest dla mkv.)
Innym przypadkiem są nowoczesne smartfony. Na przykład Moto G (2. generacji) mojego brata nagrywa filmy VFR. Zmniejsza liczbę klatek na sekundę, gdy czujnik potrzebuje więcej światła. Niektóre dane wyjściowe z uruchomienia mediainfo na mp4 utworzonym przez oprogramowanie telefonu, nagrane wewnątrz:
Bit rate : 9 999 Kbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Rotation : 90°
Frame rate mode : Variable
Frame rate : 16.587 fps
Minimum frame rate : 14.985 fps
Maximum frame rate : 30.030 fps
Odtwarzanie pojedynczego strumienia wideo VFR nie jest trudne. Oprogramowanie po prostu przygotowuje kolejną ramkę do wyświetlenia, śpi aż do wyświetlenia, a następnie budzi się i wyświetla ją.
Sprawy stają się nieco bardziej skomplikowane, jeśli weźmie się pod uwagę fakt, że ludzie widzą klatki wideo tylko wtedy, gdy wyświetla je monitor. Monitory VFR istnieją, ale wciąż są rzadkie. (Google dla g-sync freesync).
Zmiana wyświetlanego obrazu podczas jego skanowania na monitor powoduje brzydkie rozdarcie wideo (często obserwowane podczas gry z wyłączoną funkcją vsync). Ogranicza to odtwarzacz do zmiany wyświetlanego obrazu przy 50 lub 60 Hz. (Kineskopy obsługują dowolne częstotliwości odświeżania w obrębie zakresu, ale skomplikowane jest gotowanie trybów z prawidłowymi czasami taktowania, więc większość ludzi po prostu używała kilku stałych częstotliwości odświeżania. A teraz ludzie mają LCD, które i tak obsługują tylko stałą częstotliwość odświeżania. Monitory freesync i tak są bardziej rozpowszechnione. Naprawdę nie mogę się doczekać :)
Tak więc w przypadku częstotliwości klatek wideo, które nie są wielokrotnością ani współczynnikiem częstotliwości odświeżania monitora, niektóre klatki będą wyświetlane dla 3 odświeżeń monitora, a niektóre dla 2, na przykład, nawet jeśli wideo ma mieć stałą prędkość 25 klatek na sekundę (na monitorze 60 Hz).
Sprawy komplikują się, gdy chcesz pracować z wieloma klipami i przenikać między nimi, obraz w obrazie lub różne inne efekty. O wiele łatwiej jest pisać oprogramowanie do edycji wideo, jeśli można założyć, że wszystkie klipy mają jednocześnie nową klatkę. (Wymuszają wyrównanie klipu, aby przyciągać do całych klatek).
Dlatego NLE (takie jak Kdenlive lub Pitivi, aby wybrać losowe przykłady Wolnego oprogramowania), częściej zmuszają cię do stałego FPS i upuszczają / duplikują klatki z twoich klipów, aby dopasować je do tej liczby klatek. Wybrany CFR może być dowolny, ale zazwyczaj musi być stały dla całego „projektu”.
(Czy jakieś NLE w pełni działają z klipami VFR i w takim przypadku generują wyjście VFR?)
Podsumowując, kiedy będziemy mieli monitory z zmienną synchronizacją i systemy operacyjne, jedyną rzeczą, która nas powstrzyma, będzie edycja wideo, tak myślę. I nadawanie, skoro najwyraźniej CFR też jest w tym duży problem?
Jeśli zastanawiasz się, 29.970 (właściwie 30000/1001) i 23.976 (właściwie 24000/1001, z teleciningu) irytujące liczby całkowite nie są liczbami całkowitymi, to wina NTSC w kolorze. wyszukaj 1.001 . Gdyby tylko byli gotowi zaryzykować kilka zestawów czarno-białych, nie mogących obsłużyć dodatkowej częstotliwości 0,1% dla podnośnej audio, świat oszczędziłby tego nonsensu. (Wydaje mi się, że widziałem gdzieś inny artykuł, który brzmiałby bardziej jak wiele zestawów, byłoby w porządku, ale nie byli pewni doskonałej kompatybilności. Wikipedia sprawia, że brzmi to tak, jakby żaden zestaw nie obsługiwałby podnośnej audio o 0,1% wyższej. IDK fakty.)
Jednak irytujące liczby klatek na sekundę są jednym z mniejszych grzechów nadawania. To naprawdę przeplatanie, które było zmorą jakości wideo na nowoczesnych ekranach (wszystkie piksele świecą jednocześnie), i to by się nie zmieniło. Nadal nie rozumiem, dlaczego utrzymywano przeplot dla HDTV. Dlaczego zdefiniowano 1080i60 zamiast 720p60 w celu uzyskania tej samej rozdzielczości czasowej dla sportu i innych rzeczy? Jest podobny do 1920x540p60, ale z głupim pionowym przesunięciem między nieparzystymi i parzystymi polami, co wymaga dużo obliczeń na odbiorniku, aby nie wyglądało okropnie.
edytować:
W twoim przypadku absolutnie polecam archiwizację w natywnym FPS. Nie wyrzucaj żadnych informacji, upuszczając ramki. Nie kopiuj ramek i nie powiększaj plików (lub spraw, aby koder h.264 spędzał więcej czasu na zauważaniu duplikatów i wysyłaniu ramki pełnej pomijanych makrobloków, która zajmuje tylko 20 bajtów dla całej ramki).
W przyszłości, gdy mamy nadzieję, że wszyscy będziemy mieć wyświetlacze freesync, które mogą odtwarzać dowolną liczbę klatek na sekundę, będziesz musiał cofnąć podciąganie do 24 klatek na sekundę, aby Twój film był odtwarzany płynniej! Lub jeśli freesync jakoś się nie złapie, lub wyświetlacz pojawiający się po LCD to CFR, wtedy konwersję szybkości najlepiej wykonać w czasie odtwarzania. To nie jest tak, że 24 klatki na sekundę gra idealnie na monitorze 60 Hz. (Nie zauważam wizualnie faktu, że niektóre ramki są wyświetlane dla 3 * 1/60, podczas gdy niektóre są wyświetlane dla 2 * 1/60, ale to prawda).
Jeśli masz problemy z Quicktime, to IDK. Być może upewnij się, że Handbrake tworzy pliki z odpowiednim ustawieniem liczby klatek na sekundę w strumieniu bitów h.264, a także w kontenerze. (Tak, nagłówki h.264 najwyraźniej mogą przechowywać liczbę klatek na sekundę, niezależnie od tego, co mówi kontener. Zobacz dokumentację mkvmerge --fix-bitstream-timing-information
. I spróbuj użyć go --default-duration 16fps
do utworzenia pliku mkv. Następnie wymieszaj to z powrotem do mp4 i sprawdź, czy to naprawi szybki czas? ) A może jest na to sposób za pomocą narzędzi mp4. Patrz na przykład: /ubuntu/370692/how-to-change-the-framerate-of-a-video-without-reencoding
Mogę zagwarantować, że dowolna liczba klatek na sekundę mp4 jest poprawna, a nawet zmienna liczba klatek na sekundę mp4. Jeśli Quicktime źle to gra, może to być wina Quicktime. A może wina Handbrake spowodowana błędem pliku. Zwykle używam ffmpeg bezpośrednio, ponieważ jestem ninja z linii poleceń.