Создать миниатюру видео из источника видео в python

У меня есть URL-адрес видеофайла, и я хочу создать эскиз каждого из этого URL-адреса источника видео. Я использую Django.

Мое приложение делает это: -

1. Crawl the some webpage
2. Extract all the video link from it.
3. If there are thumbnails, get those thumbnails.
4. if not thumbnails:
    #here I need to generate video thumbnails from the
    #links I extracted in 2nd step.

Есть ли способ сделать это без загрузки полного видео и создания эскизов.

Если я загружу каждое видео, то будет много потерь пропускной способности и потребуется много времени.

Спасибо


person vaibhav1312    schedule 19.12.2014    source источник


Ответы (1)


Вы должны попробовать ffmpeg. sudo apt-get install ffmpeg

Я не тестировал это решение, но мне было просто интересно, поэтому я немного осмотрелся.

ffmpeg -ss 00:03:00 -i Другой мир.Пробуждение.avi -frames:v 1 out1.jpg

В этом примере будет создан один кадр изображения (out1.jpg) примерно на третьей минуте от начала фильма. Ввод будет анализироваться с использованием ключевых кадров, что очень быстро. Недостатком является то, что он также завершит поиск в каком-то ключевом кадре, не обязательно расположенном в указанное время (00:03:00), поэтому поиск не будет таким точным, как ожидалось.

Источник: Самый быстрый способ извлечения определенного кадра из видео (PHP/ffmpeg/что угодно)

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

ffmpeg -i "http://subdomain.cloudfront.net/video.mp4" -ss 00:00:10 -vframes 1 -f image2     
"image%03d.jpg"

Источник: Как для чтения удаленного видео на Amazon S3 с помощью ffmpeg

Надеюсь, поможет. Сообщите нам о результатах.

person martincpt    schedule 19.12.2014
comment
Как я могу назвать это с помощью подпроцесса, я имею в виду, что вызов подпроцесса прост, но я горю ошибкой командной строки.SyntaxError: неверный синтаксис - person vaibhav1312; 19.12.2014
comment
Пробовали запускать в терминале? Сначала я бы начал с этого, а затем реализовал бы его в django после того, как все заработало, как ожидалось. - person martincpt; 19.12.2014
comment
Однако, если вы хотите запустить команду с подпроцессом: subprocess.call('КОМАНДНАЯ СТРОК ЗДЕСЬ', shell=True) Обратите внимание, что официальная документация Python содержит предупреждение об использовании аргумента shell=True. Вызов системной оболочки с shell=True может быть угрозой безопасности в сочетании с ненадежным вводом - person martincpt; 19.12.2014