Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os, subprocess, json, shutil
- PATH_TO = '/path/to/files/' # директория с видео
- NUMBER_OF_FRAMES = 20 # количество скриншотов
- def create_snapshots(filename):
- print('Create snapshot to '+filename)
- #get video duration from FFprobe
- data = subprocess.Popen(
- ["ffprobe", "-v", "error", "-print_format", "json", "-show_entries", "format=duration", PATH_TO+filename],
- stdout=subprocess.PIPE
- ).communicate()
- duration = json.loads(data[0].decode("utf-8"))['format']['duration']
- print('duration in sec: '+str(duration))
- now = round(float(duration))
- print('duration in format: '+str(now // 3600) + ':' + str(now // 60 % 60) + ':' + str(now % 60))
- interval = round(float(duration)/NUMBER_OF_FRAMES)-1
- print('interval: '+str(interval))
- #make snapshots folder
- tmp_v = PATH_TO+str(filename)+'s'
- if not os.path.exists(tmp_v):
- os.mkdir(tmp_v)
- for i in range(NUMBER_OF_FRAMES):
- now = interval*(i+1)
- time = str(now // 3600) + ':' + str(now // 60 % 60) + ':' + str(now % 60)
- FFMPEG_SNAPSHOT_COMMAND = 'ffmpeg -ss '+time+' -i '+PATH_TO+filename+' -vframes 1 -q:v 2 '+PATH_TO+filename+'s/'+str(i+1)+'.jpg -y'
- try:
- os.system(FFMPEG_SNAPSHOT_COMMAND)
- print('Build '+str(i+1)+'.jpg: OK')
- except:
- print('Build '+str(i+1)+'.jpg: ERROR')
Add Comment
Please, Sign In to add comment