mirror of
https://github.com/ivuorinen/aeonview.git
synced 2026-01-26 03:34:06 +00:00
Worked on video-mode, should work now
This commit is contained in:
64
aeonview.py
64
aeonview.py
@@ -20,14 +20,14 @@ def aeonview(argv):
|
||||
"Defaults to 5 characters from md5 hash of the webcam url.",
|
||||
type="string" )
|
||||
basicopts.add_option( '-d', '--destination',
|
||||
help="Start of the path. Optional, defaults to: .",
|
||||
help="Start of the path. [default: %default]",
|
||||
type="string",
|
||||
default=".",
|
||||
dest="path" )
|
||||
parser.add_option_group(basicopts)
|
||||
|
||||
# When mode is: image
|
||||
imageopts = optparse.OptionGroup(parser, "Options for mode 'image'",
|
||||
imageopts = optparse.OptionGroup(parser, "Options for --mode: image",
|
||||
"When we are gathering images.")
|
||||
imageopts.add_option( '-u', '--url',
|
||||
help="Webcam URL",
|
||||
@@ -36,7 +36,7 @@ def aeonview(argv):
|
||||
|
||||
|
||||
# When mode is: video
|
||||
videoopts = optparse.OptionGroup(parser, "Options for mode 'video'",
|
||||
videoopts = optparse.OptionGroup(parser, "Options for --mode: video",
|
||||
"When we are making movies.")
|
||||
videoopts.add_option( '-g', '--generate',
|
||||
help="Date to video. Format: YYYY-MM-DD. "
|
||||
@@ -47,9 +47,9 @@ def aeonview(argv):
|
||||
default="daily",
|
||||
help="Video to process: daily or monthly [default: %default]",
|
||||
type="string")
|
||||
videoopts.add_option( '-f', '--faster',
|
||||
videoopts.add_option( '-f', '--fps',
|
||||
default="10",
|
||||
help="Multiplier of video speed, numeric [default: %default]",
|
||||
help="Frames per second, numeric [default: %default]",
|
||||
type="int")
|
||||
parser.add_option_group(videoopts)
|
||||
|
||||
@@ -72,43 +72,44 @@ def aeonview(argv):
|
||||
print
|
||||
print "(!) You are running aeonview from", os.getcwdu(), "as the user", os.getlogin()
|
||||
|
||||
|
||||
if options.mode == 'image':
|
||||
# We are now in the gathering mode.
|
||||
|
||||
if options.url == None and options.simulate == True:
|
||||
options.url = "http://example.com/webcam.jpg"
|
||||
print "(!) Simulation: Using " + options.url + " as webcam url"
|
||||
|
||||
|
||||
if options.url == None:
|
||||
print "(!) Need a webcam url, not gonna rock before that!"
|
||||
print
|
||||
parser.print_help()
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
if options.project == None:
|
||||
import hashlib # not needed before
|
||||
m = hashlib.md5(options.url).hexdigest()
|
||||
options.project = m[:5] # 5 first characters of md5-hash
|
||||
if options.verbose == True or options.simulate == True:
|
||||
print "(!) No project defined, using part of md5-hash of the webcam url:", options.project
|
||||
|
||||
|
||||
if options.path == None or options.path == ".":
|
||||
if options.verbose == True or options.simulate == True:
|
||||
print "(!) No destination defined, using:", options.path
|
||||
else:
|
||||
if options.verbose == True or options.simulate == True:
|
||||
print "(!) Using destination:", options.path
|
||||
|
||||
|
||||
# If you want to change the path structure, here's your chance.
|
||||
options.imgpath = time.strftime("/img/%Y-%m/%d/")
|
||||
options.imgname = time.strftime("%H-%M-%S")
|
||||
|
||||
# Let's rock
|
||||
|
||||
# Let us build the destination path and filename
|
||||
options.fileext = os.path.splitext(options.url)[1]
|
||||
options.destdir = options.path + "/" + options.project + options.imgpath
|
||||
options.destination = options.destdir + options.imgname + options.fileext
|
||||
getit = options.url + " > " + options.destination
|
||||
|
||||
|
||||
# Crude, but works.
|
||||
if options.simulate == False:
|
||||
mkdir_p( options.destdir )
|
||||
@@ -117,40 +118,41 @@ def aeonview(argv):
|
||||
print "(!) Simulation: Making path:", options.destdir
|
||||
print "(!) Simulation: curl", getit
|
||||
#print options
|
||||
|
||||
|
||||
|
||||
elif options.mode == 'video':
|
||||
|
||||
if options.faster < 1:
|
||||
options.faster = 1 # Never gonna let you multiply by zero.
|
||||
|
||||
# We are now in the video producing mode
|
||||
videofps = options.faster * 25 # = 25fps * multiplier
|
||||
|
||||
vid_extension = ".avi"
|
||||
mencoder = os.getcwd() + "/mencoder"
|
||||
mencoder = mencoder + " -mf fps="+vidfps+" -nosound -ovc lavc -lavcopts vcodec=mpeg4"
|
||||
m = os.getcwd() + "/mencoder"
|
||||
mencoder = m + " -mf fps="+ str(options.fps) +" -nosound -ovc lavc -lavcopts vcodec=mpeg4"
|
||||
|
||||
if options.project == None:
|
||||
print "(!) No project defined, please specify what project you are working on."
|
||||
print
|
||||
parser.print_help()
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
if options.videorun == "daily":
|
||||
#options.generate = "2010-13-01"
|
||||
|
||||
vid_date = str(options.generate).split( "-" )
|
||||
year = vid_date[0]
|
||||
month = vid_date[1]
|
||||
day = vid_date[2]
|
||||
|
||||
if check_date(int(year), int(month), int(day)):
|
||||
video_dir = options.path + "/" + options.project + "/vid/" + year + "-" + month + "/" + day + "/*"
|
||||
print "Video dir to process:", video_dir
|
||||
video_out_day = options.path + "/" + options.project + "/vid/" + year + "-" + month + "/" + day + vid_extension
|
||||
print "Video output-file: ", video_out_day
|
||||
print mencoder, "-o", video_out_day, "'mf://"+os.path.dirname( os.path.realpath( video_dir ) ) + "/*'"
|
||||
video_dir = options.path+"/"+options.project+"/img/"+year+"-"+month+"/"+day+"/*"
|
||||
video_out_dir = options.path +"/"+ options.project +"/vid/"+ year +"-"+ month +"/"
|
||||
video_out_day = video_out_dir + day + vid_extension
|
||||
command = mencoder + " -o " + video_out_day + " 'mf://"+os.path.dirname( os.path.realpath( video_dir ) ) + "/*'"
|
||||
|
||||
if options.simulate == False:
|
||||
mkdir_p( video_out_dir )
|
||||
os.system(command)
|
||||
else:
|
||||
print "(!) Video dir to process:", video_dir
|
||||
print "(!) Video output-file: ", video_out_day
|
||||
print "(!) Command to run", command
|
||||
|
||||
else:
|
||||
print "(!) Error: check your date. Value provided:", options.generate
|
||||
|
||||
@@ -158,9 +160,7 @@ def aeonview(argv):
|
||||
print "Monthly"
|
||||
|
||||
else:
|
||||
pass
|
||||
|
||||
pass
|
||||
print "(!) What? Please choose between -r daily/montly"
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
Reference in New Issue
Block a user