#1 2006-11-09 17:57:47

waski_jestem
Użytkownik
Skąd: wawa
Dołączył: 2005-03-20

przebiegi w kodowaniu??

czy ktos moglby mnie oswiecic o co chodzi i jak to sie je?? Rozumiem, ze kodowanie 1 przebiegowe jest gorsze niz 2. Ale powiem szczerze, ze wczoraj wrzucilem 1-wszy przebieg kodowania z wmv do h264 i pliczek wyszedl mi kilkaset kilo, myslalem ze to blad wiec go wykasowalem. Ale dzisiaj przeczytalem na ANFO, ze wlasnie tak powinno byc. Moze ktos juz to gdzies wyjasnial, to bylbym wdzieczny za podanie jakiegos odnosnika.


gdyby tylko czlowiek mial troche wiecej czasu i lepiej znak angielski [z 2 mozna cos zrobic, z 1?]

Offline

#2 2006-11-09 18:21:14

AceMan
Użytkownik
Skąd: Dąbrowa Górnicza
Dołączył: przed 2004-07-25

Odp: przebiegi w kodowaniu??

Z tego co wiem, to 2-pass polega na tym, że podczas pierwszego przebiegu przeprowadzana jest analiza materiału i zapisywany jest log z różnymi statsami itp., z którego potem korzysta 2pass :]

Ale niech się wypowiedzą experci jezor

Offline

#3 2006-11-09 18:49:58

Hatake
Użytkownik
Skąd: Jastrzębie-Zdrój
Dołączył: 2004-12-15

Odp: przebiegi w kodowaniu??

AceMan napisał:

Z tego co wiem, to 2-pass polega na tym, że podczas pierwszego przebiegu przeprowadzana jest analiza materiału i zapisywany jest log z różnymi statsami itp., z którego potem korzysta 2pass :]

Ale niech się wypowiedzą experci jezor

no ta... tylko, że ja w ogóle nie moge na 2 pass kodować, bo błąd loga mi wykakuje xD, a nie ma skąd wziać xD

Offline

#4 2006-11-09 21:00:00

s0n1c
Użytkownik
Skąd: Tokyo-3
Dołączył: 2005-09-24

Odp: przebiegi w kodowaniu??

Jak juz AceMan napisale jest to bodajze matryca do 2 przebiegu.


KiXBu

Offline

#5 2006-11-09 21:31:59

waski_jestem
Użytkownik
Skąd: wawa
Dołączył: 2005-03-20

Odp: przebiegi w kodowaniu??

no dobra, a czy ktos oswiecil by mnie jakto wplywa na jakosc, wielkosc i w ogole jak to sie robi?? I czy warto?


gdyby tylko czlowiek mial troche wiecej czasu i lepiej znak angielski [z 2 mozna cos zrobic, z 1?]

Offline

#6 2006-11-09 21:53:31

m_jay
Użytkownik
Skąd: Kraków
Dołączył: 2004-11-27

Odp: przebiegi w kodowaniu??

waski_jestem napisał:

no dobra, a czy ktos oswiecil by mnie jakto wplywa na jakosc, wielkosc i w ogole jak to sie robi?? I czy warto?

No to jest taki Robin Hood jezor. Bardziej wymagajace sceny dostaja wiecej bitow, kosztem scen mniej wymagajacych. I właśnie w trakcie pierwszego przebiegu dochodzi do analizy zapotrzebowań na bity. Przy kodowaniu jedno przebiegowym ustawia sie bitrate stale w funkcji czasu. Przy dwu przebiegowym ta wartosc sie zmienia a ty ustawiasz np sredni bitrate (mozna tez rozmiar pliku wynikowegoo podac) zeby Robin Hood wiedzial czym dysponuje oczkod.


WoodenJesus.png

Offline

#7 2006-11-09 22:50:28

Hatake
Użytkownik
Skąd: Jastrzębie-Zdrój
Dołączył: 2004-12-15

Odp: przebiegi w kodowaniu??

m_jay a skąd wziąć plik *.stats, skoro na 2 przebiegowym, xvid mi nawet odpalić nie chce:D tu screeny z błędami:


1hg6.png

a potem odrazu to:

2gs8.png

rzecz jasna wiem, co te błędy znaczą z angielskiego, ale i tak dupa^^

