2017-04-10 68 views

Odpowiedz

13

Nowoczesne pojemniki regulują komponent czasu prezentacji ramek wideo (i audio) przy użyciu znaczników czasu, a nie liczby klatek na sekundę. Zamiast nagrywać wideo jako 25 klatek na sekundę, co sugeruje, że każda klatka powinna być narysowana w odstępie 0,04 sekundy, przechowuje znacznik czasu dla każdej ramki, np.

Frame  pts_time 
    0   0.00 
    1   0.04 
    2   0.08 
    3   0.12 
    ... 

Dla dokładnego rozwiązania tych wartości czasowych podstawy czasu jest wykorzystywany to jednostce czasu, która reprezentuje jeden tick zegara, tak jak to było. Tak więc, podstawa czasu 1/75 reprezentuje 1/75 sekundy. Tample są następnie określane w odniesieniu do tej podstawy czasowej. Skala czasowa jest po prostu odwrotnością podstawy czasu. FFmpeg pokazuje czas w postaci wartości tbn w odczycie strumienia.

Timebase = 1/75; Timescale = 75 
Frame  pts   pts_time 
    0   0   0 x 1/75 = 0.00 
    1   3   3 x 1/75 = 0.04 
    2   6   6 x 1/75 = 0.08 
    3   9   9 x 1/75 = 0.12 
    ... 

Ta metoda regulacji czasu umożliwia wyświetlanie wideo ze zmienną liczbą klatek na sekundę.

+0

Dziękuję bardzo, twoje wyjaśnienie bardzo mi pomogło! ale w drugiej części wybrałeś numer 0, 3, 6 i 9 dla PTS i podstawy czasu 1/75. 1) Czy mogę wybrać dowolną metodę PTS? jak suma 1000 lub suma 1? 2) Czy wybrałeś 1/75, ponieważ uzupełnia 25/1 FPS? Czy mogę też wybrać dowolną liczbę? jak 1000 czy 1/90000, czy powinno to być coś związanego z FPS? dlaczego licznik/mianownik, a nie prosta liczba? Jakie powody powinienem wziąć pod te numery? –

+0

Podstawą czasu może być dowolna liczba, która przynajmniej respektuje FPS, tj. Dla 25 fps, powinna wynosić co najmniej 1/25. Jeśli jest to 1/15, to w zależności od multipleksera, ffmpeg albo opuści klatki, albo zmieni klatek na sekundę na 15. Liczba klatek na sekundę może być ułamkowa, a więc liczba wymierna. Podstawy czasu są racjonalne, ponieważ reprezentują ułamki sekundy. – Mulvya

+2

Powodem typowego wykorzystania 90 000 jako wspólnej podstawy obliczeń jest to, że jest to liczba, która jest podzielna przez 24, przez 25 i przez 30 (w każdym przypadku wynik jest liczbą całkowitą - nie ma reszty, dziesiętnego lub frakcja), zatem matematyka jest równie odpowiednia do obsługi 24 klatek na sekundę, 25 fps i 30 fps. – Ed999