W Internecie nie ma żadnego wyjaśnienia, co to jest. Ludzie dużo o nich mówią. Chcę tylko wiedzieć, kim są i dlaczego są znaczące. Korzystając z opcji -video_track_timescale, w jaki sposób wyznaczyłbym numer? Czy to jest losowe? Czy powinno być 0?Co to jest skala czasu wideo, baza czasu lub znacznik czasu w ffmpeg?
Odpowiedz
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ę.
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? –
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
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