EDIT: s0n1c - ale to jak? najpierw robisz 2 pass 1 st a potem 2 pass 2 nd? bo pierwszy niby ten statsfile robi, a drugi ma kodować, tak? no tylko, że na 2 pass 1 st i tak robi mi plik avi wiec nie rozumiem ;/

Ostatnio edytowany przez Hatake (2006-11-09 22:58:58)

Offline

#8 2006-11-09 22:56:45

s0n1c
Użytkownik
Skąd: Tokyo-3
Dołączył: 2005-09-24

Odp: przebiegi w kodowaniu??

A ustawiasz "2 pass - 1st pass" ??


KiXBu

Offline

#9 2006-11-10 00:05:46

waski_jestem
Użytkownik
Skąd: wawa
Dołączył: 2005-03-20

Odp: przebiegi w kodowaniu??

no dobra, wiec wybieram sobie w ustawieniach "multipass 1st pass" dostaje *.stat i co mam z nim zrobic dalej?? moze by ktos zrobil jakiegos tutka.


gdyby tylko czlowiek mial troche wiecej czasu i lepiej znak angielski [z 2 mozna cos zrobic, z 1?]

Offline

#10 2006-11-10 00:36:06

songoku
Użytkownik
Skąd: Bydgoszcz
Dołączył: 2005-02-07

Odp: przebiegi w kodowaniu??

Ustawiasz najpierw 1 st pass i cala konf. do niego, dodajesz zadanie do wykonania, pozniej ustawiasz 2 pass i konfig do niego, dodajesz do wykonania. Na samym koncu wchodzisz do zakladki gdzie znajduja sie wszystkie zadania, ktore czekaja i wlaczasz je. Pierwszy przebieg jak sie zrobi to pliki .log (statystyki) powinien automatycznie drugi przebieg go znalezc i z niego skorzystac (jesli nie zmieniales sciezki dostepu tego pliku przy drugim przebiegu).

Offline

#11 2006-11-10 00:49:04

Hatake
Użytkownik
Skąd: Jastrzębie-Zdrój
Dołączył: 2004-12-15

Odp: przebiegi w kodowaniu??

ale co? w 2 pass 1 st pass ma mi skodować najpierw ta? bo nie wiem co robię źle, ale mi koduje;/ a po skończonym kodowaniu da mi plik stats tak?

Offline

#12 2006-11-10 01:16:52

Suchy
Użytkownik
Skąd: Łódź (GTW)
Dołączył: przed 2004-07-25

Odp: przebiegi w kodowaniu??

Songoku: niekoniecznie cały konf, bo pewne ustawienia i tak nie wpływają na zawartość i szybkość pierwszego przebiegu. Jednakże są tez ustawienia, których nie powinno się zmieniać (czyt. powinny być takie sam dla obu przebiegów)

Hatake
Pierw skompresuj sobei film tak jakbyś go zwyczajnie kompresował, ale wybierz 1st pass. zaraz potem powtórz całość, ale wybierz 2nd pass. I to wszystko.

Waski_jestem:
Nie koniecznie gorsze. Często kodowanie na kwant 2-3 daje podobne efekty jak typowo dobrane kodowanie dwu przebiegowe, a jest szybsze.

Sprawa wygląda tak:

Przy kompresji jednoprzebiegowej podajesz albo średni bitrate, albo kwantyzator. W niektórych przypadkach podaje się % jakościowy lub też stały bitrate. Kompresja ze stałym bitrate jest najmneij efektywna i praktycznie już nie spotykana (w sumie została zachowana w niektórych kodekach tylko na potrzeby streamingu). Jak więc widać wszystkie pozostałe tryby są to VBR (zmienny bitrate), czyli każda klatka ma inny bitrate. Dany materiał jest tak kompresowany by zachować ustawione kryterium (średni bitrate, kwantyzator nadrzędny lub też % jakościowy). Nie mniej nie jesteśmy nigdy wstanie przewidzieć jaki rozmiar końcowy będzie miał plik wideo (nie dotyczy sytuacji z stałym bitrate).

Innaczej troszkę to jest w przupadku kompresji 2przebiegowej.

W pierwszym przebiegu (w mocnym uproszczeniu) wykonywana jest symulacja kompresji na kwantyzatorze 2, ale zamiast kompresowania materiału, zbierane są informacje o tym jaki kwantyzator, jaki typ, itp będzie przypisany danej klatce.

