Dlaczego ffprobe zgłasza niepoprawną liczbę ramek?

3

Mam mały plik wideo, który ffprobe opisuje jako: -

Input #0, avi, from 'sample.avi': 
Metadata: 
encoder : Lavf55.12.100 
Duration: 00:00:35.00, start: 0.000000, bitrate: 546 kb/s 
Stream #0:0: Video: msmpeg4v3 (MP43 / 0x3334504D), yuv420p, 320x240, 
             506 kb/s, 200 fps, 200 tbr, 200 tbn, 200 tbc 

Ponieważ wideo trwa 35 sekund. długi i przy częstotliwości odświeżania 200 kl./s, spodziewam się, że w filmie będzie (35 x 200) = 7000 klatek.

Jeśli użyję ffmpeg do faktycznego wyodrębnienia obrazów klatki z wideo, faktycznie otrzymam 6999 obrazów (chyba wystarczająco blisko). Polecenie, którego tu używam, to: -

c:\> ffmpeg -i sample.avi  -f image2 -c:v png Img%%04d.png

Uwaga: „%%” jest wymagany, gdy polecenie jest uruchamiane z interfejsu CLI WinXP

Jednak za pomocą polecenia: -

c:\> ffprobe -select_streams v -show_frames sample.avi > frames.lis 

i zliczając liczbę elementów [FRAME] w ramkach. ris daje liczbę ramek 1023, a nie 7000.

Jakieś wyjaśnienie?

Oto link do bardzo podobnego pliku, który zachowuje się w ten sam sposób (~ 7 MB):

http://www.filedropper.com/sample_65

Kliknij lewym przyciskiem myszy obraz „Pobierz ten plik” na stronie.

Używam 17APR2014 statycznej wersji Win32 ffmpeg 'ffprobe' pod WinXP-SP3.

Jeśli jest inny sposób, staram się przede wszystkim zbudować tabelę „numer klatki” w porównaniu z „czasem” dla serii plików wideo do użycia w innej aplikacji.

Dzięki.

Skeeve
źródło
Czy możesz udostępnić próbkę wideo? Pamiętaj, że czas trwania nie zawsze musi być dokładny.
slhck,
Dodałem link do przykładowego pliku .avi w poście.
Skeeve
W przypadku innych osób z tym samym problemem @Skeeve uzyskał odpowiedzi na liście dyskusyjnej FFmpeg: ffmpeg.org/pipermail/ffmpeg-user/2014-May/021318.html Nie jestem pewien, czy to całkowicie rozwiązuje mój problem.
Gauthier,

Odpowiedzi:

1

Czy istnieje przyczyna 1023, która nie może być poprawna? Fps, o którym mówisz, to informacje w nagłówku, więc może łatwo być niepoprawny.

Czy na wyjściu png jest dużo zduplikowanych ramek? Ffmpeg może wyświadczyć ci przysługę i wyświetlać skopiowane klatki, aby pasowały do ​​zgłaszanego fps i czasu trwania.

Używanie ffprobe jest moim zalecanym rozwiązaniem. Trudno być pewnym w 100% przypadków, chyba że faktycznie dekodujesz klatki i liczysz. Tak więc użycie -count_frames lub -show_frames powinno dać ci numer, którego szukasz.

Uwaga: Nie ma gwarancji, że podany czas trwania jest dokładny.

dstob
źródło