Делаем видео фрагмент снова пригодным для использования - PullRequest
0 голосов
/ 12 ноября 2018

Я собираю набор данных изображений для проекта машинного обучения, и самый простой способ собрать тысячи соответствующих изображений - извлечь кадры из видео.

Однако, чтобы сэкономить время и учитывая медленную пропускную способность, было бы наиболее эффективно, если бы я мог загружать сегменты видео и обрабатывать их таким образом.

Я могу сделать это легко в командной строке через

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

Я ищу способ обработать эти фрагменты файлов. Технически у меня есть доступ ко всему файлу, и я могу загрузить любую его часть по мере необходимости (например, метаданные в начале?), Я просто хочу избежать загрузки всего файла.

В каком направлении мне идти? Я не понимаю, как работают видеофайлы, но я хочу испачкать руки, если понадобится.

Итак, мне нужно получить случайно выбранный фрагмент видео, который можно обрабатывать (т.е. извлекать кадры).

1 Ответ

0 голосов
/ 13 ноября 2018

ffmpeg должен поддерживать запросы диапазона байтов.Таким образом, вы должны быть в состоянии сделать что-то просто перечислить это:

...