Wprowadzenie. Radzę abyś odwiedził poniższą stronę jeżeli nie za bardzo rozumiesz co jest napisane w tym dokumencie: http://www.divx.com/support/guides/guide.php?gid=10 Ten URL prowadzi do zrozumiałego i rozsądnej wielkości przewodnika traktującego o tym czym jest telecine.
Z przyczyn technicznych odnoszących się do wczesnych urządzeń telwizyjnych, każde video które miało być odtwarzane na telewizorze NTSC musiało być ustawione na 59,94 pola na sekundę. Filmy i programy nagrane dla telewizji są najczęściej ograniczone bezpośrednio do 59,94 pól na sekundę, ale większość filmów kinowych jest nagrywanych w 24 lub 23,976 klatkach na sekundę. Kiedy DVD z kinowym filmem jest odtwarzane, video jest konwertowane dla telewizji przy pomocy procesu nazywanego telecine.
Obraz na DVD, tak naprawdę nigdy nie jest przechowywany jako 59,94 pól na sekundę. Dla obrazu który oryginalnie był 59,94, każda para pól jest łączona w ramkę, co daje rezultat 29,97 ramek na sekundę. Sprzętowe odtwarzacze DVD odczytują flagę osadzoną w strumieniu video aby określić czy parzyste czy nieparzyste linie powinny formować pierwsze pole.
Zazwyczaj, informacja o 23,976 ramkach na sekundę mówi odtwarzaczowi DVD, że musi przeprowadzić telecine w locie. Czasami, jednak, proces telecine na obrazie przeprowadzony jest przed umieszczeniem go na DVD; Nawet jeżeli był on nagrany jako 23,976 ramek na sekundę, staje się on 59,94 pola na sekundę i jest przechowywany na dysku jako 29,97 ramek na sekundę.
Patrząc na indywidualne ramki uformowane z ztelecinowanego obrazu 59,94 pól na sekundę, przeplot jest wyraźnie widoczny przy ruchu, ponieważ jedno pole (powiedzmy parzyste linie) reprezentują moment w czasie o 1/59,94 sekundy później niż pozostałe. Odtwarzanie video z przeplotem na komputerze wygląda ohydnie, z dwóch przyczyn, ponieważ monitor jest większej rozdzielczości i obraz jest wyświetlany ramka-po-ramce zamiast pole-po-polu.
Notki:
Ta sekcja odnosi się tylko do NTSC DVD, nie do PAL.
Przykładowe komendy MEncodera w tym dokumencie nie są przeznaczone do prawdziwego użycia. Są one po prostu minimum do kodowania danej kategorii video. Jak zrobić dobre ripy DVD lub precyzyjnie-ustawić libavcodec dla najlepszej jakości nie są zagadnieniami dla tego tego dokumentu.
Jest kilka przypisów do tego dokumentu, zaznaczonych tak: [1]
Progresywne video było oryginalnie filmowane przy 23.976 fps (ramek na sekundę - przyp. tłum.), i przechowywane na DVD bez zmian.
Kiedy odtwarzasz progresywne DVD w MPlayerze, MPlayer wyświetli nastepujący wiersz zaraz gdy film zacznie być odtwarzany:
demux_mpg: 24fps progressive NTSC content detected, switching framerate.Od tego momentu, demux_mpg niepowinien nigdy powiedzieć iż znalazł "30fps NTSC content."
Kiedy oglądasz progresywne video, nie powinieneś zauważyć żadnego przeplotu. Bądź jednak czujny ponieważ jest tam czasami wmiksowany mały kawałek telecine, tam gdzie się go nie spodziewasz. Napotkałem DVD z programami telewizyjnymi w których przy każdej zmianie sceny i w losowych miejscach była jedna sekunda telecine. Raz oglądałem DVD który miał jedną połowę progresywną, a drugą ztelecinowaną. Jeżeli chcesz być naprawdę pewny, możesz przeskanować cały film:
mplayer dvd://1 -nosound -vo null -benchmarkUżycie opcji -benchmark przekazuje MPlayerowi aby odtwarzał film tak szybko jak tylko może; ciągle jednak, jako że jest zależny od Twojego sprzętu może to zając trochę czasu. Za każdym razem demux_mpg zgłasza zmianę liczby ramek na sekundę, pierwsza linia nad pokaże czas w którym nastąpiła ta zmiana.
Progresywne video jest czasami nazywane "miękkie-telecine" ponieważ jest ono stworzone aby odtwarzac DVD wykonał na nim proces telecine.
Obraz "ztelecinowany" był oryginalnie sfilmowany jako 23,976, ale został poddany procesowi telecine przed zapisaniem go na płycie DVD.
MPlayer (nigdy) nie zwraca żadnych zmian ilości ramek na sekundę kiedy odtwarza ztelecinowane video.
Podczas oglądania video poddanego procesowi telecine, zobaczysz artefakty przeplotu które wydają się "migać": szybko pojawiają się i znikają. Możesz się im bliżej przyjrzeć wpisując
mplayer dvd://1 -speed 0.1
Przewiń na dynamiczne sceny.
Popatrz na wzór przeploto-wyglądających i progresywnie-wyglądających ramek. Jeżeli wzór który widzisz wygąda jak PPPII,PPPII,PPPII,... wtedy video ztelecinowane. Jeżeli widzisz inny wzór, wtedy możliwe jest że video zostało niestandartowo poddane procesowi telecine i MEncoder nie może bezstratnie przekonwertować go do progresywnego video. Jeżeli nie widzisz żadnego wzoru, wtedy najprawdopodobniej video zawiera tylko przeplot.
Czasami video poddane procesowi telecine nazywane jest "twarde-telecine".
Przeplecione video było oryginalnie sfilmowane jako 59,94 pól na sekundę i przechowywane na DVD jako 29,97 fps. Przeplot to rezultat połączenia par pól w ramkę, ponieważ w każdej ramce, każde pole jest oddzielone o 1/59,94 sekundy.
Tak jak przy ztelecinowanym video, podczas odtwarzania filmu z przeplotem MPlayer nigdy nie powinien powiadamiać o zmianie ilości ramek na sekundę.
Kiedy z bliska oglądasz przeplecione video z -speed 0.1 zobaczysz, iż każda pojedyńcza klatka jest przepleciona.
Wszystkie "wymieszane progresywne i telecine" video były oryginalnie nagrane jako 23.976 ramek na sekundę, ale niektóre części skończyły jako ztelecinowane.
Kiedy MPlayer odtwarza tę kategorię, będzie on (zazwyczaj bardzo szybko) przełączał się tam i z powrotem między "30fps NTSC" i "24fps progresywne NTSC". Przyjrzyj się wyjściu MPlayera (na konsoli - przyp. tlum.) aby zobaczyć te wiadomości.
Powinieneś przyjrzeć się sekcji "30fps NTSC" aby upewnić się czy są one na pewno telecine a nie tylko przeplecione.
W "mieszanej progresywnej i przeplecionej" zawartości, progresywne i przeplecione video zostało połączone razem.
Ta kategoria wygląda zupełnie jak "mieszane progresywne i telecine", do momentu kiedy przyjrzysz się fragmentom 30fps i zobaczysz iż nie maja one wzoru telecine.
Jak już wspomniałem na początku, przykładowe polecenia MEncodera poniżej nie są przewidziane do rzeczywistego użycia; demonstrują one tylko minimalne parametry potrzebne do prawidłowego zakodowanie danej kategorii.
Progresywne video nie wymaga żadnego specjalnego filtrowania do kodowania. Jedynym koniecznym paramterem jaki musisz użyć jest -ofps 23.976. Inaczej, MEncoder będzie próbował kodować przy prędkości 29,97 i duplikować ramki.
mencoder dvd://1 -nosound -ovc lavc -ofps 23.976
Proces telecine może zostać odwrócony, aby odzyskać oryginalną zawartość 23,976, przy użyciu metody o nazwie odwrócone-telecine. MPlayer zawiera dwa filtry które są w stanie dokonać tego: detc i ivtc. Możesz przeczytać stronę man aby dowiedzieć się co je różni, ale jeżeli chodzi o DVD to nigdy nie miałem problemu z ivtc. Pamiętaj, że przed przeskalowywaniem powinieneś zawsze odwrócić telecine; odwróć telecine także przed cropowaniem, chyba że naprawdę wiesz co robisz [1].
mencoder dvd://1 -nosound -vf ivtc=1 -ovc lavc -ofps 23.976
Dla większości praktycznych przypadków nie jest możliwe całkowite odzyskanie progresywnego video z przeplecionej zawartości. Jedynym sposobem bez gubienia połowy pionowej rozdzielczości jest podwojenie ilości ramek na sekundę i "zgadnięcie" co powinno zastąpić odpowiadające linie każdego pola (ma to pewne wady - zobacz trzecią metodę).
Kodowanie video z przeplotem. Normalnie, przeplot niszczy szanse enkodera na dobre zakodowanie, lecz libavcodec posiada dwie opcje pozwalające przechowywać video z przeplotem ciut lepiej: ildct i ilme. Użycie mbd=2 jest także zalecane [2] ponieważ zakoduje on makrobloki bez przeplotu w miejscach gdzie nie ma ruchu Zauważ iż opcja -ofps NIE jest tu potrzebna.
mencoder dvd://1 -nosound -ovc lavc -lavcopts ildct:ilme:mbd=2
Użycie filtru likwidującego przeplot przed kodowaniem. Jest kilka takich filtrów, każdy ma swoje wady i zalety. Skonsultuj mplayer -pphelp aby zobaczyć co jest dostępne (grepuj "deint") i przeszukaj listy dyskusyjne MPlayera aby znaleźć wiele dyskusji na temat różnych filtrów. Ilość ramek na sekundę znów się nie zmienia, więc nie używamy -ofps. Likwidowanie przeplotu powinno zostać zrobione po kadrowaniu [1] i przed skalowaniem.
mencoder dvd://1 -nosound -vf pp=lb -ovc lavc
Niestety ta opcja zawiera błędy w MEncoderze; Będzie działać w MEncoder G2, którego jeszcze nie ma. Na razie możesz doświadczyć nieoczekiwanych wywaleń. Celem opcji -vf tfields jest stworzenie pełnej klatki z każdego pola, co w efekcie daje framerate 59,94. Zaletą tego podejścia jest zerowa utrata danych; jednak ze względu na to, iż każda ramka pochodzi od jednego pola pozostałe linie muszą być jakoś zinterpolowane. Są niezbyt dobre metody generowania brakujących danych, a rezultaty będą podobne do tych jakie otrzymamy przy filtrach likwidujących przeplot. Generowanie brakujących linii tworzy kolejne problemy, po prostu ilość danych się podwaja. Więc, aby zachować jakość potrzebny jest większy kodujący bitrate i większa cześć mocy procesora jest używana do kodowania jak i dekodowania. tfields posiada kilka różnych opcji do generowania brakujących linii. Jeżeli używasz tej metody, odwołaj się do manuala i wybierz opcję która najbardziej odpowiada Twojemu materiałowi. Zauważ, że gdy używasz tfields musisz podać i -fps i -ofps aby podwoić ilość ramek na sekundę Twojego źródła.
mencoder dvd://1 -nosound -vf tfields=2 -ovc lavc -fps 59.94 -ofps 59.94
Jeżeli planujesz drastyczne zmniejszenie rozdzielczości możesz odciąć i zakodować tylko jedno z dwóch pól. Oczywiście stracisz połowę pionowej rozdzielczości, ale jeśli chcesz zeskalować do mniej niż połowy pionowej rozdzielczości, strata nie będzie miała dużego znaczenia. Rezultatem będzie progresywny plik o prędkości 29,97 ramek na sekundę. Procedura wymaga użycia -vf field, potem wykadrowania [1] i wyskalowania. Pamiętaj, iż będziesz musiał skompensować połowę pionowej rozdzielczości odpowiednią skalą.
mencoder dvd://1 -nosound -vf field=0 -ovc lavc
W celu zmienienia zmieszanego video w całkowicie progresywne, części ztelecinowane będą musiały być poddane procesowi odwróconego telecine. Są dwa filtry które tego dokonają natywnie, ale najlepszym sposobem jest użycie ich obu połączonych (czytaj dalej aby dowiedzieć się więcej).
Obecnie najbardziej niezawodną metodą na poradzenie sobie z tym typem video, jest nie odwracanie telecine ztelecinowanych części, ale ztelecinować nie-ztelecinowane części i odwrócić telecine całego video. Brzmi skomplikowanie? softpulldown jest filtrem który zamienia całe video na telecine. Jeżeli po softpulldown nastąpi detc lub ivtc, końcowym rezultatem będzie w całości progresywne video. Kadrowanie i skalowanie powinno być zrobione po operacjach odwracających telecine z opcją -ofps 23.976.
mencoder dvd://1 -nosound -vf softpulldown,ivtc=1 -ovc lavc -ofps 23.976
-vf pullup jest zaprojektowane aby odwracać telecine ztelecinowanego materiału, a progresywne dane zostawiać w spokoju. Pullup nie działa za dobrze z obecnym MEncoderem, ale będzie działał z MEncoder G2 (kiedy ten będzie tylko gotowy). Działa dobrze bez opcji -ofps, ale -ofps jest potrzebne aby zapobiec poszatkowanemu wyjściu . Z -ofps pullup czasami zawodzi. Problem wywodzi się z zachowania MEncodera który zrzuca ramki aby zachować synchronizację między dźwiękiem i obrazem: zrzuca ramki raczej przed wysłaniem ich przez łańcuch filtrów, niż po. W rezultacie pullup jest czasami pozbawiony danych których potrzebuje.
Jeżeli MEncoder zrzuca za dużo ramek pod rząd, zagładza bufor pullupa i powoduje jego nieoczekiwane zamknięcie.
Jeżeli nawet MEncoder zrzuca jedną ramkę, pullup wciąż nie widzi jej i operuje na złej sekwencji ramek. Nawet jeśli to nie powoduje nieoczekiwanego zakończenia, pullup nie będzie w stanie podjąć właściwych decyzji jak połączyć progresywne ramki i albo będzie niewłaściwie dopasowywał do siebie pola albo zrzucał parę pól aby skompensować.
Nie używałem -vf filmdint osobiście, ale zobacz co ma do powiedzenia na ten temat D Richard Felker III:
To jest w porządku, ale IMO (MZ - Moim zdaniem - przyp. tłum.) to raczej próbuje usunąć przeplot niż odwrócić telecine (podobnie jak odtwarzacze DVD settop & progresywne TV) czego skutkiem jest ohydne miganie i inne artefakty. Jeżeli zamierzasz używać tego, musisz chociaż spędzi trochę czasu na dopasowaniu opcji i oglądaniu rezultatów aby upewnić się, że się nie kaszani.
Są dwie metody na poradzenie sobie z tą kategorią, każda jest pewnym kompromisem. Powinieneś zdecydować na podstawie czasu trwania/miejsca każdego typu.
Traktuj video jak progresywne. Części z przeplotem będą wyglądały jak z przeplotem i niektóre przeplecione pola będą musiały być zrzucone, czego rezultatem będzie niemiarowe skakanie. Jeśli chcesz możesz użyć filtrów postprocessingu, ale może to nieznacznie zdegradować progresywne części.
Ta opcja na pewno nie powinna być używana jeśli docelowo masz zamiar wyświetlać video na urządzeniu wykorzystującym przeplot (np. z kartą TV) Jeżeli masz ramki z przeplotem 23,937 fps, będą one ztelecinowane razem z progresywnymi ramkami. Połowa "ramek" z przeplotem będzie wyświetlona w czasie wyświetlania trzech pól (3/59.94 sekund), co w rezultacie da migający "skok wstecz w czasie" efekt który kiepsko wygląda. Jeżeli próbowałeś tego musisz użyć filtru likwidującego przeplot jak lb lub l5.
To może być również zły pomysł dla progresywnego obrazu. Zrzuci to pary nieprzerwanych przeplecionych pól, dając w rezultacie nieciągłość która może być bardziej widoczna niż w drugim przypadku który pokazuje niektóre ramki dwa razy. Video z przeplotem 29,97 fps jest już trochę poszatkowane ponieważ powinno być wyświetlanie z prędkością 59,94 pól na sekundę, więc zduplikowane pola nie są aż tak widoczne.
W każdym przypadku najlepiej jest rozpatrywać materiał i to gdzie masz zamiar go wyświetlać. Jeśli video jest w 90% progresywne i nie masz zamiaru nigdy go wyświetlać na TV, powinieneś faworyzować progresywne podejście. Jeżeli jest tylko w połowie progresywne, będziesz pewnie chciał je kodować tak jakby było w całości z przeplotem.
Traktuj video jakby było z przeplotem. Niektóre klatki z progresywnych części będą musiały być zduplikowane, dając w rezultacie niemiarowe skoki. Znów filtry likwidujące przeplot mogą nieznacznie zdegradować progresywne części.
O kadrowaniu: Video na DVD jest przechowywane w formacie nazywanym YUV 4:2:0. W video YUV luma ("jasność") i chroma ("kolor") są przechowywane osobno. Ponieważ ludzkie oczy są mniej wrażliwe na kolor niż na jasność, w obrazie YUV 4:2:0 na cztery piksele luma przypada jeden piksel chroma. W progresywnym obrazie, każdy kwadrat czterech pikseli luma (dwa na każdym boku) ma jeden wspólny piksel chroma. Musisz wykadrować progresywne video YUV 4:2:0 do parzystych rozdzielczości, i używać parzystych przesunięć. Na przykład crop=716:380:2:26 jest OK ale crop=716:380:3:26 nie jest.
Kiedy masz do czynienia z YUV 4:2:0 z przeplotem, sytuacja jest trochę bardziej skomplikowana. Zamiast każdych czterech pikseli luma w ramce dzielących jeden piksel chroma, każde cztery piksele w polu dzielą jeden piksel chroma. Kiedy pola są przeplatane aby stworzyć ramkę, każda linia skanująca jest wysokości jednego piksela. Teraz, zamiast czterech pikseli luma w kwadracie, są dwa bok-przy-boku i dwa następne bok-przy-boku dwie linie skanujące niżej. Całe to zamieszanie powoduje, że pionowe rozmiary kadru i przesunięcia muszą być wielokrotnościami czterech. Wymiary poziome mogą pozostać parzyste.
Dla telecinowanego video, zalecam kadrować po procesie odwracania telecine. Kiedy video jest już progresywne wymagane jest tylko kadrowanie do parzystych wymiarów. Jeśli naprawdę potrzebujesz lekkiego przyspieszenia jakie da kadrowanie najpierw musisz kadrować pionowo do wielokrotności czterech, inaczej filtr odwracający telecine nie będzie otrzymywał prawidłowych danych.
Przy video z przeplotem (nie telecine), musisz zawsze kadrować pionowo do wielokrotności czwórki, chyba że używasz opcji -vf field przed kadrowaniem.
O parametrach i jakości kodowania: Tylko to, że poleciłem mbd=2 tutaj nie znaczy że nie może być on używany gdzie indziej. Razem z trell, mbd=2 jest jedną z dwóch najbardziej podnoszących jakość opcji biblioteki libavcodec, których zawsze powinieneś używać, chyba że spadek szybkości kodowania jest niedopuszczalny (np. kodowanie w czasie rzeczywistym). Biblioteka libavcodec ma wiele opcji umożliwiających zwiększenie jakości wyjściowej kodowania (i zmniejszyenie prędkości) ale ten temat jest poza zakresem tego dokumentu.