Я пытаюсь собрать данные для проекта обработки данных и загружаю кадры из онлайн-видео с помощью ffmpeg. Я хочу загрузить подмножество кадров в видео, не требуя точной информации, единственное требование - чтобы они были разумно разнесены друг от друга.
я пытался
ffmpeg -i "http://www.somevideo.com" -r 1 -f image2 "image%06d.jpg"
а также
ffmpeg -i "http://www.somevideo.com" -vf fps=1 "image%06d.jpg"
и в итоге нашел следующий метод
ffmpeg -ss offset1 -i "http://www.somevideo.com" -ss offset2 -i "http://www.somevideo.com" -map 0:v -frames:v 10 -start_number 0 "image%06d.jpg" -map 1:v -frames:v 10 -start_number 10 "image%06d.jpg"
и все работают, но работают медленно. Я нашел хак, где я запускаю следующую команду несколько раз, с разными смещениями, и она кажется самой быстрой (где каждая команда ffmpeg выполняется параллельно многопоточно)
ffmpeg -ss offset -i "http://www.somevideo.com" -vframes frames_per_fragment -an -start_number start_index "image%06d.jpg"
это примерно на 25% быстрее, чем в предыдущем методе
Есть ли более быстрый способ сделать это? Проблема в том, что загрузка по сети является узким местом, поэтому я хочу загружать только те кадры, которые мне нужны. Я хочу загружать видео / кадры оптом, поэтому любое улучшение скорости будет полезно.