Я собираю набор данных изображений для проекта машинного обучения, и самый простой способ собрать тысячи соответствующих изображений - извлечь кадры из видео.
Однако, чтобы сэкономить время и учитывая медленную пропускную способность, было бы наиболее эффективно, если бы я мог загружать сегменты видео и обрабатывать их таким образом.
Я могу сделать это легко в командной строке через
curl "url" -o "path/to/outputfile.mp4" -r "startbyte-endbyte"
И я обычно могу разделить видеофайл на отдельные изображения в формате JPEG с помощью
ffmpeg -i "path/to/video_file.mp4" "path/to/output/image%06d.jpg"
Однако проблема, с которой я столкнулся, заключается в том, что ffmpeg не нравится, когда я даю ему фрагмент видео, и выдает следующую ошибку
Invalid data found when processing input
Далее, попытка использовать инструмент Untrunc выдает следующую ошибку
Failed to parse atoms in truncated file
Я ищу способ обработать эти фрагменты файлов. Технически у меня есть доступ ко всему файлу, и я могу загрузить любую его часть по мере необходимости (например, метаданные в начале?), Я просто хочу избежать загрузки всего файла.
В каком направлении мне идти? Я не понимаю, как работают видеофайлы, но я хочу испачкать руки, если понадобится.
Итак, мне нужно получить случайно выбранный фрагмент видео, который можно обрабатывать (т.е. извлекать кадры).