W następnym przebiegu kompresowany jest już materiał z wykorzystaniem tych danych. Przed drugim przebiegiem kompresji ustalamy sobie rozmiar lub średni bitrate. Jedno można wyliczyć na podstawie drugiego: mając bitrate, FPS i czas możesz wyliczyć rozmiar, a mając rozmiar i czas i FPS możesz wyliczyć bitrate - dlatego napisałem "rozmiar lub średni bitrate". Algorytm tak czy siak więc "wie" jaka ma być średnia ilość bitów do opisu klatki (a konkretniej to do opisu 1 sekundy klatek, ale znająć FPS można policzyć ile ma być do opisu 1 klatki). Teraz klatki o wyższych kwantyzatorach będą miały mniej bitów od tej średniej wartości, a klatki o niższych - wiecej. Pamiętajcie, że całość ma być tak skompresowana aby otrzymać podany przez nas rozmiar/średni bitrate. Do tego trzeba wiedzieć ile jest klatek o niskich kwantyzatorach, a ile o wysokich (by wiedzieć, ile zyskaliśmy na zapisywaniu klatek z niższym bitrate i ile tym samym możemy poświęcić na zapisanie tych z większa iloscią bitów). I w tym momencie właśnie przydają nam się statystyki zebrane w pierwszym przebiegu.

Dzięki temu, 2 przebiegi pozwalają na taką kompresję, aby otrzymać rządany rozmiar pliku po kompresji. Ponad to kompresja dwubrzebiegowa pozwala lepiej rozdysponować bity do opisania klatek. Dzięki temu możemy uzyskać optymalny wygląd materiału przy danym rozmiarze pliku.


Podsumowując:
2 przebiegi - możesz ustalić wielkość; optymalne rozdysponowanie bitów
1 przebieg - możesz ustalić jakość; szybsze kodowanie


W całym wątku padło też hasło matryca. A i owszem, można by rzeczdane są zapisywane w postaci matrycowej, lecz wazne by nie mylić tego z matrycą kwantyzacji (owe MPEG, MPEG-Custom i H264 widoczne w ustawieniach XviDa). Ta ostatnia jest to matryca na podstawie której algorytm ustala wynikowo ile bitów przydzielić na dany rodzaj bloku. Innymi słowy, iloma bitami opisać blok o dużej ilości szczegółów (skrajnie - kompletny szum), iloma bitami ten o małej ilości szczegółów (skrajnie - cały głądki obszar), oraz iloma bitami bloki o stanie pośrednim pomiędzy wcześniejszymi dwoma.

Zastanawiać może też kwestia kwantyzatorów. Otóż każda klatka ma wyznaczany swój kwantyzator. Jest on wyliczany m.in. na podstawie rodzaju klatki oraz ilości różnic pomiędzy klatkami sąsiadującymi (innaczej można powiedzieć, że na podstawie ilości przesunięć opisanych wektorami). I tutaj chcę rozbić przy okazji pewien mit. Nie zawsze większy kwantyzator oznacza złą jakość. Oznacza mniejsza ilość bitów przydzieloną do opisania klatki, ale nie koniecznie musi z tego wynikać gorsza jakość. Oczywiście że jeśli tą samą klatkę zapiszemy z kwantyzatorem 2 i z kwantyzatorem 31 to różnicę zauwazy nawet ślepy, ale już dwie rózne klatki zapisane z kwantyzatorem np 10 mogą się dość znacząco różnić jakościowo.

I to w sumie tyle.
Mam nadzieję, że ktoś zrozumiał smile_big

P.S.
No i zdradziłem kawałek wstępu do kodowania na PF v2.1 jezor

Ostatnio edytowany przez Suchy (2006-11-10 01:24:28)

Offline

#13 2006-11-10 01:31:22

fuchikoma
Użytkownik
Dołączył: 2006-04-25

Odp: przebiegi w kodowaniu??

świetny i pomocny post ~Suchy, dzięki!

szkoda tylko, że kodowanie trwa dwukrotnie (?) dłużej smutny

Offline

#14 2006-11-10 01:33:44

s0n1c
Użytkownik
Skąd: Tokyo-3
Dołączył: 2005-09-24

Odp: przebiegi w kodowaniu??

Rasumujac www.google.pl.

A tu 2 fajne zdakna ktore mi sie przypomnialy z w/w tematem.
"Zmienna macierz kwantyzacji tlumienia dyskretnej transformaty cosinusowej"
and
"funkcja porownywania wektorow przesuniec makroblokow, jako suma bezwzglednych roznic przeksztalconych transformata Hadamarda".
smile_big

