Czy jest tylko kilka standardowych szybkości klatek wideo?

11

Czy we współczesnym cyfrowym wideo plik wideo można oznaczyć dowolną liczbą klatek na sekundę? A może tylko kilka określonych częstotliwości klatek jest szeroko obsługiwanych? Przez „nowoczesny” rozumiem graczy takich jak Quicktime, VLC, Roku, konsole do gier itp. Jestem ciekawy zarówno tego, co same standardy wideo mówią o dozwolonych częstotliwościach klatek, jak i tego, co faktycznie działa w praktyce.

Rozumiem, że 24 fps, 25 fps, 30 fps, 50 fps i 60 fps to szeroko obsługiwane standardy. HandBrake oferuje również 5, 10 i 15; czy są to standardowe opcje? Czy mogę użyć dowolnego numeru FPS? A co z liczbami całkowitymi, takimi jak 23,976 i 29,97; czy faktycznie są traktowane inaczej przez oprogramowanie niż 24 i 30? Widzę także odniesienia do „zmiennej częstotliwości klatek” w strumieniach H.264; czy to faktycznie działa, a jeśli tak, to co z tego korzysta?

Moje konkretne pytanie brzmi: jak najlepiej zakodować niektóre skany filmów 8 mm. Źródłem jest 16 fps, standard filmu 8 mm. W tej chwili podwajam każdą inną klatkę, aby zwiększyć ją do 24 fps, co działa OK, ale zastanawiam się, dlaczego nie mogę po prostu oznaczyć filmu jako 16 fps. FWIW Stworzyłem pliki H.264 mp4 z hamulcem ręcznym przy 15 fps i stwierdziłem, że odtwarzają się one poprawnie tylko w VLC. Mac Quicktime odtwarzał je zbyt szybko, prawdopodobnie 24 fps.

Nelson
źródło

Odpowiedzi:

11

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 ( .mp4blisko 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 mpdecimateaby upuścić klatki bliskie duplikacji. Użyj, -vsync 2jeś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 16fpsdo 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ń.

Peter Cordes
źródło
2

Aby odpowiedzieć na twoje pytanie - tak, ogólnie możesz zakodować plik wideo w dowolnej liczbie klatek na sekundę. (Chociaż niektóre oprogramowanie może cię ograniczyć, aby uprościć oprogramowanie). Pytanie brzmi, czy wybrany przez Ciebie format dostarczania będzie go obsługiwał i czy urządzenie odtwarzające będzie go obsługiwać?

Jeśli masz film 8 mm przy 16 klatkach na sekundę, kodowałbym go przy 16 klatkach na sekundę, gdybym wiedział, że urządzenia odtwarzające, które chciałbym obsługiwać, mogłyby to obsłużyć. Jeśli nie, prawdopodobnie użyłbym oprogramowania, które obsługiwało przepływ optyczny (czasami nazywany estymacją ruchu), aby zakodować go przy 24 fps, co jest prawdopodobnie najbliższą częstotliwością klatek obsługiwaną przez oprogramowanie do kodowania, oprogramowanie do dekodowania i większość sprzętu do odtwarzania.

Oprogramowanie (lub sprzęt) obsługujące przepływ optyczny generuje klatki pośrednie na podstawie ruchu obiektów w filmie. Zamiast powtarzać klatkę, a nawet mieszać 2 klatki, generuje nową klatkę, która jest zwykle bardzo zbliżona do tego, co faktycznie zostałoby nagrane, gdybyś nagrał z wyjściową częstotliwością klatek.

użytkownik1118321
źródło
Kodowałbym z natywną liczbą klatek na sekundę, aby uniknąć wyrzucania jakichkolwiek informacji lub duplikowania dowolnej ramki w celu stworzenia dodatkowej pracy dla kodeku. Ponadto, mamy nadzieję, że w przyszłości wszyscy będziemy mieć wyświetlacze freesync, które mogą odtwarzać dowolną liczbę klatek na sekundę. Jeśli nie, konwersję szybkości najlepiej wykonać w czasie odtwarzania, szczególnie. jeśli mówimy o archiwalnych ramach czasowych.
Peter Cordes,
2

Według historii 24 FPS pochodzi z kino (filmy). Film był na taśmie fotograficznej i wybrano prędkość, aby ruchy były płynne.

25 FPS pochodzi z częstotliwości zasilania w Europie, 50 Hz (50 FPS pochodzi z tego samego źródła, ale tak naprawdę dwukrotnie). W rzeczywistości telewizja w Europie miała 50 klatek na sekundę, ale pół klatki, są z przeplotem

30 FPS pochodzi z częstotliwości zasilania w USA, 60 Hz (60 FPS pochodzi z tego samego źródła, ale tak naprawdę dwukrotnie). W rzeczywistości telewizja w USA miała 60 FPS, ale pół klatki, są z przeplotem

16 FPS nie jest tak szeroko rozpowszechniony w celach profesjonalnych, więc może dlatego nie jest używany w większości obecnych programów. Co więcej, taki FPS nie „wystarczająco wygładzi” szybkiego ruchu. Mam jeden szalony pomysł, jak zrobić 16 klatek na sekundę, aby lepiej pasowało 24. Juts dostają wszystkie parzyste i nieparzyste klatki i tworzą między nimi średnią wartość :)

