-
Notifications
You must be signed in to change notification settings - Fork 0
/
process_clips.py
60 lines (43 loc) · 1.76 KB
/
process_clips.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from glob import glob
import subprocess
import os.path
from os import path
from pathlib import Path
import time
#process_clips.py - converts video clips to image stills with ffmpeg
#the lock file mechanism can be changed to suit system/performance
time_sleep_file = 1 #was 4, sleep can be set lower depending on system performance
def proc_common(cmd_str):
proc = subprocess.Popen(cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT )
stdout, stderr = proc.communicate()
print (stdout)
print ("\n")
proc.wait()
print (proc.returncode)
while True:
if len(os.listdir("video_fetched") ) == 0:
print ('no video files to process');
time.sleep(10)
continue
#run through files
allFiles = sorted(glob("video_fetched/*.mp4"))
for file in allFiles:
print (file)
filename = file.split('_')
#print (filename)
while path.exists("lock_tf.txt"):
time.sleep(2)
Path('lock_tf.txt').touch()
#get jpg image stils from video, fps=1/60 is 1 for every 1 minute
cmd_str = 'ffmpeg -i '+file+' -vf fps=1/60 thumbs/'+file.split('/')[-1].split('.')[0]+'_thumb%04d.jpg -hide_banner'
print(cmd_str)
proc_common(cmd_str)
#optional - keep fetched videos in done folder
#cmd_str = 'mv video_fetched/'+file.split('/')[-1]+' video_fetched/done/'+file.split('/')[-1]
#proc_common(cmd_str)
#remove fetched videos - these could optionally be moved someplace else depending on available storage, etc
os.remove("video_fetched/"+file.split('/')[-1])
#print ("begin remove lock_tf.txt")
os.remove("lock_tf.txt")
#print ("end remove lock_tf.txt")
time.sleep(time_sleep_file);