Программно создать миниатюру CAP для небольшого видео - PullRequest
7 голосов
/ 26 января 2011

Как Python может сделать простую шапку для видео.

Ideia: сделайте 9 снимков за 9 даже размещенных (на временной шкале) времен и сместите затем в JGP

Как мне это сделать?

PIL - единственный путь? (не будет легко делать то, что я хочу, верно?)

Нет ли какого-либо модуля (Python видит большие модели для всего, или мне не повезло)

Пример:

Movie lenght = 10 min
T1= snapshot of 1 min
T2= snapshot of 2 min
......
T9= snapshot of 9 min
   |   |
 T1| T2| T3
---+---+---
 T4| T5| T6
---+---+---
 T7| T8| T9
   |   |

1 Ответ

7 голосов
/ 26 января 2011

Это быстрое изменение того, что я сделал некоторое время назад, используя ffmpeg для извлечения кадров и PIL для создания полного изображения большого пальца.

import os, sys
from PIL import Image

# Use "ffmpeg -i <videofile>" to get total length by parsing the error message
chout, chin, cherr = os.popen3("ffmpeg -i %s" % sys.argv[1])
out = cherr.read()
dp = out.index("Duration: ")
duration = out[dp+10:dp+out[dp:].index(",")]
hh, mm, ss = map(float, duration.split(":"))
total = (hh*60 + mm)*60 + ss

# Use "ffmpeg -i <videofile> -ss <start> frame<nn>.png" to extract 9 frames
for i in xrange(9):
    t = (i + 1) * total / 10
    os.system("ffmpeg -i %s -ss %0.3fs frame%i.png" % (sys.argv[1], t, i))

# Make a full 3x3 image by pasting the snapshots
full = None
for y in xrange(3):
    for x in xrange(3):
        img = Image.open("frame%i.png" % (y*3+x))
        w, h = img.size
        if full is None:
            full = Image.new("RGB", (w*3, h*3))
        full.paste(img, (x*w, y*h))

# Save result
full.save("thumbs.png")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...