собственно суть проблемы не в том как получить скриншоты, а в том чтобы получить скриншоты из видеофайла по какому-либо url где лежит большая(!) видюха, тоесть загружать на сервак огромный файл не вариант ибо всё повиснит.скрины получаю посредством FFMPEG. Вот выложу код, кому-нибудь пригодиться:
def screen(request):
from subprocess import Popen, PIPE
import os, datetime
video = "бла-бла/vid.flv" #(вот тут как раз и вставляю url видюхи, работает лишь если видюха маленькая)
screen_dir = '/screens'
screen_name = '%s.jpg'
screen_size = '1280*720'
screen_count = 3
def get_duration(video):
p = Popen(['ffmpeg', "-i", video], stdout=PIPE, stderr=PIPE)
out,err = p.communicate()
out = out+err
lines = out.split("\n")
dur = None
for line in lines:
match = re.search("^[ ]*Duration: ([0-9]+):([0-9]+):([0-9]+)\\.([0-9]+),", line)
if match:
dur = int(match.group(1)) * 3600 + int(match.group(2)) * 60 \
+ int(match.group(3)) + float(match.group(4)) / 100
return dur
def make_screens(video, duration):
part = duration / screen_count
for i in range(screen_count):
l = ['ffmpeg', "-i", video, '-f', 'image2', '-vframes', '1', '-ss', str(part*i),
'-s', screen_size, '%s/%s' % (screen_dir, screen_name % i)]
p = Popen(l, stdout=PIPE, stderr=PIPE)
out,err = p.communicate()
return True
duration = get_duration(video)
make_screens(video, duration)
как мне сделать чтобы с огромных файлов скринить?? может каким-то макаром копировать на сервак кусок видюхи (допустим 5мб, чтоб сервер не перегружать) и уже из него делать скрины?...вот команда вырезающая кусок : ffmpeg -i video.avi -ss 00:00:50 -t 00:1:12 output.avi однако не уверен что она подойдет, в общем прошу помощи