Przechwytuję wideo z kamery internetowej za pomocą następującego polecenia:
ffmpeg -r 30 -f v4l2 -video_size 160x120 -i /dev/video0 output.avi
Opcja -r wskazuje żądaną szybkość klatek. Jednak nie chodzi o to, że chcę 30 FPS, tylko o to, że inaczej nie działa poprawnie.
Bez klatek przechwytywanie jest bardzo błędne (wydaje mi się, że próbuje uchwycić za dużo, ale nie może nadążyć).
Przy liczbie klatek na sekundę ustawionej na 15, wyjściowy obraz wideo jest dwa razy dłuższy niż czas przechwytywania (rodzaj zwolnionego tempa).
Przy liczbie klatek na sekundę ustawionej na 30 wydaje się być w porządku.
Jak mogę się upewnić, że powinienem użyć 30 fps? Jeśli chciałbym uchwycić 15 fps, co powinienem zrobić, aby uzyskać prawidłowe odtwarzanie?
Informacje o mojej kamerze internetowej:
co@macbook2008:~$ v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.036s (27.500 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.044s (22.500 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.057s (17.500 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.080s (12.500 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
... and so on for other resolutions
Dziękuję Ci
v4l2-ctl --list-formats-ext
a dane wyjściowe wskazują obsługiwaną liczbę klatek na sekundę i rozdzielczość urządzenia źródłowego. Dosłownie oznacza, że 30 klatek na sekundę to najwyższa obsługiwana liczba.ffmpeg -r 27.5 -f v4l2 -video_size 160x120 -i /dev/video0 output.avi
ffmpeg -r 15 -f v4l2 -video_size 160x120 -i /dev/video0 output.avi
przez 15 sekund, mam avi 30 sekund.v4l2-ctl --list-formats-ext
Mówi więc , że mogę uchwycić przy 15 fps, ale nie będę w stanie grać z odpowiednią prędkością. Myślę, że to samo dotyczy 27,5 fps, ale na pewno nie jestem w stanie tego przetestować.