A kodowanie nie trwa 2x dluzej - zalezy od zlozonosci scen, wybranych algorytmow, stopnia kompresji, itp, itd.


KiXBu

Offline

#15 2006-11-10 01:38:05

songoku
Użytkownik
Skąd: Bydgoszcz
Dołączył: 2005-02-07

Odp: przebiegi w kodowaniu??

Przykładowy krotki opis kodowania w VDM za pomoca DivX:
1. Wczytujesz plik (avs, avi, itd.) mysle, ze sprawy ripowania, laczenia vobow, skalowania. moge pominac, bo chodzi wam o samo kodowanie :]
2. W VDM zakladak Video - Compression - DivX - Configure
3. Osobiscie mam DivX 5.2.1 (wersja 6.0 lezy na dysku niezainst. jezor) W konf. w Generals - Encode Performance - wybieramy szybkosc kodowania (im wolniej tym lepsza jakosc, ale na standardzie w dwóch przebiegach powinno wystarczyc).
4. Bitrate - Average Bitrate - wpisujemy sredni bitrate dla filmu (osobiscie bitrate ustalam za pomoca GordianKnota).
5. Encode mode - ustawiamy Multipass, 1-pass
6. Multipass encoding files - powinno byc odznaczone write log file, a ponizej podajemy sciezke dost. gdzie nam ma zapisac statystyki.
7. Pozniej ustawiamy zakladke VIDEO (podajemy rozdzielczosc obrazu, co ile ma byc wstawiana klatka kluczowa itd.)
(Jesli beda potrzebne komus opisy tamtych pozycji, to postaram sie je wyjasnic, ale innym razem, bo juz dzis mi sie nie chce jezor)
8. Wciskamy OK, pozniej znowu OK.
9. Nastepnie w VDM przechodzimy do zakladki FILE - Save As (wpisujemy nazwe pliku i wyznaczamy sciezke dost., jako typ wybieramy np. .avi), zaznaczamy pola:
a) Don't run this job now...
b) Video (na samym dole) powinno byc Video mode - Full processing mode, Compression - DivX
10. Powtarzamy kroki z pkt. 2.
11. W Generals ustawiamy to samo co w pkt. 3 i 4
12. Encode mode - ustawiamy Multipass, Nth-pass (mozna zrobic wiecej przebiegow niz 2 wtedy przy 3. razie postepujemy wedlug krokow z drugiego przebiegu).
13. Bitrate modulation - ustawiamy bitrate dla scen dynamicznych i statycznych (osobiscie zostawiam na "0")
14. Multipass encoding files - powinno byc odznaczone read log file, mozna tez odchaczyc update log file - wtedy przy drugim przebiegu znow bedzie tworzyl statystyki, ale juz po weryfikacji przebiegu pierwszego (pierwszy przebieg jest tworzony dluzej niz drugi, lae jesli uzyje sie update logu to jego czas pracy rowniez sie wydluzy). Sciezke dost. oczywiscie musi byc taka sama jak w pkt. 6.
15. dane z pkt. 7 przy drugim przebiegu zostaja bez zmian
16. Powtarzamy czynnosci z pkt. 8 i 9 (podajemy tylko inna nazwe dla pliku)
17. Przechodzimy w VDM do File - Job Control - wciskamy Start (czekamy kilka minut - godzinek w zaleznosci od zlozonosci i dlugosci kompresowanego materialu smile ).
18. Odtwarzamy plik (ten ktory jest wynikowym drugiego przebiegu) i cieszymy sie filmem.

Krotki i troche prymitywny opisik, robiony na szybko ze wzgledu na zmeczenie (~Hatake i tak dzis zajrzy, bo pewnie znow polozy sie po 2 jezor).
Jak ktos by jeszcze cos potrzebowal, a bede umial pomoc, to niech napisze.

Offline

#16 2006-11-10 01:45:42

Suchy
Użytkownik
Skąd: Łódź (GTW)
Dołączył: przed 2004-07-25

Odp: przebiegi w kodowaniu??

s0n1c napisał:

Rasumujac "Zmienna macierz kwantyzacji tlumienia dyskretnej transformaty cosinusowej"

Błąd smile_big

s0n1c napisał:

"funkcja porownywania wektorow przesuniec makroblokow, jako suma bezwzglednych roznic przeksztalconych transformata Hadamarda"

Poprawnie smile_big

Offline

Stopka forum

© Animesub.info 2024