Romeo Ninov
źródło
Dziękuję za pomoc, ale nie odpowiada na moje pytanie. Zdaję sobie sprawę z początków 24, 25, 50 i 60. Pytam o to, czy oczekuje się, że zadziałają inne ramki.
Nelson
1

Istnieją ustawione standardy telewizyjne i filmowe, które są zgodne z większością filmów. Komputer często wyświetla obraz z wielu klatek na sekundę, jednak niektóre telewizory mogą mieć problemy z liczbą klatek nieparzystych, ponieważ mogą korzystać z bardziej specjalistycznych układów wyświetlaczy. Nawet na komputerze faktycznie wyświetlana częstotliwość klatek może nie zgadzać się z prędkością pliku wideo, w zależności od obsługiwanych częstotliwości odświeżania monitora.

Tak, liczby klatek innych niż całkowite są wyświetlane w różny sposób. Są one znane jako upuszczane ramki i istnieją przede wszystkim z powodów starszych. Podczas odtwarzania jedna klatka jest przerywana (od kodu czasowego) co jakiś czas, aby nadrobić różnicę czasu, a klatki są rozkładane z odpowiednią szybkością, aby zachować płynność. Ma to więcej wspólnego z synchronizacją w starszych formatach i zapobieganiem problemom z synchronizacją, które nie są już istotne.

Możesz używać niestandardowych częstotliwości klatek i powinien on być odtwarzany poprawnie na komputerach PC, ale nie będzie zgodny ze standardowym wideo dla takich rzeczy jak Bluray i może nie być odtwarzany dobrze na niektórych telewizorach. (I nawet na tych, na których działa, najprawdopodobniej wykona obniżenie w czasie rzeczywistym, aby dostosować się do standardowej liczby klatek na sekundę, przy czym wcześniej wykonane rozwijanie prawdopodobnie zapewni lepszą jakość.)

AJ Henderson
źródło
@ user1118321 tak, i dziękuję za zwrócenie uwagi, że może być bardziej jasne.
AJ Henderson
-1

Twoje pytanie nie dotyczy typowych stawek, chodzi o to, jaką stawkę powinieneś zastosować do digitalizacji filmu. Odpowiedź: powinieneś użyć oryginalnej stawki, jeśli to możliwe, ponieważ chcesz zachować źródło w postaci cyfrowej. Następnie możesz przekonwertować go na dowolną liczbę klatek potrzebną do oglądania. W dawnych czasach oznaczało to zwykle 24 klatki na sekundę w przypadku prezentacji teatralnej i 29,97 klatki na sekundę w przypadku wideo. W dzisiejszych czasach możesz zrobić prawie wszystko, ale musisz mieć dobre źródło, które pasuje do oryginału tak czysto, jak to możliwe.

Zardzewiały rdzeń
źródło
Nie, moje pytanie dotyczyło wspólnych stawek. Odpowiedzi udzielono przed laty.
Nelson
-3

Kilka innych notatek. Po pierwsze, 48 fps staje się coraz bardziej popularne i popularne dzięki Hobbitowi, a teraz dzięki obsłudze klatek na sekundę przez YouTube. Po drugie, 30 fps to zwykle 29,97 fps, a 60 to zwykle 59,94.

KC McLaughlin
źródło
2
W rzeczywistości 30 nie zawsze oznacza 29,97. Czasami tak naprawdę jest 30. To samo dotyczy 24. 23.98, 24, 29.97, 30, 50, 59,94 i 60 są doskonale poprawnymi, często używanymi klatkami na sekundę. Te z ułamkami dziesiętnymi mają być kompatybilne z telewizją nadawaną w różnych krajach, ale nadal są uczciwą grą w sieciach. Niektórzy producenci kamer kłamią jednak na temat liczby klatek na sekundę. Kamera oznaczona jako 24p może faktycznie dostarczyć 23,98, próbując oszczędzić konsumentowi zarówno problemów związanych z pasmowaniem, jak i technicznych szczegółów.
Jason Conrad,
@JasonConrad Liczba klatek na sekundę nie zawsze jest zaokrąglana po przecinku, ale w przypadku większości kamer konsumenckich są to liczby dziesiętne.
KC McLaughlin
@KCMcLaughlin - w rzeczywistości na urządzeniach z progresywnym skanowaniem coraz bardziej prawdopodobne jest upuszczenie ramki upuszczania i po prostu zwiększenie liczby klatek na sekundę. 29.97 i 23.976 są w tej chwili czystą spuścizną i coraz częściej są zastępowane czystymi liczbami całkowitymi klatek.
AJ Henderson
@KCMcLaughlin Color NTSC nigdy nie było 29,97fps. To było i nadal jest 30000/1001. Podobnie zawartość 24p telecine na kolorowym NTSC będzie w rzeczywistości 24000/1001. Ponadto mój aparat cyfrowy (lumix) rejestruje 30 klatek na sekundę, a nie 30 / 1,001. A / V desynchronizowałbym się, gdybym odtwarzał inną liczbę klatek na 48 próbek dźwięku.
Peter Cordes,