Я использую ffmpeg для разделения видео по кадрам. Для видео со скоростью 25 кадров в секунду я ожидал бы, что в нем будет показан кадр 0 для 40 мс, а затем будет показан кадр 1 для 40 мс и т. Д. Однако, когда я использую ffmepg для анализа видео, это не то, что я получаю.
Я вытащил кадры из видео, используя следующие команды:
ffmpeg -i original.mp4 -ss 00:00:00.000 -vframes 1 0.000.png
ffmpeg -i original.mp4 -ss 00:00:00.001 -vframes 1 0.001.png
ffmpeg -i original.mp4 -ss 00:00:00.040 -vframes 1 0.040.png
ffmpeg -i original.mp4 -ss 00:00:00.041 -vframes 1 0.041.png
В этом случае я бы ожидал, что 0.000.png
и 0.001.png
будут одним и тем же кадром, но в результате pngs будут другими. Однако, с другой стороны, 0.001.png
и 0.040.png
- это один и тот же кадр, тогда как 0.040.png
и 0.041.png
- это разные кадры. Кажется, что кадр 0.000.png
отображается только в течение 1 мс. Я проверял это на нескольких разных видео, с постоянными результатами. Кто-нибудь может объяснить, почему это так или почему мои ожидания потенциально неверны?
В качестве примечания: при загрузке того же видео в тег HTML5 в браузерах при воспроизведении видео первый кадр отображается в течение 64 миллисекунд, а все остальные кадры - в течение 40 миллисекунд. Я могу проверить это, сравнив кадры для следующих команд:
player.currentTime = 0
player.currentTime = .063 // same frame as 0
player.currentTime = .064 // different frame than .063
player.currentTime = .103 // same frame as .064
player.currentTime = .104 // different frame than .103
Это также не соответствует ожиданиям и делает сопоставление кадров / времени для видео между видео ffmpeg и html5 еще более раздражающим. Кто-нибудь знает, что здесь происходит?
Если это полезно, вот метаданные из видео:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'original.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.17.101
Duration: 01:36:16.20, start: 0.000000, bitrate: 2301 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2200 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)
Metadata:
handler_name : SoundHandler