commit 7b0f5528e59a60bc9985654712a1d1fca523f7b3
parent 95574d57197ab378635a1e917487ab72163a3623
Author: rbckman <rob@tarina.org>
Date: Sat, 30 Nov 2024 23:14:51 +0000
hmm
Diffstat:
M | gonzopi.py | | | 3499 | ++++++++++++++++++++++++++++++++++++++++--------------------------------------- |
1 file changed, 1765 insertions(+), 1734 deletions(-)
diff --git a/gonzopi.py b/gonzopi.py
@@ -10,8 +10,11 @@
# █▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄█ █▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄█ █▄▄▄█
# https://gonzopi.org
-
-import picamerax as picamera
+cameramode=True
+try:
+ import picamerax as picamera
+except:
+ cameramode=False
import numpy as np
import string
import os
@@ -20,17 +23,26 @@ import datetime
import multiprocessing as mp
from subprocess import call
from subprocess import Popen
-from omxplayer import OMXPlayer
+omxplayermode=True
+try:
+ from omxplayer import OMXPlayer
+except:
+ omxplayermode=False
from multiprocessing import Process, Queue
import subprocess
import sys
import pickle
-import RPi.GPIO as GPIO
+rpimode=True
+try:
+ import RPi.GPIO as GPIO
+except:
+ rpimode=False
from PIL import Image
import socket
import configparser
import shortuuid
-import smbus
+if rpimode == True:
+ import smbus
import ifaddr
import web
@@ -45,56 +57,59 @@ pipe = subprocess.check_output('lsb_release -c -s', shell=True)
debianversion = pipe.decode().strip()
print('running debian ' + debianversion)
-#CHECK RASPBERRY PI VERSION
-pipe = subprocess.check_output('cat /sys/firmware/devicetree/base/model', shell=True)
-raspberrypiversion = pipe.decode().strip()
-print('on ' + raspberrypiversion)
+if rpimode:
+ #CHECK RASPBERRY PI VERSION
+ pipe = subprocess.check_output('cat /sys/firmware/devicetree/base/model', shell=True)
+ raspberrypiversion = pipe.decode().strip()
+ print('on ' + raspberrypiversion)
-#give permissions to GPIO
-os.system('sudo chown root.gpio /dev/gpiomem')
-os.system('sudo chmod g+rw /dev/gpiomem')
+ #give permissions to GPIO
+ os.system('sudo chown root.gpio /dev/gpiomem')
+ os.system('sudo chmod g+rw /dev/gpiomem')
-#give permissions to RAM
-os.system('sudo chown -R pi /dev/shm')
+ #give permissions to RAM
+ os.system('sudo chown -R pi /dev/shm')
-#make cpu freq performance
-os.system('sudo cpufreq-set -g performance')
+ #make cpu freq performance
+ os.system('sudo cpufreq-set -g performance')
-#I2CBUTTONS
-probei2c = 0
-while probei2c < 3:
- try:
- if debianversion == "stretch":
- os.system('sudo modprobe i2c-dev')
- bus = smbus.SMBus(3) # Rev 2 Pi uses 1
- else:
- if 'Raspberry Pi 4 Model B' in raspberrypiversion:
+ #I2CBUTTONS
+ probei2c = 0
+ while probei2c < 3:
+ try:
+ if debianversion == "stretch":
os.system('sudo modprobe i2c-dev')
- bus = smbus.SMBus(22) # Rev 2 Pi uses 1
+ bus = smbus.SMBus(3) # Rev 2 Pi uses 1
else:
- os.system('sudo modprobe i2c-dev')
- bus = smbus.SMBus(11) # Rev 2 Pi uses 1
- DEVICE = 0x20 # Device address (A0-A2)
- IODIRB = 0x0d # Pin pullups B-side
- IODIRA = 0x00 # Pin pullups A-side 0x0c
- IODIRApullup = 0x0c # Pin pullups A-side 0x0c
- GPIOB = 0x13 # Register B-side for inputs
- GPIOA = 0x12 # Register A-side for inputs
- OLATA = 0x14 # Register for outputs
- bus.write_byte_data(DEVICE,IODIRB,0xFF) # set all gpiob to input
- bus.write_byte_data(DEVICE,IODIRApullup,0xF3) # set two pullup inputs and two outputs
- bus.write_byte_data(DEVICE,IODIRA,0xF3) # set two inputs and two outputs
- bus.write_byte_data(DEVICE,OLATA,0x4)
- print("yes, found em i2c buttons!")
- i2cbuttons = True
- break
- except:
- print("could not find i2c buttons!! running in keyboard only mode")
- print("trying again...")
- i2cbuttons = False
- probei2c += 1
- time.sleep(1)
- bus=''
+ if 'Raspberry Pi 4 Model B' in raspberrypiversion:
+ os.system('sudo modprobe i2c-dev')
+ bus = smbus.SMBus(22) # Rev 2 Pi uses 1
+ else:
+ os.system('sudo modprobe i2c-dev')
+ bus = smbus.SMBus(11) # Rev 2 Pi uses 1
+ DEVICE = 0x20 # Device address (A0-A2)
+ IODIRB = 0x0d # Pin pullups B-side
+ IODIRA = 0x00 # Pin pullups A-side 0x0c
+ IODIRApullup = 0x0c # Pin pullups A-side 0x0c
+ GPIOB = 0x13 # Register B-side for inputs
+ GPIOA = 0x12 # Register A-side for inputs
+ OLATA = 0x14 # Register for outputs
+ bus.write_byte_data(DEVICE,IODIRB,0xFF) # set all gpiob to input
+ bus.write_byte_data(DEVICE,IODIRApullup,0xF3) # set two pullup inputs and two outputs
+ bus.write_byte_data(DEVICE,IODIRA,0xF3) # set two inputs and two outputs
+ bus.write_byte_data(DEVICE,OLATA,0x4)
+ print("yes, found em i2c buttons!")
+ i2cbuttons = True
+ break
+ except:
+ print("could not find i2c buttons!! running in keyboard only mode")
+ print("trying again...")
+ i2cbuttons = False
+ probei2c += 1
+ time.sleep(1)
+ bus=''
+else:
+ i2cbuttons = False
#MAIN
def main():
@@ -195,13 +210,16 @@ def main():
f = open(gonzopifolder + '/VERSION')
gonzopiversion = f.readline()
gonzopivername = f.readline()
+ db=''
- #START INTERFACE
- startinterface()
+ if rpimode:
+ #START INTERFACE
+ startinterface()
+ #FIRE UP CAMERA
+ camera = startcamera(lens,fps)
+ else:
+ camera=None
- db=''
- #FIRE UP CAMERA
- camera = startcamera(lens,fps)
#GET FILMFOLDER AND CAMERA VERSION
camera_model, camera_revision , filmfolder = getconfig(camera)
if os.path.isdir(filmfolder) == False:
@@ -210,10 +228,11 @@ def main():
#SYSTEM CONFIGS (turn off hdmi)
#run_command('tvservice -o')
#Kernel page cache optimization for sd card
- run_command('sudo ' + gonzopifolder + '/extras/sdcardhack.sh')
- #Make screen shut off work and run full brightness
- run_command('gpio -g mode 19 pwm ')
- run_command('gpio -g pwm 19 1023')
+ if rpimode:
+ run_command('sudo ' + gonzopifolder + '/extras/sdcardhack.sh')
+ #Make screen shut off work and run full brightness
+ run_command('gpio -g mode 19 pwm ')
+ run_command('gpio -g pwm 19 1023')
#STORAGE DRIVES
storagedrives=[['sd',filmfolder]]
@@ -307,1730 +326,1731 @@ def main():
wifistate_old='off'
- #--------------MAIN LOOP---------------#
- while True:
- pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
- if pressagain != '':
- pressed = pressagain
- pressagain = ''
- #event = screen.getch()
- if wifistate != wifistate_old:
- if wifistate == 'on':
- run_command('sudo iwconfig wlan0 txpower auto')
- elif wifistate == 'off':
- run_command('sudo iwconfig wlan0 txpower off')
- wifistate_old = wifistate
- if serverstate != serverstate_old:
- if serverstate == 'on':
- gonzopiserver(True)
- elif serverstate == 'off':
- gonzopiserver(False)
- serverstate_old=serverstate
- if recording == False:
- #SHUTDOWN
- if pressed == 'middle' and menu[selected] == 'SHUTDOWN':
- writemessage('Hold on shutting down...')
- time.sleep(1)
- run_command('sudo shutdown -h now')
- #MODE
- elif pressed == 'changemode':
- if cammode == 'film':
- cammode = 'picture'
- vumetermessage('changing to picture mode')
- elif cammode == 'picture':
- cammode = 'film'
- vumetermessage('changing to film mode')
- camera.stop_preview()
- camera.close()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- #PICTURE
- elif pressed == 'picture':
- if os.path.isdir(foldername) == False:
- os.makedirs(foldername)
- picture = foldername +'picture' + str(take).zfill(3) + '.jpeg'
- run_command('touch ' + foldername + '.placeholder')
- print('taking picture')
- camera.capture(picture,format="jpeg",use_video_port=True)
- #PEAKING
- elif pressed == 'peak' and recordable == True:
- if shot > 1:
- peakshot = shot - 1
- peaktake = counttakes(filmname, filmfolder, scene, peakshot)
- p_imagename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(peakshot).zfill(3) + '/take' + str(peaktake).zfill(3) + '.jpeg'
- overlay = displayimage(camera, p_imagename, overlay, 3)
- while holdbutton == 'peak':
- pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
- vumetermessage('peaking ' + str(peakshot))
- time.sleep(0.03)
- overlay = removeimage(camera, overlay)
- #SHOWHELP
- elif pressed == 'showhelp':
- vumetermessage('Button layout')
- if showhelp == False:
- overlay2 = removeimage(camera, overlay2)
- overlay2 = displayimage(camera, gonzopifolder+'/extras/buttons.png', overlay, 4)
- showhelp = True
- elif showhelp == True:
- overlay2 = removeimage(camera, overlay2)
- updatethumb = True
- showhelp = False
- #while holdbutton == 'showhelp' or pressed == 'H':
- # pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
- # vumetermessage('Button layout')
- # time.sleep(0.03)
- #TIMELAPSE
- elif pressed == 'middle' and menu[selected] == 'TIMELAPSE':
- overlay = removeimage(camera, overlay)
- takes = counttakes(filmname, filmfolder, scene, shot)
- if takes > 0:
- shot = countshots(filmname, filmfolder, scene) + 1
- take = 1
- foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
- filename = 'take' + str(take).zfill(3)
- renderedfilename, between, duration = timelapse(beeps,camera,filmname,foldername,filename,between,duration,backlight)
- if renderedfilename != '':
- #render thumbnail
- #writemessage('creating thumbnail')
- #run_command('avconv -i ' + foldername + filename + '.mp4 -frames 1 -vf scale=800:460 ' + foldername + filename + '.jpeg')
- updatethumb = True
- #VIEW SCENE
- elif pressed == 'view' and menu[selected] == 'SCENE:':
- writemessage('Loading scene...')
- organize(filmfolder, filmname)
- filmfiles = shotfiles(filmfolder, filmname, scene)
- vumetermessage('press middlebutton to cancel')
- if len(filmfiles) > 0:
- #Check if rendered video exist
- camera.stop_preview()
- #renderfilename, newaudiomix = renderscene(filmfolder, filmname, scene)
- renderfilename = renderfilm(filmfolder, filmname, comp, scene, True)
- if renderfilename != '':
- remove_shots = playdub(filmname,renderfilename, 'film')
- #fastedit (maybe deploy sometime)
- #if remove_shots != []:
- # for i in remove_shots:
- # remove(filmfolder, filmname, scene, i, take, 'shot')
- # organize(filmfolder, filmname)
- # updatethumb = True
- # #loadfilmsettings = True
- # time.sleep(0.5)
- #else:
- # print('nothing to remove')
- camera.start_preview()
- else:
- vumetermessage("There's absolutely nothing in this scene! hit rec!")
- updatethumb=True
- rendermenu = True
- #VIEW FILM
- elif pressed == 'view' and menu[selected] == 'FILM:':
- writemessage('Loading film...')
- organize(filmfolder, filmname)
- filmfiles = viewfilm(filmfolder, filmname)
- vumetermessage('press middlebutton to cancel')
- if len(filmfiles) > 0:
- camera.stop_preview()
- #removeimage(camera, overlay)
- renderfilename = renderfilm(filmfolder, filmname, comp, 0, True)
- if renderfilename != '':
- remove_shots = playdub(filmname,renderfilename, 'film')
- #overlay = displayimage(camera, imagename, overlay, 3)
- camera.start_preview()
- else:
- vumetermessage('wow, shoot first! there is zero, nada, zip footage to watch now... just hit rec!')
- updatethumb=True
- rendermenu = True
- #VIEW SHOT OR TAKE
- elif pressed == 'view':
- writemessage('Loading clip...')
- organize(filmfolder, filmname)
- takes = counttakes(filmname, filmfolder, scene, shot)
- vumetermessage('press middlebutton to cancel')
- if takes > 0:
- removeimage(camera, overlay)
+ if rpimode:
+ #--------------Rpi MAIN LOOP---------------#
+ while True:
+ pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
+ if pressagain != '':
+ pressed = pressagain
+ pressagain = ''
+ #event = screen.getch()
+ if wifistate != wifistate_old:
+ if wifistate == 'on':
+ run_command('sudo iwconfig wlan0 txpower auto')
+ elif wifistate == 'off':
+ run_command('sudo iwconfig wlan0 txpower off')
+ wifistate_old = wifistate
+ if serverstate != serverstate_old:
+ if serverstate == 'on':
+ gonzopiserver(True)
+ elif serverstate == 'off':
+ gonzopiserver(False)
+ serverstate_old=serverstate
+ if recording == False:
+ #SHUTDOWN
+ if pressed == 'middle' and menu[selected] == 'SHUTDOWN':
+ writemessage('Hold on shutting down...')
+ time.sleep(1)
+ run_command('sudo shutdown -h now')
+ #MODE
+ elif pressed == 'changemode':
+ if cammode == 'film':
+ cammode = 'picture'
+ vumetermessage('changing to picture mode')
+ elif cammode == 'picture':
+ cammode = 'film'
+ vumetermessage('changing to film mode')
camera.stop_preview()
- foldername = filmfolder + filmname + '/scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
+ camera.close()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ #PICTURE
+ elif pressed == 'picture':
+ if os.path.isdir(foldername) == False:
+ os.makedirs(foldername)
+ picture = foldername +'picture' + str(take).zfill(3) + '.jpeg'
+ run_command('touch ' + foldername + '.placeholder')
+ print('taking picture')
+ camera.capture(picture,format="jpeg",use_video_port=True)
+ #PEAKING
+ elif pressed == 'peak' and recordable == True:
+ if shot > 1:
+ peakshot = shot - 1
+ peaktake = counttakes(filmname, filmfolder, scene, peakshot)
+ p_imagename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(peakshot).zfill(3) + '/take' + str(peaktake).zfill(3) + '.jpeg'
+ overlay = displayimage(camera, p_imagename, overlay, 3)
+ while holdbutton == 'peak':
+ pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
+ vumetermessage('peaking ' + str(peakshot))
+ time.sleep(0.03)
+ overlay = removeimage(camera, overlay)
+ #SHOWHELP
+ elif pressed == 'showhelp':
+ vumetermessage('Button layout')
+ if showhelp == False:
+ overlay2 = removeimage(camera, overlay2)
+ overlay2 = displayimage(camera, gonzopifolder+'/extras/buttons.png', overlay, 4)
+ showhelp = True
+ elif showhelp == True:
+ overlay2 = removeimage(camera, overlay2)
+ updatethumb = True
+ showhelp = False
+ #while holdbutton == 'showhelp' or pressed == 'H':
+ # pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
+ # vumetermessage('Button layout')
+ # time.sleep(0.03)
+ #TIMELAPSE
+ elif pressed == 'middle' and menu[selected] == 'TIMELAPSE':
+ overlay = removeimage(camera, overlay)
+ takes = counttakes(filmname, filmfolder, scene, shot)
+ if takes > 0:
+ shot = countshots(filmname, filmfolder, scene) + 1
+ take = 1
+ foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
filename = 'take' + str(take).zfill(3)
- #compileshot(foldername + filename,filmfolder,filmname)
- renderfilename, newaudiomix = rendershot(filmfolder, filmname, foldername+filename, scene, shot)
- if renderfilename != '':
- trim = playdub(filmname,foldername + filename, 'shot')
- if trim[0] == 'beginning' or trim[0] == 'end':
- writemessage('Cutting clip...')
- take = counttakes(filmname, filmfolder, scene, shot)+1
- trim_filename = foldername + 'take' + str(take).zfill(3)
- videotrim(foldername, foldername + filename, trim_filename, trim[0], trim[1])
- elif trim[0] >= trim[1]:
- trim = [trim[0],0]
- elif trim[0] != 0 and trim[1] != 0:
- writemessage('Cutting clip...')
- take = counttakes(filmname, filmfolder, scene, shot)+1
- trim_filename = foldername + 'take' + str(take).zfill(3)
- videotrim(foldername, foldername + filename, trim_filename, 'end', trim[1])
- take = counttakes(filmname, filmfolder, scene, shot)+1
- trim_filename2 = foldername + 'take' + str(take).zfill(3)
- videotrim(foldername, trim_filename, trim_filename2, 'beginning', trim[0])
- elif trim[0] == 0 and trim[1] != 0:
- writemessage('Cutting clip...')
- take = counttakes(filmname, filmfolder, scene, shot)+1
- trim_filename = foldername + 'take' + str(take).zfill(3)
- videotrim(foldername, foldername + filename, trim_filename, 'end', trim[1])
- if trim[0] != 0 and trim[1] == 0:
- writemessage('Cutting clip...')
- take = counttakes(filmname, filmfolder, scene, shot)+1
- trim_filename = foldername + 'take' + str(take).zfill(3)
- videotrim(foldername, foldername + filename, trim_filename, 'beginning', trim[0])
- imagename = foldername + filename + '.jpeg'
- overlay = displayimage(camera, imagename, overlay, 3)
- camera.start_preview()
+ renderedfilename, between, duration = timelapse(beeps,camera,filmname,foldername,filename,between,duration,backlight)
+ if renderedfilename != '':
+ #render thumbnail
+ #writemessage('creating thumbnail')
+ #run_command('avconv -i ' + foldername + filename + '.mp4 -frames 1 -vf scale=800:460 ' + foldername + filename + '.jpeg')
+ updatethumb = True
+ #VIEW SCENE
+ elif pressed == 'view' and menu[selected] == 'SCENE:':
+ writemessage('Loading scene...')
+ organize(filmfolder, filmname)
+ filmfiles = shotfiles(filmfolder, filmname, scene)
+ vumetermessage('press middlebutton to cancel')
+ if len(filmfiles) > 0:
+ #Check if rendered video exist
+ camera.stop_preview()
+ #renderfilename, newaudiomix = renderscene(filmfolder, filmname, scene)
+ renderfilename = renderfilm(filmfolder, filmname, comp, scene, True)
+ if renderfilename != '':
+ remove_shots = playdub(filmname,renderfilename, 'film')
+ #fastedit (maybe deploy sometime)
+ #if remove_shots != []:
+ # for i in remove_shots:
+ # remove(filmfolder, filmname, scene, i, take, 'shot')
+ # organize(filmfolder, filmname)
+ # updatethumb = True
+ # #loadfilmsettings = True
+ # time.sleep(0.5)
+ #else:
+ # print('nothing to remove')
+ camera.start_preview()
else:
- vumetermessage('nothing here! hit rec!')
- rendermenu = True
+ vumetermessage("There's absolutely nothing in this scene! hit rec!")
updatethumb=True
- #DUB SHOT
- elif pressed == 'middle' and menu[selected] == 'SHOT:' and recordable == False:
- newdub = clipsettings(filmfolder, filmname, scene, shot, take, plughw)
- take = counttakes(filmname, filmfolder, scene, shot)
- if newdub:
- camera.stop_preview()
- #save original sound
- dubfolder = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/dub/'
- saveoriginal = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take'+str(take).zfill(3)+'.wav'
- dubfiles, dubmix, newmix = getdubs(filmfolder, filmname, scene, shot)
- foldername = filmfolder + filmname + '/scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
- filename = 'take' + str(take).zfill(3)
- if dubfiles==[]:
- print('no dubs, copying original sound to original')
- os.system('cp '+saveoriginal+' '+dubfolder+'original.wav')
- time.sleep(0.2)
- renderfilename, newaudiomix = rendershot(filmfolder, filmname, foldername+filename, scene, shot)
- playdub(filmname,renderfilename, 'dub')
- #run_command('sox -V0 -G /dev/shm/dub.wav -c 2 ' + newdub)
- #add audio/video start delay sync
- run_command('sox -V0 -G /dev/shm/dub.wav -c 2 /dev/shm/temp.wav trim 0.013')
- run_command('mv /dev/shm/temp.wav '+ newdub)
- audiosync, videolenght, audiolenght = audiotrim(renderfilename, 'end', newdub)
- vumetermessage('new shot dubbing made!')
- #rerender audio
- os.system('rm ' + filmfolder + filmname + '/.audiohash')
- camera.start_preview()
- time.sleep(1)
- else:
- vumetermessage('see ya around!')
- rendermenu = True
- #DUB SCENE
- elif pressed == 'middle' and menu[selected] == 'SCENE:':
- newdub = clipsettings(filmfolder, filmname, scene, 0, take, plughw)
- if newdub:
- camera.stop_preview()
- renderfilename, newaudiomix = renderscene(filmfolder, filmname, scene)
- playdub(filmname,renderfilename, 'dub')
- #run_command('sox -V0 -G /dev/shm/dub.wav -c 2 ' + newdub)
- #add audio/video start delay sync
- run_command('sox -V0 -G /dev/shm/dub.wav -c 2 /dev/shm/temp.wav trim 0.013')
- run_command('mv /dev/shm/temp.wav '+ newdub)
- audiosync, videolenght, audiolenght = audiotrim(renderfilename, 'end', newdub)
- vumetermessage('new scene dubbing made!')
- #rerender audio
- os.system('rm ' + filmfolder + filmname + '/.audiohash')
- camera.start_preview()
- time.sleep(1)
- else:
- vumetermessage('see ya around!')
- rendermenu = True
- #DUB FILM
- elif pressed == 'middle' and menu[selected] == 'FILM:':
- newdub = clipsettings(filmfolder, filmname, 0, 0, take, plughw)
- if newdub:
- camera.stop_preview()
- renderfilename = renderfilm(filmfolder, filmname, comp, 0, False)
- playdub(filmname,renderfilename, 'dub')
- run_command('sox -V0 -G /dev/shm/dub.wav -c 2 ' + newdub)
- vumetermessage('new film dubbing made!')
- camera.start_preview()
- time.sleep(1)
- else:
- vumetermessage('see ya around!')
- rendermenu = True
- #BACKUP
- elif pressed == 'middle' and menu[selected] == 'BACKUP':
- copytousb(filmfolder)
- rendermenu = True
- #UPLOAD
- elif pressed == 'middle' and menu[selected] == 'UPLOAD':
- if webz_on() == True:
+ rendermenu = True
+ #VIEW FILM
+ elif pressed == 'view' and menu[selected] == 'FILM:':
+ writemessage('Loading film...')
+ organize(filmfolder, filmname)
filmfiles = viewfilm(filmfolder, filmname)
+ vumetermessage('press middlebutton to cancel')
if len(filmfiles) > 0:
+ camera.stop_preview()
+ #removeimage(camera, overlay)
renderfilename = renderfilm(filmfolder, filmname, comp, 0, True)
- cmd = uploadfilm(renderfilename, filmname)
- if cmd != None:
- stopinterface(camera)
- try:
- run_command(cmd)
- except:
- logger.warning('uploadfilm bugging')
- startinterface()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- selectedaction = 0
- rendermenu = True
- #LOAD FILM
- elif pressed == 'middle' and menu[selected] == 'LOAD':
- filmname = loadfilm(filmname, filmfolder, camera, overlay)
- loadfilmsettings = True
- #UPDATE
- elif pressed == 'middle' and menu[selected] == 'UPDATE':
- if webz_on() == True:
- stopinterface(camera)
- gonzopiversion, gonzopivername = update(gonzopiversion, gonzopivername)
- startinterface()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- selectedaction = 0
- rendermenu = True
- #WIFI
- elif pressed == 'middle' and menu[selected] == 'WIFI:':
- stopinterface(camera)
- run_command('wicd-curses')
- startinterface()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- rendermenu = True
- #NEW FILM
- elif pressed == 'middle' and menu[selected] == 'NEW' or filmname == '' or pressed == 'new_film':
- filmname_exist=False
- if newfilmname == '':
- newfilmname = nameyourfilm(filmfolder, filmname, abc, True)
- allfilm = getfilms(filmfolder)
- for i in allfilm:
- if i[0] == newfilmname:
- filmname_exist=True
- if filmname != newfilmname and filmname_exist==False:
- filmname = newfilmname
- os.makedirs(filmfolder + filmname)
- vumetermessage('Good luck with your film ' + filmname + '!')
- #make a filmhash
- print('making filmhash...')
- filmhash = shortuuid.uuid()
- with open(filmfolder + filmname + '/.filmhash', 'w') as f:
- f.write(filmhash)
- updatethumb = True
+ if renderfilename != '':
+ remove_shots = playdub(filmname,renderfilename, 'film')
+ #overlay = displayimage(camera, imagename, overlay, 3)
+ camera.start_preview()
+ else:
+ vumetermessage('wow, shoot first! there is zero, nada, zip footage to watch now... just hit rec!')
+ updatethumb=True
rendermenu = True
- scene = 1
- shot = 1
- take = 1
- #selectedaction = 0
- newfilmname = ''
- else:
- print(term.clear)
- filmname = newfilmname
- newfilmname = ''
- vumetermessage('film already exist!')
- logger.info('film already exist!')
- updatethumb = True
+ #VIEW SHOT OR TAKE
+ elif pressed == 'view':
+ writemessage('Loading clip...')
+ organize(filmfolder, filmname)
+ takes = counttakes(filmname, filmfolder, scene, shot)
+ vumetermessage('press middlebutton to cancel')
+ if takes > 0:
+ removeimage(camera, overlay)
+ camera.stop_preview()
+ foldername = filmfolder + filmname + '/scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
+ filename = 'take' + str(take).zfill(3)
+ #compileshot(foldername + filename,filmfolder,filmname)
+ renderfilename, newaudiomix = rendershot(filmfolder, filmname, foldername+filename, scene, shot)
+ if renderfilename != '':
+ trim = playdub(filmname,foldername + filename, 'shot')
+ if trim[0] == 'beginning' or trim[0] == 'end':
+ writemessage('Cutting clip...')
+ take = counttakes(filmname, filmfolder, scene, shot)+1
+ trim_filename = foldername + 'take' + str(take).zfill(3)
+ videotrim(foldername, foldername + filename, trim_filename, trim[0], trim[1])
+ elif trim[0] >= trim[1]:
+ trim = [trim[0],0]
+ elif trim[0] != 0 and trim[1] != 0:
+ writemessage('Cutting clip...')
+ take = counttakes(filmname, filmfolder, scene, shot)+1
+ trim_filename = foldername + 'take' + str(take).zfill(3)
+ videotrim(foldername, foldername + filename, trim_filename, 'end', trim[1])
+ take = counttakes(filmname, filmfolder, scene, shot)+1
+ trim_filename2 = foldername + 'take' + str(take).zfill(3)
+ videotrim(foldername, trim_filename, trim_filename2, 'beginning', trim[0])
+ elif trim[0] == 0 and trim[1] != 0:
+ writemessage('Cutting clip...')
+ take = counttakes(filmname, filmfolder, scene, shot)+1
+ trim_filename = foldername + 'take' + str(take).zfill(3)
+ videotrim(foldername, foldername + filename, trim_filename, 'end', trim[1])
+ if trim[0] != 0 and trim[1] == 0:
+ writemessage('Cutting clip...')
+ take = counttakes(filmname, filmfolder, scene, shot)+1
+ trim_filename = foldername + 'take' + str(take).zfill(3)
+ videotrim(foldername, foldername + filename, trim_filename, 'beginning', trim[0])
+ imagename = foldername + filename + '.jpeg'
+ overlay = displayimage(camera, imagename, overlay, 3)
+ camera.start_preview()
+ else:
+ vumetermessage('nothing here! hit rec!')
+ rendermenu = True
+ updatethumb=True
+ #DUB SHOT
+ elif pressed == 'middle' and menu[selected] == 'SHOT:' and recordable == False:
+ newdub = clipsettings(filmfolder, filmname, scene, shot, take, plughw)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ if newdub:
+ camera.stop_preview()
+ #save original sound
+ dubfolder = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/dub/'
+ saveoriginal = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take'+str(take).zfill(3)+'.wav'
+ dubfiles, dubmix, newmix = getdubs(filmfolder, filmname, scene, shot)
+ foldername = filmfolder + filmname + '/scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
+ filename = 'take' + str(take).zfill(3)
+ if dubfiles==[]:
+ print('no dubs, copying original sound to original')
+ os.system('cp '+saveoriginal+' '+dubfolder+'original.wav')
+ time.sleep(0.2)
+ renderfilename, newaudiomix = rendershot(filmfolder, filmname, foldername+filename, scene, shot)
+ playdub(filmname,renderfilename, 'dub')
+ #run_command('sox -V0 -G /dev/shm/dub.wav -c 2 ' + newdub)
+ #add audio/video start delay sync
+ run_command('sox -V0 -G /dev/shm/dub.wav -c 2 /dev/shm/temp.wav trim 0.013')
+ run_command('mv /dev/shm/temp.wav '+ newdub)
+ audiosync, videolenght, audiolenght = audiotrim(renderfilename, 'end', newdub)
+ vumetermessage('new shot dubbing made!')
+ #rerender audio
+ os.system('rm ' + filmfolder + filmname + '/.audiohash')
+ camera.start_preview()
+ time.sleep(1)
+ else:
+ vumetermessage('see ya around!')
+ rendermenu = True
+ #DUB SCENE
+ elif pressed == 'middle' and menu[selected] == 'SCENE:':
+ newdub = clipsettings(filmfolder, filmname, scene, 0, take, plughw)
+ if newdub:
+ camera.stop_preview()
+ renderfilename, newaudiomix = renderscene(filmfolder, filmname, scene)
+ playdub(filmname,renderfilename, 'dub')
+ #run_command('sox -V0 -G /dev/shm/dub.wav -c 2 ' + newdub)
+ #add audio/video start delay sync
+ run_command('sox -V0 -G /dev/shm/dub.wav -c 2 /dev/shm/temp.wav trim 0.013')
+ run_command('mv /dev/shm/temp.wav '+ newdub)
+ audiosync, videolenght, audiolenght = audiotrim(renderfilename, 'end', newdub)
+ vumetermessage('new scene dubbing made!')
+ #rerender audio
+ os.system('rm ' + filmfolder + filmname + '/.audiohash')
+ camera.start_preview()
+ time.sleep(1)
+ else:
+ vumetermessage('see ya around!')
+ rendermenu = True
+ #DUB FILM
+ elif pressed == 'middle' and menu[selected] == 'FILM:':
+ newdub = clipsettings(filmfolder, filmname, 0, 0, take, plughw)
+ if newdub:
+ camera.stop_preview()
+ renderfilename = renderfilm(filmfolder, filmname, comp, 0, False)
+ playdub(filmname,renderfilename, 'dub')
+ run_command('sox -V0 -G /dev/shm/dub.wav -c 2 ' + newdub)
+ vumetermessage('new film dubbing made!')
+ camera.start_preview()
+ time.sleep(1)
+ else:
+ vumetermessage('see ya around!')
+ rendermenu = True
+ #BACKUP
+ elif pressed == 'middle' and menu[selected] == 'BACKUP':
+ copytousb(filmfolder)
+ rendermenu = True
+ #UPLOAD
+ elif pressed == 'middle' and menu[selected] == 'UPLOAD':
+ if webz_on() == True:
+ filmfiles = viewfilm(filmfolder, filmname)
+ if len(filmfiles) > 0:
+ renderfilename = renderfilm(filmfolder, filmname, comp, 0, True)
+ cmd = uploadfilm(renderfilename, filmname)
+ if cmd != None:
+ stopinterface(camera)
+ try:
+ run_command(cmd)
+ except:
+ logger.warning('uploadfilm bugging')
+ startinterface()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ selectedaction = 0
+ rendermenu = True
+ #LOAD FILM
+ elif pressed == 'middle' and menu[selected] == 'LOAD':
+ filmname = loadfilm(filmname, filmfolder, camera, overlay)
loadfilmsettings = True
+ #UPDATE
+ elif pressed == 'middle' and menu[selected] == 'UPDATE':
+ if webz_on() == True:
+ stopinterface(camera)
+ gonzopiversion, gonzopivername = update(gonzopiversion, gonzopivername)
+ startinterface()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ selectedaction = 0
rendermenu = True
- #EDIT FILM NAME
- elif pressed == 'middle' and menu[selected] == 'TITLE' or filmname == '':
- newfilmname = nameyourfilm(filmfolder, filmname, abc, False)
- if filmname != newfilmname:
- os.system('mv ' + filmfolder + filmname + ' ' + filmfolder + newfilmname)
- filmname = newfilmname
- db = get_film_files(filmname,filmfolder,db)
- vumetermessage('Film title changed to ' + filmname + '!')
- else:
- vumetermessage('')
- rendermenu = True
- #(YANK) COPY FILM
- elif pressed == 'copy' and menu[selected] == 'FILM:' and recordable == False:
- copying = 'film'
- yanked = filmfolder + filmname
- vumetermessage('Film ' + filmname + ' copied! (I)nsert button to place it...')
- #(YANK) COPY TAKE
- elif pressed == 'copy' and menu[selected] == 'TAKE:' and recordable == False:
- copying = 'take'
- yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)+'/take' + str(take).zfill(3)
- vumetermessage('Take ' + str(take) + ' copied! (I)nsert button to place it...')
- #(YANK) COPY SHOT
- elif pressed == 'copy' and menu[selected] == 'SHOT:':
- copying = 'shot'
- yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)
- vumetermessage('Shot ' + str(shot) + ' copied! (I)nsert button to place it...')
- #(YANK) COPY SCENE
- elif pressed == 'copy' and menu[selected] == 'SCENE:':
- copying = 'scene'
- yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3)
- vumetermessage('Scene ' + str(scene) + ' copied! (I)nsert button to place it...')
- #(CUT) MOVE TAKE
- elif pressed == 'move' and menu[selected] == 'TAKE:' and recordable == False:
- copying = 'take'
- moving = True
- yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)+'/take' + str(take).zfill(3)
- vumetermessage('Moving shot ' + str(shot) + ' (I)nsert button to place it...')
- #(CUT) MOVE SHOT
- elif pressed == 'move' and menu[selected] == 'SHOT:':
- copying='shot'
- moving = True
- yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)
- vumetermessage('Moving shot ' + str(shot) + ' (I)nsert button to place it...')
- #(CUT) MOVE SCENE
- elif pressed == 'move' and menu[selected] == 'SCENE:':
- copying='scene'
- moving = True
- yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3)
- vumetermessage('Moving scene ' + str(scene) + ' (I)nsert button to place it...')
- #PASTE SHOT and PASTE SCENE
- elif pressed == 'insert' and yanked:
- if copying == 'take':
- take = counttakes(filmname, filmfolder, scene, shot)
- take=take+1
- vumetermessage('Pasting take, please wait...')
- paste = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/take' + str(take).zfill(3)
- #try:
- # os.makedirs(filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot'+ str(shot).zfill(3))
- #except:
- # pass
- os.system('cp ' + yanked + '.mp4 ' + paste + '.mp4')
- os.system('cp ' + yanked + '.jpeg ' + paste + '.jpeg')
- os.system('cp ' + yanked + '.h264 ' + paste + '.h264')
- os.system('cp ' + yanked + '.wav ' + paste + '.wav')
- paste = ''
- if moving == True:
- os.system('rm -r ' + yanked + '*')
- elif copying == 'shot':
- vumetermessage('Pasting shot, please wait...')
- paste = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_yanked'
- try:
- os.makedirs(filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3))
- except:
- pass
- os.system('cp -r ' + yanked + ' ' + paste)
- if moving == True:
- os.system('rm -r ' + yanked+'/*')
- #Remove hidden placeholder
- #os.system('rm ' + yanked + '/.placeholder')
- elif copying == 'scene':
- vumetermessage('Pasting scene, please wait...')
- paste = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_yanked'
- os.system('cp -r ' + yanked + ' ' + paste)
- if moving == True:
- os.system('rm -r ' + yanked+'/*')
- #Remove hidden placeholder
- #os.system('rm ' + yanked + '/.placeholder')
- elif copying == 'film':
- vumetermessage('Pasting film, please wait...')
- paste = filmfolder+filmname+'_copy'
- os.system('cp -r ' + yanked + ' ' + paste)
- try:
- run_command('rsync -avr --update --progress --files-from='+yanked+'/.origin_videos --no-relative / ' +filmfolder+'.videos/')
- except:
- logger.info('no origin videos')
- #if moving == True:
- #os.system('rm -r ' + yanked)
- #Remove hidden placeholder
- #os.system('rm ' + yanked + '/.placeholder')
- add_organize(filmfolder, filmname)
- organize(filmfolder, filmname)
- organize(filmfolder, filmname)
- updatethumb = True
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- if scene > scenes:
- scene = scenes
- if shot > shots:
- shot = shots
- yanked = ''
- copying = ''
- moving = False
- vumetermessage('Pasted!')
- #time.sleep(3)
- #INSERT SHOT
- elif pressed == 'insert' and menu[selected] != 'SCENE:' and yanked == '':
- insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_insert'
- try:
- os.makedirs(insertshot)
- except:
- print('is there already prob')
- add_organize(filmfolder, filmname)
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- vumetermessage('Shot ' + str(shot) + ' inserted')
- updatethumb = True
- time.sleep(1)
- #INSERT SHOT TO LAST SHOT
- elif pressed == 'insert_shot':
- logger.info('inserting shot')
- shot = countshots(filmname, filmfolder, scene)
- shot=shot+1
- insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_insert'
- try:
- os.makedirs(insertshot)
- except:
- print('is there already prob')
- add_organize(filmfolder, filmname)
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- vumetermessage('Shot ' + str(shot) + ' inserted')
- updatethumb = True
- #INSERT TAKE
- elif pressed == 'insert_take':
- logger.info('inserting take')
- insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)
- try:
- os.makedirs(insertshot)
- run_command('touch ' + insertshot + '/.placeholder')
- except:
- print('is there already prob')
- add_organize(filmfolder, filmname)
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- vumetermessage('Take ' + str(shot) + ' inserted')
- updatethumb = True
- #time.sleep(1)
- #INSERT SCENE
- elif pressed == 'insert' and menu[selected] == 'SCENE:' and recordable == False and yanked == '':
- insertscene = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_insert'
- logger.info("inserting scene")
- os.makedirs(insertscene)
- add_organize(filmfolder, filmname)
- take = 1
- shot = 1
- updatethumb = True
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- vumetermessage('Scene ' + str(scene) + ' inserted')
- time.sleep(1)
- #NEW SCENE
- elif pressed == 'new_scene':
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- vumetermessage('got new scene')
- scene=scenes+1
- shot=1
- take=1
- #DEVELOP
- elif event == 'D':
- try:
+ #WIFI
+ elif pressed == 'middle' and menu[selected] == 'WIFI:':
stopinterface(camera)
- code.interact(local=locals())
+ run_command('wicd-curses')
startinterface()
camera = startcamera(lens,fps)
- loadfilmsetings = True
- except:
- writemessage('hmm.. couldnt enter developer mode')
- #TURN OFF SCREEN
- elif pressed == 'screen':
- if backlight == False:
- # requires wiringpi installed
- run_command('gpio -g pwm 19 1023')
- backlight = True
- camera.start_preview()
- elif backlight == True:
- run_command('gpio -g pwm 19 0')
- backlight = False
- camera.stop_preview()
- elif pressed == 'showmenu':
- if showmenu == 1:
- # requires wiringpi installed
- showmenu = 0
- showmenu_settings = False
- elif showmenu == 0:
- showmenu = 1
- showmenu_settings = True
- #DSK
- elif pressed == 'middle' and menu[selected] == 'DSK:':
- print("usb filmfolder")
- vumetermessage('checking usb mount...')
- filmfolderusb=usbfilmfolder(dsk)
- if filmfolderusb:
- filmfolder=filmfolderusb
- if dsk < 1:
- storagedrives.append(['usb0',filmfolder])
- dsk=1
- loadfilmsettings = True
- elif dsk > 0:
- storagedrives.append(['usb1',filmfolder])
- dsk=2
- loadfilmsettings = True
- else:
- camera_model, camera_revision , filmfolder = getconfig(camera)
- if os.path.isdir(filmfolder) == False:
- os.makedirs(filmfolder)
- #COUNT DISKSPACE
- #sudo mkfs -t ext4 /dev/sdb1
- disk = os.statvfs(filmfolder)
- diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
- #LOAD FILM AND SCENE SETTINGS
- try:
- filmname = getfilms(filmfolder)[0][0]
- except:
- filmname = 'onthefloor'
- try:
- filmname_back = getfilms(filmfolder)[0][1]
- except:
- filmname_back = 'onthefloor'
- if os.path.isdir(filmfolder) == False:
- os.makedirs(filmfolder)
- #loadfilmsettings = True
- updatethumb = True
- rendermenu = True
- #cleanupdisk(filmname,filmfolder)
- serverstate = gonzopiserver(False)
- serverstate = gonzopiserver(True)
- #REMOVE DELETE
- #dsk
- elif pressed == 'remove' and menu[selected] == 'DSK:':
- if dsk != 0:
- print("usb filmfolder")
- os.system('sudo pumount /media/usb'+str(dsk))
- os.system('sudo umount -l /media/usb'+str(dsk))
- try:
- del storagedrives[dsk]
- except:
- pass
- dsk=0
- time.sleep(1)
- #take
- elif pressed == 'remove' and menu[selected] == 'TAKE:':
- remove(filmfolder, filmname, scene, shot, take, 'take')
- organize(filmfolder, filmname)
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- take = counttakes(filmname, filmfolder, scene, shot)
- updatethumb = True
- rendermenu = True
- #loadfilmsettings = True
- time.sleep(0.2)
- #shot
- elif pressed == 'remove' and menu[selected] == 'SHOT:':
- remove(filmfolder, filmname, scene, shot, take, 'shot')
- organize(filmfolder, filmname)
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- take = counttakes(filmname, filmfolder, scene, shot)
- updatethumb = True
- rendermenu = True
- #loadfilmsettings = True
- time.sleep(0.2)
- #scene
- elif pressed == 'remove' and menu[selected] == 'SCENE:' or pressed=='remove_now':
- remove(filmfolder, filmname, scene, shot, take, 'scene')
- organize(filmfolder, filmname)
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- shot = countshots(filmname, filmfolder, scene)
- take = counttakes(filmname, filmfolder, scene, shot)
- updatethumb = True
- rendermenu = True
- #loadfilmsettings = True
- time.sleep(0.2)
- #film
- elif pressed == 'remove' and menu[selected] == 'FILM:':
- remove(filmfolder, filmname, scene, shot, take, 'film')
- filmname = getfilms(filmfolder)[0][0]
- if filmname == '':
- filmname = nameyourfilm(filmfolder,filmname,abc, True)
- else:
- scene, shot, take = countlast(filmname, filmfolder)
loadfilmsettings = True
- updatethumb = True
rendermenu = True
- time.sleep(0.2)
- elif pressed == 'remove' and menu[selected] == 'CAMERA:':
- if camselected != 0:
- cameras.pop(camselected)
- newselected=0
- elif pressed == 'middle' and menu[selected] == 'Add CAMERA':
- if networks != []:
- newcamera = newcamera_ip(numbers_only, network)
- if newcamera != '':
- if newcamera not in cameras and newcamera not in networks:
- sendtocamera(newcamera,port,'NEWFILM:'+filmname)
- time.sleep(0.2)
- sendtocamera(newcamera,port,'Q:'+str(quality))
- time.sleep(0.2)
- sendtocamera(newcamera,port,'SHOT:'+str(shot))
- time.sleep(0.2)
- sendtocamera(newcamera,port,'SCENE:'+str(scene))
- time.sleep(0.2)
- sendtocamera(newcamera,port,'MAKEPLACEHOLDERS:'+str(scenes)+'|'+str(shots))
- cameras.append(newcamera)
- rendermenu = True
- #newselected=newselected+1
- camera_recording=None
- vumetermessage("New camera! "+newcamera)
- else:
- vumetermessage('No network!')
- elif 'SYNCIP:' in pressed:
- msg = pressed.split(':')[1]
- syncfolder=msg.split('|')[1]
- ip = msg.split('|')[0]
- vumetermessage('SYNCING!')
- stopinterface(camera)
- video_files=shotfiles(filmfolder, filmname, scene)
- for i in video_files:
- compileshot(i,filmfolder,filmname)
- logger.info('SYNCING:'+i)
- organize(filmfolder, filmname)
- if not os.path.isfile('/home/pi/.ssh/id_rsa'):
- run_command('ssh-keygen')
- run_command('ssh-copy-id pi@'+ip)
- try:
- run_command('rsync -avr --update --progress --files-from='+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/.origin_videos --no-relative / pi@'+ip+':'+syncfolder+'.videos/')
- except:
- logger.info('no origin videos')
- #run_command('scp -r '+filmfolder+filmname+'/'+'scene'+str(scene).zfill(3)+' pi@'+ip+':'+filmfolder+filmname+'/')
- sendtocamera(ip,port,'SYNCDONE:'+cameras[0]+'|'+filmfolder)
- startinterface()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- rendermenu = True
- elif 'SYNCDONE:' in pressed:
- stopinterface(camera)
- msg = pressed.split(':')[1]
- syncfolder=msg.split('|')[1]
- ip = msg.split('|')[0]
- logger.info('SYNCING from ip:'+ip)
- run_command('ssh-copy-id pi@'+ip)
- try:
- run_command('rsync -avr --update --progress pi@'+ip+':'+syncfolder+filmname+'/scene'+str(scene).zfill(3)+'/ '+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/')
- except:
- logger.info('no files')
- with open(filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/.origin_videos', 'r') as f:
- if f:
- scene_origin_files = [line.rstrip() for line in f]
- #a=0
- #for i in cameras:
- # if a != 0:
- # run_command('rsync -avr --update --progress '+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/ pi@'+i+':'+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/')
- # time.sleep(3)
- # a=a+1
- startinterface()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- rendermenu = True
- vumetermessage('SYNC DONE!')
- elif 'RETAKE' in pressed:
- pressed="retake_now"
- elif 'RETAKE:' in pressed:
- shot=pressed.split(':')[1]
- shot=int(shot)
- retake = True
- pressed="retake_now"
- elif 'SCENE:' in pressed:
- scene=pressed.split(':')[1]
- scene=int(scene)
- shot = countshots(filmname, filmfolder, scene)
- take = counttakes(filmname, filmfolder, scene, shot)
- elif 'SHOT:' in pressed:
- shot=pressed.split(':')[1]
- shot=int(shot)
- take = counttakes(filmname, filmfolder, scene, shot)
- elif 'REMOVE:' in pressed:
- scene=pressed.split(':')[1]
- scene=int(scene)
- shot = countshots(filmname, filmfolder, scene)
- take = counttakes(filmname, filmfolder, scene, shot)
- pressagain='remove_now'
- elif 'Q:' in pressed:
- qual=pressed.split(':')[1]
- quality=int(qual)
- vumetermessage('Quality changed to '+str(quality))
- elif 'CAMERA:' in pressed:
- newselected_maybe=int(pressed.split(':')[1])
- if len(cameras) > newselected_maybe:
- newselected=newselected_maybe
- elif 'MAKEPLACEHOLDERS:' in pressed:
- scenesshots=pressed.split(':')[1]
- pscene=int(scenesshots.split('|')[0])
- pshots=int(scenesshots.split('|')[1])
- #to not throw away empty shots, make placeholders
- for i in range(pshots):
- placeholders=filmfolder + filmname + '/scene' + str(pscene).zfill(3) + '/shot' + str(i+1).zfill(3)
- try:
- os.makedirs(placeholders)
- except:
- logger.info('scene or shot already there!')
- run_command('touch ' + placeholders + '/.placeholder')
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- rendermenu = True
- vumetermessage('CONNECTED TO MASTER TARINA!')
- #SHOWTARINACTRL
- if recordwithports:
- if pressed == 'middle' and menu[selected] == "New FILM":
- newfilmname = nameyourfilm(filmfolder, filmname, abc, True)
- a=0
- for i in cameras:
- if i not in camerasoff:
- sendtocamera(i,port,'NEWFILM:'+newfilmname)
- a=a+1
- elif pressed == "retake":
- a=0
- for i in cameras:
- if i not in camerasoff:
- if a == camselected:
- if camera_recording == a:
- if a==0:
- if recording == True:
- pressed="retake_now"
- retake = True
- camera_recording=None
- else:
- sendtocamera(i,port,'STOPRETAKE')
- camera_recording=None
- else:
- if a==0:
- if recording == False:
- pressed="retake_now"
- retake = True
- camera_recording=0
- else:
- sendtocamera(i,port,'RETAKE:'+str(shot))
- camera_recording=camselected
- else:
- if a==0:
- pressagain='insert_take'
- else:
- sendtocamera(i,port,'TAKEPLACEHOLDER')
- a=a+1
- elif pressed == "middle" and menu[selected]=="Sync SCENE":
- for i in cameras:
- if i != cameras[0]:
- vumetermessage('Hold on syncing!')
- sendtocamera(i,port,'SYNCIP:'+cameras[0]+'|'+filmfolder)
- time.sleep(1)
- elif pressed == "middle" and menu[selected]=='New SCENE':
- a=0
- for i in cameras:
- if i not in camerasoff:
- if a==0:
- pressagain="new_scene"
- else:
- sendtocamera(i,port,'NEWSCENE')
- a=a+1
- elif pressed == "record" and camera_recording != None:
- if camera_recording == 0:
- if recording == True:
- pressed='record_now'
- else:
- sendtocamera(cameras[camera_recording],port,'STOP')
- camera_recording=None
- elif pressed == "record" and camera_recording == None:
- a=0
- for i in cameras:
- if i not in camerasoff:
- if a == camselected:
- if camselected==0:
- pressed='record_now'
- else:
- sendtocamera(i,port,'REC')
- camera_recording=camselected
- else:
- if a==0:
- pressagain='insert_shot'
- else:
- sendtocamera(i,port,'PLACEHOLDER')
- a=a+1
- elif pressed == "remove" and menu[selected]=='SCENE:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'REMOVE:'+str(scene))
- a=a+1
- elif pressed == "up" and menu[selected]=='SCENE:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'SCENE:'+str(scene+1))
- a=a+1
- elif pressed == "down" and menu[selected]=='SCENE:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'SCENE:'+str(scene-1))
- a=a+1
- elif pressed == "up" and menu[selected]=='SHOT:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'SHOT:'+str(shot+1))
- a=a+1
- elif pressed == "down" and menu[selected]=='SHOT:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'SHOT:'+str(shot-1))
- a=a+1
- elif pressed == "up" and menu[selected]=='Q:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'Q:'+str(quality+1))
- a=a+1
- elif pressed == "down" and menu[selected]=='Q:':
- a=0
- for i in cameras:
- if a!=0:
- sendtocamera(i,port,'Q:'+str(quality-1))
- a=a+1
- elif event == "0":
- newselected = 0
- elif event == "1":
- if len(cameras) > 1:
- newselected = 1
- elif event == "2":
- if len(cameras) > 2:
- newselected = 2
- elif event == "3":
- if len(cameras) > 3:
- newselected = 3
- elif event == "4":
- if len(cameras) > 4:
- newselected = 4
- elif event == "5":
- if len(cameras) > 5:
- newselected = 5
- elif event == "6":
- if len(cameras) > 6:
- newselected = 6
- elif event == "7":
- if len(cameras) > 7:
- newselected = 7
- elif event == "8":
- if len(cameras) > 8:
- newselected = 8
- elif event == "9":
- if len(cameras) > 9:
- newselected = 9
- elif event == "-":
- if cameras[camselected] not in camerasoff:
- camerasoff.append(cameras[camselected])
- elif event == "+":
- if cameras[camselected] in camerasoff:
- camerasoff.remove(cameras[camselected])
- elif camselected != newselected:
- if camera_recording != None:
- #change camera
- a=0
- for c in cameras:
- if c not in camerasoff:
- if a == camselected:
- if a == 0:
- #pressed='record_now'
- #pressagain='insert_shot'
- delayedstop=c
- else:
- #sendtocamera(c,port,'STOP')
- #time.sleep(sleep)
- #sendtocamera(c,port,'PLACEHOLDER')
- delayedstop=c
- elif a == newselected:
- if a == 0:
- if recording == False:
- pressed='record_now'
- else:
- sendtocamera(c,port,'REC')
- camera_recording=newselected
- else:
- if a == 0:
- pressagain='insert_shot'
- else:
- sendtocamera(c,port,'PLACEHOLDER')
- #time.sleep(2)
- a=a+1
- if delayedstop:
- time.sleep(0.05)
- if delayedstop==cameras[0]:
- if recording == True:
- pressed='record_now'
- pressagain='insert_shot'
- else:
- sendtocamera(delayedstop,port,'STOP')
- time.sleep(sleep)
- sendtocamera(delayedstop,port,'PLACEHOLDER')
- camselected=newselected
- rendermenu = True
- #vumetermessage('filming with '+camera_model +' ip:'+ network + ' '+camerasconnected+' camselected:'+str(camselected))
- if len(cameras) > 1:
- vumetermessage('filming with '+camera_model +' ip:'+ cameras[camselected] + ' '+camerasconnected+' camselected:'+str(camselected)+' rec:'+str(camera_recording))
- else:
- vumetermessage('filming with '+camera_model +' ip:'+ network + ' '+camerasconnected+' camselected:'+str(camselected)+' rec:'+str(camera_recording))
-
-
- #RECORD AND PAUSE
- if beepcountdown > 1:
- if time.time() - lastbeep > 1:
- beep(bus)
- beepcountdown -= 1
- lastbeep = time.time()
- logger.info('beepcountdown: ' + str(beepcountdown))
- vumetermessage('Filming in ' + str(beepcountdown) + ' seconds, press record again to cancel ')
- elif beepcountdown > 0:
- if time.time() - float(lastbeep) > 0.1:
- beep(bus)
- vumetermessage('Get ready!!')
- if time.time() - lastbeep > 1:
- longbeep(bus)
- beepcountdown = 0
- if recordwithports == True:
- if retake == True:
- pressed = 'retake_now'
- retake = False
- else:
- pressed = 'record_now'
- else:
- pressed = 'record'
- print('exhausted from all beepings')
- elif 'CAMERA:' in pressed:
- newselected_maybe=int(pressed.split(':')[1])
- if len(cameras) > newselected_maybe:
- newselected=newselected_maybe
- if pressed == 'record' and recordwithports==False or pressed == 'record_now' or pressed == 'retake_now' or pressed == 'retake' and recordwithports==False or reclenght != 0 and t > reclenght:
- overlay = removeimage(camera, overlay)
- if recording == False and recordable == True or recording == False and pressed == 'record_now' or recording == False and pressed == 'retake_now':
- #camera_recording=0
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- if pressed == "record":
- #shot = shots+1
- take = takes+1
- elif pressed == "retake":
- take = takes+1
- elif pressed == 'record_now':
- shot=shots+1
- take=1
- elif pressed == 'retake_now':
- takes = counttakes(filmname, filmfolder, scene, shot)
- take = takes + 1
- foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
- filename = 'take' + str(take).zfill(3)
- if beeps > 0 and beeping == False:
- beeping = True
- beepcountdown = beeps
- elif beepcountdown == 0:
- beeping = False
- if os.path.isdir(foldername) == False:
- os.makedirs(foldername)
- if cammode == 'film':
- videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0]
- tot = int(videos_totalt.videos)
- video_origins=datetime.datetime.now().strftime('%Y%d%m')+str(tot).zfill(5)+'_'+os.urandom(8).hex()
- db.insert('videos', tid=datetime.datetime.now(), filename=filmfolder+'.videos/'+video_origins+'.mp4', foldername=foldername, filmname=filmname, scene=scene, shot=shot, take=take, audiolenght=0, videolenght=0)
- os.system(gonzopifolder + '/alsa-utils-1.1.3/aplay/arecord -D dsnoop:' + str(plughw) + ' -f '+soundformat+' -c ' + str(channels) + ' -r '+soundrate+' -vv '+ foldername + filename + '.wav &')
- sound_start = time.time()
- if onlysound != True:
- camera.start_recording(filmfolder+ '.videos/'+video_origins+'.h264', format='h264', bitrate = 5555555, level=profilelevel)
- starttime = time.time()
- os.system('ln -sfr '+filmfolder+'.videos/'+video_origins+'.h264 '+foldername+filename+'.h264')
- recording = True
- showmenu = 0
- if cammode == 'picture':
- #picdate=datetime.datetime.now().strftime('%Y%d%m')
- picture = foldername +'picture' + str(take).zfill(3) + '.jpeg'
- print('taking picture')
- camera.capture(picture,format="jpeg",use_video_port=True)
- run_command('touch ' + foldername + 'take' + str(take).zfill(3) + '.mp4')
- basewidth = 800
- img = Image.open(picture)
- wpercent = (basewidth/float(img.size[0]))
- hsize = int((float(img.size[1])*float(wpercent)))
- img = img.resize((basewidth,hsize), Image.ANTIALIAS)
- img.save(foldername+'take'+str(take).zfill(3) + '.jpeg')
- vumetermessage('Great Pic taken!!')
+ #NEW FILM
+ elif pressed == 'middle' and menu[selected] == 'NEW' or filmname == '' or pressed == 'new_film':
+ filmname_exist=False
+ if newfilmname == '':
+ newfilmname = nameyourfilm(filmfolder, filmname, abc, True)
+ allfilm = getfilms(filmfolder)
+ for i in allfilm:
+ if i[0] == newfilmname:
+ filmname_exist=True
+ if filmname != newfilmname and filmname_exist==False:
+ filmname = newfilmname
+ os.makedirs(filmfolder + filmname)
+ vumetermessage('Good luck with your film ' + filmname + '!')
+ #make a filmhash
+ print('making filmhash...')
+ filmhash = shortuuid.uuid()
+ with open(filmfolder + filmname + '/.filmhash', 'w') as f:
+ f.write(filmhash)
updatethumb = True
- elif beepcountdown > 0 and beeping == True:
- beeping = False
- beepcountdown = 0
- vumetermessage('Filming was canceled!!')
- elif recording == True and float(time.time() - starttime) > 0.2:
- #print(term.clear+term.home)
- disk = os.statvfs(filmfolder)
- diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
- recording = False
- if showmenu_settings == True:
- showmenu = 1
- if onlysound != True:
- camera.stop_recording()
- os.system('pkill arecord')
- soundlag=starttime-sound_start
- db.update('videos', where='filename="'+filmfolder+'.videos/'+video_origins+'.mp4"', soundlag=soundlag)
- #time.sleep(0.005) #get audio at least 0.1 longer
- #camera.capture(foldername + filename + '.jpeg', resize=(800,341))
- if onlysound != True:
- try:
- #camera.capture(foldername + filename + '.jpeg', resize=(800,340), use_video_port=True)
- camera.capture(foldername + filename + '.jpeg', resize=(800,450), use_video_port=True)
- except:
- logger.warning('something wrong with camera jpeg capture')
- #delayerr = audiotrim(foldername,filename)
- onlysound = False
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- if beeps > 0:
- if bus:
- buzz(300)
+ rendermenu = True
+ scene = 1
+ shot = 1
+ take = 1
+ #selectedaction = 0
+ newfilmname = ''
else:
- run_command('aplay -D plughw:' + str(plughw) + ' '+ gonzopifolder + '/extras/beep.wav')
- if round(fps) != 25:
- compileshot(foldername + filename,filmfolder,filmname)
- #os.system('cp /dev/shm/' + filename + '.wav ' + foldername + filename + '.wav')
- if beeps > 0:
- if bus:
- buzz(150)
+ print(term.clear)
+ filmname = newfilmname
+ newfilmname = ''
+ vumetermessage('film already exist!')
+ logger.info('film already exist!')
+ updatethumb = True
+ loadfilmsettings = True
+ rendermenu = True
+ #EDIT FILM NAME
+ elif pressed == 'middle' and menu[selected] == 'TITLE' or filmname == '':
+ newfilmname = nameyourfilm(filmfolder, filmname, abc, False)
+ if filmname != newfilmname:
+ os.system('mv ' + filmfolder + filmname + ' ' + filmfolder + newfilmname)
+ filmname = newfilmname
+ db = get_film_files(filmname,filmfolder,db)
+ vumetermessage('Film title changed to ' + filmname + '!')
else:
- run_command('aplay -D plughw:' + str(plughw) + ' '+ gonzopifolder + '/extras/beep.wav')
- t = 0
- rectime = ''
- vumetermessage('Gonzopi ' + gonzopiversion[:-1] + ' ' + gonzopivername[:-1])
- updatethumb = True
- #camera_recording=0
- #if not in last shot or take then go to it
- if pressed == 'record' and recordable == False:
- scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- shot=shots+1
- take=1
- #take = takes
- #takes = counttakes(filmname, filmfolder, scene, shot)
- if pressed == 'retake' and recordable == False:
- #scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
- takes = counttakes(filmname, filmfolder, scene, shot)
- #take = takes
- #takes = counttakes(filmname, filmfolder, scene, shot)
- take = takes + 1
- #ENTER (auto shutter, iso, awb on/off)
- elif pressed == 'middle' and menu[selected] == 'SHUTTER:':
- if camera.shutter_speed == 0:
- camera.shutter_speed = camera.exposure_speed
- else:
- camera.shutter_speed = 0
- elif pressed == 'middle' and menu[selected] == 'ISO:':
- if camera.iso == 0:
- camera.iso = 100
- else:
- camera.iso = 0
- elif pressed == 'middle' and menu[selected] == 'RED:':
- if camera.awb_mode == 'auto':
- camera.awb_gains = (float(camera.awb_gains[0]), float(camera.awb_gains[1]))
- camera.awb_mode = 'off'
- else:
- camera.awb_mode = 'auto'
- elif pressed == 'middle' and menu[selected] == 'BLUE:':
- if camera.awb_mode == 'auto':
- camera.awb_gains = (float(camera.awb_gains[0]), float(camera.awb_gains[1]))
- camera.awb_mode = 'off'
- else:
- camera.awb_mode = 'auto'
- elif pressed == 'middle' and menu[selected] == 'BEEP:':
- beeps = 0
- elif pressed == 'middle' and menu[selected] == 'LENGTH:':
- reclenght = 0
- elif pressed == 'middle' and menu[selected] == 'LIVE:':
- if stream == '':
- stream = startstream(camera, stream, plughw, channels)
- if stream == '':
- vumetermessage('something wrong with streaming')
- else:
- live = 'yes'
- else:
- stream = stopstream(camera, stream)
- live = 'no'
- elif pressed == 'middle' and menu[selected] == 'BRIGHT:':
- camera.brightness = 50
- elif pressed == 'middle' and menu[selected] == 'CONT:':
- camera.contrast = 0
- elif pressed == 'middle' and menu[selected] == 'SAT:':
- camera.saturation = 0
- elif pressed == 'middle' and menu[selected] == 'MIC:':
- miclevel = 70
- elif pressed == 'middle' and menu[selected] == 'PHONES:':
- headphoneslevel = 70
- elif pressed == 'middle' and menu[selected] == 'SRV:':
- if showgonzopictrl == False:
- menu=gonzopictrlmenu
- #selected=0
- showgonzopictrl = True
- else:
- menu=standardmenu
- showgonzopictrl=False
-
- #UP
- elif pressed == 'up':
- if menu[selected] == 'FILM:':
- filmname = loadfilm(filmname, filmfolder, camera, overlay)
- loadfilmsettings = True
- if menu[selected] == 'BRIGHT:':
- camera.brightness = min(camera.brightness + 1, 99)
- elif menu[selected] == 'CONT:':
- camera.contrast = min(camera.contrast + 1, 99)
- elif menu[selected] == 'SAT:':
- camera.saturation = min(camera.saturation + 1, 99)
- elif menu[selected] == 'SFX:':
- if effectselected < len(effects) - 1:
- effectselected += 1
- camera.image_effect = effects[effectselected]
- elif menu[selected] == 'SHUTTER:':
- if camera.shutter_speed == 0:
- camera.shutter_speed = camera.exposure_speed
- if camera.shutter_speed < 5000:
- camera.shutter_speed = min(camera.shutter_speed + 50, 50000)
- else:
- camera.shutter_speed = min(camera.shutter_speed + 200, 50000)
- elif menu[selected] == 'ISO:':
- camera.iso = min(camera.iso + 100, 1600)
- elif menu[selected] == 'BEEP:':
- beeps = beeps + 1
- elif menu[selected] == 'FLIP:':
- if flip == 'yes':
- camera.hflip = False
- camera.vflip = False
- flip = 'no'
- time.sleep(0.2)
- else:
- camera.hflip = True
- camera.vflip = True
- flip = 'yes'
- time.sleep(0.2)
- elif menu[selected] == 'LENGTH:':
- if reclenght < 1:
- reclenght = reclenght + 0.2
- else:
- reclenght = int(reclenght + 1)
- time.sleep(0.1)
- elif menu[selected] == 'MIC:':
- if miclevel < 100:
- miclevel = miclevel + 2
- run_command('amixer -c 0 sset Mic ' + str(miclevel) + '% unmute')
- elif menu[selected] == 'PHONES:':
- if headphoneslevel < 100:
- headphoneslevel = headphoneslevel + 2
- run_command('amixer -c 0 sset Speaker ' + str(headphoneslevel) + '%')
- elif menu[selected] == 'SCENE:' and recording == False:
- if scene <= scenes:
- scene += 1
- #shot = countshots(filmname, filmfolder, scene)
- shot = 1
- take = counttakes(filmname, filmfolder, scene, shot)
- #scene, shots, takes = browse2(filmname, filmfolder, scene, shot, take, 0, 1)
- #shot = 1
- elif menu[selected] == 'SHOT:' and recording == False:
- if shot <= shots:
- shot += 1
- take = counttakes(filmname, filmfolder, scene, shot)
- #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 1, 1)
- #takes = take
- elif menu[selected] == 'TAKE:' and recording == False:
- if take <= takes:
- take += 1
- #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 2, 1)
- elif menu[selected] == 'RED:':
- camera.awb_mode = 'off'
- if float(camera.awb_gains[0]) < 7.98:
- camera.awb_gains = (round(camera.awb_gains[0],2) + 0.02, round(camera.awb_gains[1],2))
- elif menu[selected] == 'BLUE:':
- camera.awb_mode = 'off'
- if float(camera.awb_gains[1]) < 7.98:
- camera.awb_gains = (round(camera.awb_gains[0],2), round(camera.awb_gains[1],2) + 0.02)
- elif menu[selected] == 'SRV:':
- if serverstate == 'on':
+ vumetermessage('')
+ rendermenu = True
+ #(YANK) COPY FILM
+ elif pressed == 'copy' and menu[selected] == 'FILM:' and recordable == False:
+ copying = 'film'
+ yanked = filmfolder + filmname
+ vumetermessage('Film ' + filmname + ' copied! (I)nsert button to place it...')
+ #(YANK) COPY TAKE
+ elif pressed == 'copy' and menu[selected] == 'TAKE:' and recordable == False:
+ copying = 'take'
+ yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)+'/take' + str(take).zfill(3)
+ vumetermessage('Take ' + str(take) + ' copied! (I)nsert button to place it...')
+ #(YANK) COPY SHOT
+ elif pressed == 'copy' and menu[selected] == 'SHOT:':
+ copying = 'shot'
+ yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)
+ vumetermessage('Shot ' + str(shot) + ' copied! (I)nsert button to place it...')
+ #(YANK) COPY SCENE
+ elif pressed == 'copy' and menu[selected] == 'SCENE:':
+ copying = 'scene'
+ yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3)
+ vumetermessage('Scene ' + str(scene) + ' copied! (I)nsert button to place it...')
+ #(CUT) MOVE TAKE
+ elif pressed == 'move' and menu[selected] == 'TAKE:' and recordable == False:
+ copying = 'take'
+ moving = True
+ yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)+'/take' + str(take).zfill(3)
+ vumetermessage('Moving shot ' + str(shot) + ' (I)nsert button to place it...')
+ #(CUT) MOVE SHOT
+ elif pressed == 'move' and menu[selected] == 'SHOT:':
+ copying='shot'
+ moving = True
+ yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)
+ vumetermessage('Moving shot ' + str(shot) + ' (I)nsert button to place it...')
+ #(CUT) MOVE SCENE
+ elif pressed == 'move' and menu[selected] == 'SCENE:':
+ copying='scene'
+ moving = True
+ yanked = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3)
+ vumetermessage('Moving scene ' + str(scene) + ' (I)nsert button to place it...')
+ #PASTE SHOT and PASTE SCENE
+ elif pressed == 'insert' and yanked:
+ if copying == 'take':
+ take = counttakes(filmname, filmfolder, scene, shot)
+ take=take+1
+ vumetermessage('Pasting take, please wait...')
+ paste = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/take' + str(take).zfill(3)
+ #try:
+ # os.makedirs(filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot'+ str(shot).zfill(3))
+ #except:
+ # pass
+ os.system('cp ' + yanked + '.mp4 ' + paste + '.mp4')
+ os.system('cp ' + yanked + '.jpeg ' + paste + '.jpeg')
+ os.system('cp ' + yanked + '.h264 ' + paste + '.h264')
+ os.system('cp ' + yanked + '.wav ' + paste + '.wav')
+ paste = ''
+ if moving == True:
+ os.system('rm -r ' + yanked + '*')
+ elif copying == 'shot':
+ vumetermessage('Pasting shot, please wait...')
+ paste = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_yanked'
+ try:
+ os.makedirs(filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3))
+ except:
+ pass
+ os.system('cp -r ' + yanked + ' ' + paste)
+ if moving == True:
+ os.system('rm -r ' + yanked+'/*')
+ #Remove hidden placeholder
+ #os.system('rm ' + yanked + '/.placeholder')
+ elif copying == 'scene':
+ vumetermessage('Pasting scene, please wait...')
+ paste = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_yanked'
+ os.system('cp -r ' + yanked + ' ' + paste)
+ if moving == True:
+ os.system('rm -r ' + yanked+'/*')
+ #Remove hidden placeholder
+ #os.system('rm ' + yanked + '/.placeholder')
+ elif copying == 'film':
+ vumetermessage('Pasting film, please wait...')
+ paste = filmfolder+filmname+'_copy'
+ os.system('cp -r ' + yanked + ' ' + paste)
+ try:
+ run_command('rsync -avr --update --progress --files-from='+yanked+'/.origin_videos --no-relative / ' +filmfolder+'.videos/')
+ except:
+ logger.info('no origin videos')
+ #if moving == True:
+ #os.system('rm -r ' + yanked)
+ #Remove hidden placeholder
+ #os.system('rm ' + yanked + '/.placeholder')
+ add_organize(filmfolder, filmname)
+ organize(filmfolder, filmname)
+ organize(filmfolder, filmname)
+ updatethumb = True
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ if scene > scenes:
+ scene = scenes
+ if shot > shots:
+ shot = shots
+ yanked = ''
+ copying = ''
+ moving = False
+ vumetermessage('Pasted!')
+ #time.sleep(3)
+ #INSERT SHOT
+ elif pressed == 'insert' and menu[selected] != 'SCENE:' and yanked == '':
+ insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_insert'
try:
- os.makedirs(gonzopifolder+'/srv/sessions')
- os.system('chown www-data '+gonzopifolder+'/srv/sessions')
+ os.makedirs(insertshot)
except:
- print('srv folder exist')
- serverstate = 'false'
- serverstate = gonzopiserver(False)
- elif serverstate == 'off':
- serverstate = 'on'
- serverstate = gonzopiserver(True)
- elif menu[selected] == 'WIFI:':
- if wifistate == 'on':
- run_command('sudo iwconfig wlan0 txpower off')
- wifistate = 'off'
- elif wifistate == 'off':
- run_command('sudo iwconfig wlan0 txpower auto')
- wifistate = 'on'
- elif menu[selected] == 'SEARCH:':
- if searchforcameras == 'on':
- searchforcameras = 'off'
- elif searchforcameras == 'off':
- searchforcameras = 'on'
- elif menu[selected] == 'MODE:':
- if cammode == 'film':
- cammode = 'picture'
- vumetermessage('changing to picture mode')
- elif cammode == 'picture':
- cammode = 'film'
- vumetermessage('changing to film mode')
- camera.stop_preview()
- camera.close()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- flushbutton()
- elif menu[selected] == 'LENS:':
- s = 0
- for a in lenses:
- if a == lens:
- selectlens = s
- s += 1
- if selectlens < len(lenses) - 1:
- selectlens += 1
- lens = os.listdir('lenses/')[selectlens]
- #npzfile = np.load('lenses/' + lens)
- #lensshade = npzfile['lens_shading_table']
- table = read_table('lenses/' + lens)
- camera.lens_shading_table = table
- elif menu[selected] == 'COMP:':
- if comp < 1:
- comp += 1
- elif menu[selected] == 'HW:':
- if plughw < len(getaudiocards())-1:
- plughw += 1
- vumetermessage(getaudiocards()[plughw])
- elif menu[selected] == 'CH:':
- if channels == 1:
- channels = 2
- elif menu[selected] == 'FPS:':
- if fps_selected < len(fps_selection)-1:
- fps_selected+=1
- fps=fps_selection[fps_selected]
- camera.framerate = fps
- elif menu[selected] == 'Q:':
- if scenes == 0:
- if quality < 39:
- quality += 1
- elif menu[selected] == 'CAMERA:':
- if camselected < len(cameras)-1:
- newselected = camselected+1
- logger.info('camera selected:'+str(camselected))
- elif menu[selected] == 'DSK:':
- if dsk+1 < len(storagedrives):
- dsk += 1
- filmfolder = storagedrives[dsk][1]
- loadfilmsettings = True
- #COUNT DISKSPACE
- disk = os.statvfs(filmfolder)
- diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
- #LOAD FILM AND SCENE SETTINGS
+ print('is there already prob')
+ add_organize(filmfolder, filmname)
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ vumetermessage('Shot ' + str(shot) + ' inserted')
+ updatethumb = True
+ time.sleep(1)
+ #INSERT SHOT TO LAST SHOT
+ elif pressed == 'insert_shot':
+ logger.info('inserting shot')
+ shot = countshots(filmname, filmfolder, scene)
+ shot=shot+1
+ insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_insert'
try:
- filmname = getfilms(filmfolder)[0][0]
+ os.makedirs(insertshot)
except:
- filmname = filmname
+ print('is there already prob')
+ add_organize(filmfolder, filmname)
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ vumetermessage('Shot ' + str(shot) + ' inserted')
+ updatethumb = True
+ #INSERT TAKE
+ elif pressed == 'insert_take':
+ logger.info('inserting take')
+ insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3)
try:
- filmname_back = getfilms(filmfolder)[0][1]
+ os.makedirs(insertshot)
+ run_command('touch ' + insertshot + '/.placeholder')
except:
- filmname_back = filmname
- if serverstate == 'on':
- gonzopiserver(False)
- gonzopiserver(True)
-
- #LEFT
- elif pressed == 'left':
- if selected > 0:
- selected = selected - 1
- else:
- selected = len(menu) - 1
- if selected == 5:
- selected = 4
- #DOWN
- elif pressed == 'down':
- if menu[selected] == 'FILM:':
- filmname = loadfilm(filmname, filmfolder, camera, overlay)
- loadfilmsettings = True
- elif menu[selected] == 'BRIGHT:':
- camera.brightness = max(camera.brightness - 1, 0)
- elif menu[selected] == 'CONT:':
- camera.contrast = max(camera.contrast - 1, -100)
- elif menu[selected] == 'SAT:':
- camera.saturation = max(camera.saturation - 1, -100)
- elif menu[selected] == 'SFX:':
- if effectselected > 0:
- effectselected -= 1
- camera.image_effect = effects[effectselected]
- elif menu[selected] == 'SHUTTER:':
- if camera.shutter_speed == 0:
- camera.shutter_speed = camera.exposure_speed
- if camera.shutter_speed < 5000:
- camera.shutter_speed = max(camera.shutter_speed - 50, 20)
- else:
- camera.shutter_speed = max(camera.shutter_speed - 200, 200)
- elif menu[selected] == 'ISO:':
- camera.iso = max(camera.iso - 100, 100)
- elif menu[selected] == 'BEEP:':
- if beeps > 0:
- beeps = beeps - 1
- elif menu[selected] == 'FLIP:':
- if flip == 'yes':
- camera.hflip = False
- camera.vflip = False
- flip = 'no'
- time.sleep(0.2)
- else:
- camera.hflip = True
- camera.vflip = True
- flip = 'yes'
- time.sleep(0.2)
- elif menu[selected] == 'LENGTH:':
- if reclenght > 1:
- reclenght = int(reclenght - 1)
- time.sleep(0.1)
- elif reclenght > 0.3:
- reclenght = reclenght - 0.2
- time.sleep(0.1)
- else:
- reclenght = 0
- elif menu[selected] == 'MIC:':
- if miclevel > 0:
- miclevel = miclevel - 2
- run_command('amixer -c 0 sset Mic ' + str(miclevel) + '% unmute')
- elif menu[selected] == 'PHONES:':
- if headphoneslevel > 0:
- headphoneslevel = headphoneslevel - 2
- run_command('amixer -c 0 sset Speaker ' + str(headphoneslevel) + '%')
- elif menu[selected] == 'SCENE:' and recording == False:
- if scene > 1:
- scene -= 1
- #shot = countshots(filmname, filmfolder, scene)
+ print('is there already prob')
+ add_organize(filmfolder, filmname)
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ vumetermessage('Take ' + str(shot) + ' inserted')
+ updatethumb = True
+ #time.sleep(1)
+ #INSERT SCENE
+ elif pressed == 'insert' and menu[selected] == 'SCENE:' and recordable == False and yanked == '':
+ insertscene = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_insert'
+ logger.info("inserting scene")
+ os.makedirs(insertscene)
+ add_organize(filmfolder, filmname)
+ take = 1
+ shot = 1
+ updatethumb = True
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ vumetermessage('Scene ' + str(scene) + ' inserted')
+ time.sleep(1)
+ #NEW SCENE
+ elif pressed == 'new_scene':
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ vumetermessage('got new scene')
+ scene=scenes+1
shot=1
- take = counttakes(filmname, filmfolder, scene, shot)
- #scene, shots, take = browse2(filmname, filmfolder, scene, shot, take, 0, -1)
- #takes = take
- #shot = 1
- elif menu[selected] == 'SHOT:' and recording == False:
- if shot > 1:
- shot -= 1
- take = counttakes(filmname, filmfolder, scene, shot)
- #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 1, -1)
- #takes = take
- elif menu[selected] == 'TAKE:' and recording == False:
- if take > 1:
- take -= 1
- #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 2, -1)
- elif menu[selected] == 'RED:':
- camera.awb_mode = 'off'
- if float(camera.awb_gains[0]) > 0.02:
- camera.awb_gains = (round(camera.awb_gains[0],2) - 0.02, round(camera.awb_gains[1],2))
- elif menu[selected] == 'BLUE:':
- camera.awb_mode = 'off'
- if float(camera.awb_gains[1]) > 0.02:
- camera.awb_gains = (round(camera.awb_gains[0],2), round(camera.awb_gains[1],2) - 0.02)
- elif menu[selected] == 'SRV:':
- if serverstate == 'on':
+ take=1
+ #DEVELOP
+ elif event == 'D':
try:
- os.makedirs(gonzopifolder+'/srv/sessions')
- os.system('chown www-data '+gonzopifolder+'/srv/sessions')
+ stopinterface(camera)
+ code.interact(local=locals())
+ startinterface()
+ camera = startcamera(lens,fps)
+ loadfilmsetings = True
except:
- print('srv folder exist')
- serverstate = gonzopiserver(False)
- elif serverstate == 'off':
- serverstate = gonzopiserver(True)
- elif menu[selected] == 'WIFI:':
- if wifistate == 'on':
- run_command('sudo iwconfig wlan0 txpower off')
- wifistate = 'off'
- elif wifistate == 'off':
- run_command('sudo iwconfig wlan0 txpower auto')
- wifistate = 'on'
- elif menu[selected] == 'SEARCH:':
- if searchforcameras == 'on':
- searchforcameras = 'off'
- elif searchforcameras == 'off':
- seaarchforcameras = 'on'
- elif menu[selected] == 'MODE:':
- if cammode == 'film':
- cammode = 'picture'
- vumetermessage('changing to picture mode')
- elif cammode == 'picture':
- cammode = 'film'
- vumetermessage('changing to film mode')
- camera.stop_preview()
- camera.close()
- camera = startcamera(lens,fps)
- loadfilmsettings = True
- flushbutton()
- elif menu[selected] == 'LENS:':
- s = 0
- for a in lenses:
- if a == lens:
- selectlens = s
- s += 1
- if selectlens > 0:
- selectlens -= 1
- lens = os.listdir('lenses/')[selectlens]
- #npzfile = np.load('lenses/' + lens)
- #lensshade = npzfile['lens_shading_table']
- table = read_table('lenses/' + lens)
- camera.lens_shading_table = table
- elif menu[selected] == 'DUB:':
- if round(dub[0],1) == 1.0 and round(dub[1],1) > 0.0:
- dub[1] -= 0.1
- if round(dub[1],1) == 1.0 and round(dub[0],1) < 1.0:
- dub[0] += 0.1
- elif menu[selected] == 'COMP:':
- if comp > 0:
- comp -= 1
- elif menu[selected] == 'HW:':
- if plughw > 0:
- plughw -= 1
- vumetermessage(getaudiocards()[plughw])
- elif menu[selected] == 'CH:':
- if channels == 2:
- channels = 1
- elif menu[selected] == 'FPS:':
- if fps_selected > 0:
- fps_selected-=1
- fps=fps_selection[fps_selected]
- camera.framerate = fps
- elif menu[selected] == 'Q:':
- if scenes == 0:
- if quality > 10:
- quality -= 1
- elif menu[selected] == 'CAMERA:':
- if camselected > 0:
- newselected = camselected-1
- logger.info('camera selected:'+str(camselected))
- elif menu[selected] == 'DSK:':
- if dsk > 0:
- dsk -= 1
- filmfolder = storagedrives[dsk][1]
- loadfilmsettings = True
+ writemessage('hmm.. couldnt enter developer mode')
+ #TURN OFF SCREEN
+ elif pressed == 'screen':
+ if backlight == False:
+ # requires wiringpi installed
+ run_command('gpio -g pwm 19 1023')
+ backlight = True
+ camera.start_preview()
+ elif backlight == True:
+ run_command('gpio -g pwm 19 0')
+ backlight = False
+ camera.stop_preview()
+ elif pressed == 'showmenu':
+ if showmenu == 1:
+ # requires wiringpi installed
+ showmenu = 0
+ showmenu_settings = False
+ elif showmenu == 0:
+ showmenu = 1
+ showmenu_settings = True
+ #DSK
+ elif pressed == 'middle' and menu[selected] == 'DSK:':
+ print("usb filmfolder")
+ vumetermessage('checking usb mount...')
+ filmfolderusb=usbfilmfolder(dsk)
+ if filmfolderusb:
+ filmfolder=filmfolderusb
+ if dsk < 1:
+ storagedrives.append(['usb0',filmfolder])
+ dsk=1
+ loadfilmsettings = True
+ elif dsk > 0:
+ storagedrives.append(['usb1',filmfolder])
+ dsk=2
+ loadfilmsettings = True
+ else:
+ camera_model, camera_revision , filmfolder = getconfig(camera)
+ if os.path.isdir(filmfolder) == False:
+ os.makedirs(filmfolder)
#COUNT DISKSPACE
+ #sudo mkfs -t ext4 /dev/sdb1
disk = os.statvfs(filmfolder)
diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
#LOAD FILM AND SCENE SETTINGS
try:
filmname = getfilms(filmfolder)[0][0]
except:
- filmname = filmname
+ filmname = 'onthefloor'
try:
filmname_back = getfilms(filmfolder)[0][1]
except:
- filmname_back = filmname
- if serverstate == 'on':
- gonzopiserver(False)
- gonzopiserver(True)
-
- #RIGHT
- elif pressed == 'right':
- if selected < len(menu) - 1:
- selected = selected + 1
- else:
- selected = 0
- if selected == 5: #jump over recording time
- selected = 6
- #Start Recording Time
- if recording == True:
- t = time.time() - starttime
- rectime = time.strftime("%H:%M:%S", time.gmtime(t))
- #Load settings
- if loadfilmsettings == True:
- db = get_film_files(filmname,filmfolder,db)
- try:
- filmsettings = loadsettings(filmfolder, filmname)
- camera.brightness = filmsettings[2]
- camera.contrast = filmsettings[3]
- camera.saturation = filmsettings[4]
- camera.shutter_speed = filmsettings[5]
- camera.iso = filmsettings[6]
- camera.awb_mode = filmsettings[7]
- camera.awb_gains = filmsettings[8]
- awb_lock = filmsettings[9]
- miclevel = filmsettings[10]
- headphoneslevel = filmsettings[11]
- beeps = filmsettings[12]
- flip = filmsettings[13]
- comp = filmsettings[14]
- between = filmsettings[15]
- duration = filmsettings[16]
- showmenu_settings = filmsettings[17]
- quality = filmsettings[18]
- #wifistate = filmsettings[19]
- #serverstate=filmsettings[20]
- plughw=filmsettings[21]
- channels=filmsettings[22]
- #cammode=filmsettings[23]
- scene=filmsettings[24]
- shot=filmsettings[25]
- take=filmsettings[26]
- logger.info('film settings loaded & applied')
- time.sleep(0.2)
- except:
- logger.warning('could not load film settings')
- if flip == "yes":
- camera.vflip = True
- camera.hflip = True
- run_command('amixer -c 0 sset Mic ' + str(miclevel) + '% unmute')
- run_command('amixer -c 0 sset Speaker ' + str(headphoneslevel) + '%')
- print(filmfolder)
- print(filmname)
- origin_videos=organize(filmfolder, filmname)
- print('ORIGIN')
- print(origin_videos)
- print('total of videos: '+str(len(origin_videos)))
- with open(filmfolder+filmname+'/.origin_videos', 'w') as outfile:
- outfile.write('\n'.join(str(i) for i in origin_videos))
- if not os.path.isdir(filmfolder+'.videos/'):
- os.makedirs(filmfolder+'.videos/')
- allfiles = os.listdir(filmfolder+'.videos/')
- print(allfiles)
- print('alll')
- for origin in origin_videos:
- if origin in allfiles:
- try:
- #os.remove(origin)
- print('ORIGIN VIDEO FOLDER NOT IN SYNC' + origin)
- time.sleep(5)
- except:
- print('not exist')
- #organize(filmfolder,'onthefloor')
- scenes, shots, takes = countlast(filmname, filmfolder)
- loadfilmsettings = False
- rendermenu = True
- updatethumb = True
- if scene == 0:
- scene = 1
- if take == 0:
- take = 1
- if shot == 0:
- shot = 1
- # If menu at SCENE show first shot thumbnail off that scene
- if menu[selected] == 'FILM:' and lastmenu != menu[selected] and recordable == False:
- updatethumb = True
- if menu[selected] == 'SCENE:' and lastmenu != menu[selected] and recordable == False:
- updatethumb = True
- if menu[selected] == 'SHOT:' and lastmenu != menu[selected] and recordable == False:
- updatethumb = True
- if menu[selected] == 'TAKE:' and lastmenu != menu[selected] and recordable == False:
- updatethumb = True
- #Check if scene, shot, or take changed and update thumbnail
- if oldscene != scene or oldshot != shot or oldtake != take or updatethumb == True:
- if recording == False:
- #logger.info('film:' + filmname + ' scene:' + str(scene) + '/' + str(scenes) + ' shot:' + str(shot) + '/' + str(shots) + ' take:' + str(take) + '/' + str(takes))
- foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
- filename = 'take' + str(take).zfill(3)
- recordable = not os.path.isfile(foldername + filename + '.mp4') and not os.path.isfile(foldername + filename + '.h264')
- overlay = removeimage(camera, overlay)
- if menu[selected] == 'SCENE:' and recordable == False: # display first shot of scene if browsing scenes
- p = counttakes(filmname, filmfolder, scene, 1)
- imagename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(1).zfill(3) + '/take' + str(p).zfill(3) + '.jpeg'
- try:
- videosize=countsize(filmfolder + filmname + '/scene' + str(scene).zfill(3)+'/scene.mp4')
- vumetermessage('videosize: '+str(round(videosize/1000,2))+' Mb')
- except:
- vumetermessage('not rendered')
- #elif menu[selected] == 'FILM:' and recordable == True:
- # scene, shot, take = countlast(filmname,filmfolder)
- # shot += 1
- elif menu[selected] == 'FILM:' and recordable == False: # display first shot of film
- p = counttakes(filmname, filmfolder, 1, 1)
- imagename = filmfolder + filmname + '/scene' + str(1).zfill(3) + '/shot' + str(1).zfill(3) + '/take' + str(p).zfill(3) + '.jpeg'
+ filmname_back = 'onthefloor'
+ if os.path.isdir(filmfolder) == False:
+ os.makedirs(filmfolder)
+ #loadfilmsettings = True
+ updatethumb = True
+ rendermenu = True
+ #cleanupdisk(filmname,filmfolder)
+ serverstate = gonzopiserver(False)
+ serverstate = gonzopiserver(True)
+ #REMOVE DELETE
+ #dsk
+ elif pressed == 'remove' and menu[selected] == 'DSK:':
+ if dsk != 0:
+ print("usb filmfolder")
+ os.system('sudo pumount /media/usb'+str(dsk))
+ os.system('sudo umount -l /media/usb'+str(dsk))
+ try:
+ del storagedrives[dsk]
+ except:
+ pass
+ dsk=0
+ time.sleep(1)
+ #take
+ elif pressed == 'remove' and menu[selected] == 'TAKE:':
+ remove(filmfolder, filmname, scene, shot, take, 'take')
+ organize(filmfolder, filmname)
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ updatethumb = True
+ rendermenu = True
+ #loadfilmsettings = True
+ time.sleep(0.2)
+ #shot
+ elif pressed == 'remove' and menu[selected] == 'SHOT:':
+ remove(filmfolder, filmname, scene, shot, take, 'shot')
+ organize(filmfolder, filmname)
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ updatethumb = True
+ rendermenu = True
+ #loadfilmsettings = True
+ time.sleep(0.2)
+ #scene
+ elif pressed == 'remove' and menu[selected] == 'SCENE:' or pressed=='remove_now':
+ remove(filmfolder, filmname, scene, shot, take, 'scene')
+ organize(filmfolder, filmname)
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ shot = countshots(filmname, filmfolder, scene)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ updatethumb = True
+ rendermenu = True
+ #loadfilmsettings = True
+ time.sleep(0.2)
+ #film
+ elif pressed == 'remove' and menu[selected] == 'FILM:':
+ remove(filmfolder, filmname, scene, shot, take, 'film')
+ filmname = getfilms(filmfolder)[0][0]
+ if filmname == '':
+ filmname = nameyourfilm(filmfolder,filmname,abc, True)
+ else:
+ scene, shot, take = countlast(filmname, filmfolder)
+ loadfilmsettings = True
+ updatethumb = True
+ rendermenu = True
+ time.sleep(0.2)
+ elif pressed == 'remove' and menu[selected] == 'CAMERA:':
+ if camselected != 0:
+ cameras.pop(camselected)
+ newselected=0
+ elif pressed == 'middle' and menu[selected] == 'Add CAMERA':
+ if networks != []:
+ newcamera = newcamera_ip(numbers_only, network)
+ if newcamera != '':
+ if newcamera not in cameras and newcamera not in networks:
+ sendtocamera(newcamera,port,'NEWFILM:'+filmname)
+ time.sleep(0.2)
+ sendtocamera(newcamera,port,'Q:'+str(quality))
+ time.sleep(0.2)
+ sendtocamera(newcamera,port,'SHOT:'+str(shot))
+ time.sleep(0.2)
+ sendtocamera(newcamera,port,'SCENE:'+str(scene))
+ time.sleep(0.2)
+ sendtocamera(newcamera,port,'MAKEPLACEHOLDERS:'+str(scenes)+'|'+str(shots))
+ cameras.append(newcamera)
+ rendermenu = True
+ #newselected=newselected+1
+ camera_recording=None
+ vumetermessage("New camera! "+newcamera)
+ else:
+ vumetermessage('No network!')
+ elif 'SYNCIP:' in pressed:
+ msg = pressed.split(':')[1]
+ syncfolder=msg.split('|')[1]
+ ip = msg.split('|')[0]
+ vumetermessage('SYNCING!')
+ stopinterface(camera)
+ video_files=shotfiles(filmfolder, filmname, scene)
+ for i in video_files:
+ compileshot(i,filmfolder,filmname)
+ logger.info('SYNCING:'+i)
+ organize(filmfolder, filmname)
+ if not os.path.isfile('/home/pi/.ssh/id_rsa'):
+ run_command('ssh-keygen')
+ run_command('ssh-copy-id pi@'+ip)
try:
- videosize=countsize(filmfolder + filmname + '/' + filmname+'.mp4')
- vumetermessage('videosize: '+str(round(videosize/1000,2))+' Mb')
+ run_command('rsync -avr --update --progress --files-from='+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/.origin_videos --no-relative / pi@'+ip+':'+syncfolder+'.videos/')
except:
- vumetermessage('not rendered')
- imagename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take' + str(take).zfill(3) + '.jpeg'
- if menu[selected]=='SHOT:' and recordable == False or menu[selected]=='TAKE:' and recordable==False:
+ logger.info('no origin videos')
+ #run_command('scp -r '+filmfolder+filmname+'/'+'scene'+str(scene).zfill(3)+' pi@'+ip+':'+filmfolder+filmname+'/')
+ sendtocamera(ip,port,'SYNCDONE:'+cameras[0]+'|'+filmfolder)
+ startinterface()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ rendermenu = True
+ elif 'SYNCDONE:' in pressed:
+ stopinterface(camera)
+ msg = pressed.split(':')[1]
+ syncfolder=msg.split('|')[1]
+ ip = msg.split('|')[0]
+ logger.info('SYNCING from ip:'+ip)
+ run_command('ssh-copy-id pi@'+ip)
try:
- videosize=countsize(foldername + filename + '.mp4')
- vumetermessage('videosize: '+str(round(videosize/1000,2))+' Mb')
+ run_command('rsync -avr --update --progress pi@'+ip+':'+syncfolder+filmname+'/scene'+str(scene).zfill(3)+'/ '+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/')
except:
- videosize=countsize(foldername + filename + '.h264')
- vumetermessage('not rendered, videosize: '+str(round(videosize/1000,2))+' Mb')
- overlay = displayimage(camera, imagename, overlay, 3)
- oldscene = scene
- oldshot = shot
- oldtake = take
- updatethumb = False
- scenes = countscenes(filmfolder, filmname)
- shots = countshots(filmname, filmfolder, scene)
- takes = counttakes(filmname, filmfolder, scene, shot)
- #If auto dont show value show auto (impovement here to show different colors in gui, yes!!?)
- if camera.iso == 0:
- cameraiso = 'auto'
- else:
- cameraiso = str(camera.iso)
- if camera.shutter_speed == 0:
- camerashutter = 'auto'
- else:
- camerashutter = str(camera.exposure_speed).zfill(5)
- if camera.awb_mode == 'auto':
- camerared = 'auto'
- camerablue = 'auto'
- else:
- camerared = str(float(camera.awb_gains[0]))[:4]
- camerablue = str(float(camera.awb_gains[1]))[:4]
-
- #Check if menu is changed and save settings / sec
- if buttonpressed == True or recording == True or rendermenu == True:
- lastmenu = menu[selected]
- if showgonzopictrl == False:
- menu = standardmenu
- settings = storagedrives[dsk][0]+diskleft, filmname, str(scene) + '/' + str(scenes), str(shot) + '/' + str(shots), str(take) + '/' + str(takes), rectime, camerashutter, cameraiso, camerared, camerablue, str(round(camera.framerate)), str(quality), str(camera.brightness), str(camera.contrast), str(camera.saturation), effects[effectselected], str(flip), str(beeps), str(round(reclenght,2)), str(plughw), str(channels), str(miclevel), str(headphoneslevel), str(comp), '', cammode, '', serverstate, searchforcameras, wifistate, '', '', '', '', '', '', live
- else:
- #gonzopictrlmenu = 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'MODE:', 'DSK:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'CAMERA:', 'Add CAMERA', 'New FILM', 'Sync FILM', 'Sync SCENE'
- menu = gonzopictrlmenu
- #settings = '',str(camselected),'','',rectime,'','','','','','','','','',''
- settings = storagedrives[dsk][0]+diskleft, filmname, str(scene) + '/' + str(scenes), str(shot) + '/' + str(shots), str(take) + '/' + str(takes), rectime, camerashutter, cameraiso, camerared, camerablue, str(round(camera.framerate)), str(quality), str(camera.brightness), str(camera.contrast), str(camera.saturation), effects[effectselected], str(flip), str(beeps), str(reclenght), str(plughw), str(channels), str(miclevel), str(headphoneslevel), str(comp), '', cammode, '', serverstate, searchforcameras, wifistate, str(camselected), '', '', '', '', '', ''
- #Rerender menu if picamera settings change
- #if settings != oldsettings or selected != oldselected:
- writemenu(menu,settings,selected,'',showmenu)
- rendermenu = False
- #save settings if menu has been updated and x seconds passed
- if recording == False:
- #if time.time() - pausetime > savesettingsevery:
- if oldsettings != settings:
- settings_to_save = [filmfolder, filmname, camera.brightness, camera.contrast, camera.saturation, camera.shutter_speed, camera.iso, camera.awb_mode, camera.awb_gains, awb_lock, miclevel, headphoneslevel, beeps, flip, comp, between, duration, showmenu_settings, quality,wifistate,serverstate,plughw,channels,cammode,scene,shot,take]
- #print('saving settings')
- savesettings(settings_to_save, filmname, filmfolder)
- if time.time() - pausetime > savesettingsevery:
- pausetime = time.time()
- #NETWORKS
- networks=[]
- adapters = ifaddr.get_adapters()
- for adapter in adapters:
- print("IPs of network adapter " + adapter.nice_name)
- for ip in adapter.ips:
- if ':' not in ip.ip[0] and '127.0.0.1' != ip.ip:
- print(ip.ip)
- networks=[ip.ip]
- if networks != []:
- network=networks[0]
- if network not in cameras:
- cameras=[]
- cameras.append(network)
+ logger.info('no files')
+ with open(filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/.origin_videos', 'r') as f:
+ if f:
+ scene_origin_files = [line.rstrip() for line in f]
+ #a=0
+ #for i in cameras:
+ # if a != 0:
+ # run_command('rsync -avr --update --progress '+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/ pi@'+i+':'+filmfolder+filmname+'/scene'+str(scene).zfill(3)+'/')
+ # time.sleep(3)
+ # a=a+1
+ startinterface()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ rendermenu = True
+ vumetermessage('SYNC DONE!')
+ elif 'RETAKE' in pressed:
+ pressed="retake_now"
+ elif 'RETAKE:' in pressed:
+ shot=pressed.split(':')[1]
+ shot=int(shot)
+ retake = True
+ pressed="retake_now"
+ elif 'SCENE:' in pressed:
+ scene=pressed.split(':')[1]
+ scene=int(scene)
+ shot = countshots(filmname, filmfolder, scene)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ elif 'SHOT:' in pressed:
+ shot=pressed.split(':')[1]
+ shot=int(shot)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ elif 'REMOVE:' in pressed:
+ scene=pressed.split(':')[1]
+ scene=int(scene)
+ shot = countshots(filmname, filmfolder, scene)
+ take = counttakes(filmname, filmfolder, scene, shot)
+ pressagain='remove_now'
+ elif 'Q:' in pressed:
+ qual=pressed.split(':')[1]
+ quality=int(qual)
+ vumetermessage('Quality changed to '+str(quality))
+ elif 'CAMERA:' in pressed:
+ newselected_maybe=int(pressed.split(':')[1])
+ if len(cameras) > newselected_maybe:
+ newselected=newselected_maybe
+ elif 'MAKEPLACEHOLDERS:' in pressed:
+ scenesshots=pressed.split(':')[1]
+ pscene=int(scenesshots.split('|')[0])
+ pshots=int(scenesshots.split('|')[1])
+ #to not throw away empty shots, make placeholders
+ for i in range(pshots):
+ placeholders=filmfolder + filmname + '/scene' + str(pscene).zfill(3) + '/shot' + str(i+1).zfill(3)
+ try:
+ os.makedirs(placeholders)
+ except:
+ logger.info('scene or shot already there!')
+ run_command('touch ' + placeholders + '/.placeholder')
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ rendermenu = True
+ vumetermessage('CONNECTED TO MASTER TARINA!')
+ #SHOWTARINACTRL
+ if recordwithports:
+ if pressed == 'middle' and menu[selected] == "New FILM":
+ newfilmname = nameyourfilm(filmfolder, filmname, abc, True)
+ a=0
+ for i in cameras:
+ if i not in camerasoff:
+ sendtocamera(i,port,'NEWFILM:'+newfilmname)
+ a=a+1
+ elif pressed == "retake":
+ a=0
+ for i in cameras:
+ if i not in camerasoff:
+ if a == camselected:
+ if camera_recording == a:
+ if a==0:
+ if recording == True:
+ pressed="retake_now"
+ retake = True
+ camera_recording=None
+ else:
+ sendtocamera(i,port,'STOPRETAKE')
+ camera_recording=None
+ else:
+ if a==0:
+ if recording == False:
+ pressed="retake_now"
+ retake = True
+ camera_recording=0
+ else:
+ sendtocamera(i,port,'RETAKE:'+str(shot))
+ camera_recording=camselected
+ else:
+ if a==0:
+ pressagain='insert_take'
+ else:
+ sendtocamera(i,port,'TAKEPLACEHOLDER')
+ a=a+1
+ elif pressed == "middle" and menu[selected]=="Sync SCENE":
+ for i in cameras:
+ if i != cameras[0]:
+ vumetermessage('Hold on syncing!')
+ sendtocamera(i,port,'SYNCIP:'+cameras[0]+'|'+filmfolder)
+ time.sleep(1)
+ elif pressed == "middle" and menu[selected]=='New SCENE':
+ a=0
+ for i in cameras:
+ if i not in camerasoff:
+ if a==0:
+ pressagain="new_scene"
+ else:
+ sendtocamera(i,port,'NEWSCENE')
+ a=a+1
+ elif pressed == "record" and camera_recording != None:
+ if camera_recording == 0:
+ if recording == True:
+ pressed='record_now'
else:
- network='not connected'
+ sendtocamera(cameras[camera_recording],port,'STOP')
+ camera_recording=None
+ elif pressed == "record" and camera_recording == None:
+ a=0
+ for i in cameras:
+ if i not in camerasoff:
+ if a == camselected:
+ if camselected==0:
+ pressed='record_now'
+ else:
+ sendtocamera(i,port,'REC')
+ camera_recording=camselected
+ else:
+ if a==0:
+ pressagain='insert_shot'
+ else:
+ sendtocamera(i,port,'PLACEHOLDER')
+ a=a+1
+ elif pressed == "remove" and menu[selected]=='SCENE:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'REMOVE:'+str(scene))
+ a=a+1
+ elif pressed == "up" and menu[selected]=='SCENE:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'SCENE:'+str(scene+1))
+ a=a+1
+ elif pressed == "down" and menu[selected]=='SCENE:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'SCENE:'+str(scene-1))
+ a=a+1
+ elif pressed == "up" and menu[selected]=='SHOT:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'SHOT:'+str(shot+1))
+ a=a+1
+ elif pressed == "down" and menu[selected]=='SHOT:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'SHOT:'+str(shot-1))
+ a=a+1
+ elif pressed == "up" and menu[selected]=='Q:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'Q:'+str(quality+1))
+ a=a+1
+ elif pressed == "down" and menu[selected]=='Q:':
+ a=0
+ for i in cameras:
+ if a!=0:
+ sendtocamera(i,port,'Q:'+str(quality-1))
+ a=a+1
+ elif event == "0":
+ newselected = 0
+ elif event == "1":
+ if len(cameras) > 1:
+ newselected = 1
+ elif event == "2":
+ if len(cameras) > 2:
+ newselected = 2
+ elif event == "3":
+ if len(cameras) > 3:
+ newselected = 3
+ elif event == "4":
+ if len(cameras) > 4:
+ newselected = 4
+ elif event == "5":
+ if len(cameras) > 5:
+ newselected = 5
+ elif event == "6":
+ if len(cameras) > 6:
+ newselected = 6
+ elif event == "7":
+ if len(cameras) > 7:
+ newselected = 7
+ elif event == "8":
+ if len(cameras) > 8:
+ newselected = 8
+ elif event == "9":
+ if len(cameras) > 9:
+ newselected = 9
+ elif event == "-":
+ if cameras[camselected] not in camerasoff:
+ camerasoff.append(cameras[camselected])
+ elif event == "+":
+ if cameras[camselected] in camerasoff:
+ camerasoff.remove(cameras[camselected])
+ elif camselected != newselected:
+ if camera_recording != None:
+ #change camera
+ a=0
+ for c in cameras:
+ if c not in camerasoff:
+ if a == camselected:
+ if a == 0:
+ #pressed='record_now'
+ #pressagain='insert_shot'
+ delayedstop=c
+ else:
+ #sendtocamera(c,port,'STOP')
+ #time.sleep(sleep)
+ #sendtocamera(c,port,'PLACEHOLDER')
+ delayedstop=c
+ elif a == newselected:
+ if a == 0:
+ if recording == False:
+ pressed='record_now'
+ else:
+ sendtocamera(c,port,'REC')
+ camera_recording=newselected
+ else:
+ if a == 0:
+ pressagain='insert_shot'
+ else:
+ sendtocamera(c,port,'PLACEHOLDER')
+ #time.sleep(2)
+ a=a+1
+ if delayedstop:
+ time.sleep(0.05)
+ if delayedstop==cameras[0]:
+ if recording == True:
+ pressed='record_now'
+ pressagain='insert_shot'
+ else:
+ sendtocamera(delayedstop,port,'STOP')
+ time.sleep(sleep)
+ sendtocamera(delayedstop,port,'PLACEHOLDER')
+ camselected=newselected
+ rendermenu = True
+ #vumetermessage('filming with '+camera_model +' ip:'+ network + ' '+camerasconnected+' camselected:'+str(camselected))
if len(cameras) > 1:
- camerasconnected='connected '+str(len(cameras)-1)
- recordwithports=True
vumetermessage('filming with '+camera_model +' ip:'+ cameras[camselected] + ' '+camerasconnected+' camselected:'+str(camselected)+' rec:'+str(camera_recording))
else:
- camerasconnected=''
- recordwithports=False
- if searchforcameras == 'on':
- camerasconnected='searching '+str(pingip)
- if menu[selected] != 'SHOT:' and menu[selected] != 'SCENE:' and menu[selected] != 'FILM:' and menu[selected] != 'TAKE:':
- vumetermessage('filming with '+camera_model +' ip:'+ network + ' '+camerasconnected)
+ vumetermessage('filming with '+camera_model +' ip:'+ network + ' '+camerasconnected+' camselected:'+str(camselected)+' rec:'+str(camera_recording))
+
+
+ #RECORD AND PAUSE
+ if beepcountdown > 1:
+ if time.time() - lastbeep > 1:
+ beep(bus)
+ beepcountdown -= 1
+ lastbeep = time.time()
+ logger.info('beepcountdown: ' + str(beepcountdown))
+ vumetermessage('Filming in ' + str(beepcountdown) + ' seconds, press record again to cancel ')
+ elif beepcountdown > 0:
+ if time.time() - float(lastbeep) > 0.1:
+ beep(bus)
+ vumetermessage('Get ready!!')
+ if time.time() - lastbeep > 1:
+ longbeep(bus)
+ beepcountdown = 0
+ if recordwithports == True:
+ if retake == True:
+ pressed = 'retake_now'
+ retake = False
+ else:
+ pressed = 'record_now'
+ else:
+ pressed = 'record'
+ print('exhausted from all beepings')
+ elif 'CAMERA:' in pressed:
+ newselected_maybe=int(pressed.split(':')[1])
+ if len(cameras) > newselected_maybe:
+ newselected=newselected_maybe
+ if pressed == 'record' and recordwithports==False or pressed == 'record_now' or pressed == 'retake_now' or pressed == 'retake' and recordwithports==False or reclenght != 0 and t > reclenght:
+ overlay = removeimage(camera, overlay)
+ if recording == False and recordable == True or recording == False and pressed == 'record_now' or recording == False and pressed == 'retake_now':
+ #camera_recording=0
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ if pressed == "record":
+ #shot = shots+1
+ take = takes+1
+ elif pressed == "retake":
+ take = takes+1
+ elif pressed == 'record_now':
+ shot=shots+1
+ take=1
+ elif pressed == 'retake_now':
+ takes = counttakes(filmname, filmfolder, scene, shot)
+ take = takes + 1
+ foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
+ filename = 'take' + str(take).zfill(3)
+ if beeps > 0 and beeping == False:
+ beeping = True
+ beepcountdown = beeps
+ elif beepcountdown == 0:
+ beeping = False
+ if os.path.isdir(foldername) == False:
+ os.makedirs(foldername)
+ if cammode == 'film':
+ videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0]
+ tot = int(videos_totalt.videos)
+ video_origins=datetime.datetime.now().strftime('%Y%d%m')+str(tot).zfill(5)+'_'+os.urandom(8).hex()
+ db.insert('videos', tid=datetime.datetime.now(), filename=filmfolder+'.videos/'+video_origins+'.mp4', foldername=foldername, filmname=filmname, scene=scene, shot=shot, take=take, audiolenght=0, videolenght=0)
+ os.system(gonzopifolder + '/alsa-utils-1.1.3/aplay/arecord -D dsnoop:' + str(plughw) + ' -f '+soundformat+' -c ' + str(channels) + ' -r '+soundrate+' -vv '+ foldername + filename + '.wav &')
+ sound_start = time.time()
+ if onlysound != True:
+ camera.start_recording(filmfolder+ '.videos/'+video_origins+'.h264', format='h264', bitrate = 5555555, level=profilelevel)
+ starttime = time.time()
+ os.system('ln -sfr '+filmfolder+'.videos/'+video_origins+'.h264 '+foldername+filename+'.h264')
+ recording = True
+ showmenu = 0
+ if cammode == 'picture':
+ #picdate=datetime.datetime.now().strftime('%Y%d%m')
+ picture = foldername +'picture' + str(take).zfill(3) + '.jpeg'
+ print('taking picture')
+ camera.capture(picture,format="jpeg",use_video_port=True)
+ run_command('touch ' + foldername + 'take' + str(take).zfill(3) + '.mp4')
+ basewidth = 800
+ img = Image.open(picture)
+ wpercent = (basewidth/float(img.size[0]))
+ hsize = int((float(img.size[1])*float(wpercent)))
+ img = img.resize((basewidth,hsize), Image.ANTIALIAS)
+ img.save(foldername+'take'+str(take).zfill(3) + '.jpeg')
+ vumetermessage('Great Pic taken!!')
+ updatethumb = True
+ elif beepcountdown > 0 and beeping == True:
+ beeping = False
+ beepcountdown = 0
+ vumetermessage('Filming was canceled!!')
+ elif recording == True and float(time.time() - starttime) > 0.2:
+ #print(term.clear+term.home)
disk = os.statvfs(filmfolder)
diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
- checksync = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 )) + 'Mb'
- if checksync == oldchecksync:
- rectime = ''
+ recording = False
+ if showmenu_settings == True:
+ showmenu = 1
+ if onlysound != True:
+ camera.stop_recording()
+ os.system('pkill arecord')
+ soundlag=starttime-sound_start
+ db.update('videos', where='filename="'+filmfolder+'.videos/'+video_origins+'.mp4"', soundlag=soundlag)
+ #time.sleep(0.005) #get audio at least 0.1 longer
+ #camera.capture(foldername + filename + '.jpeg', resize=(800,341))
+ if onlysound != True:
+ try:
+ #camera.capture(foldername + filename + '.jpeg', resize=(800,340), use_video_port=True)
+ camera.capture(foldername + filename + '.jpeg', resize=(800,450), use_video_port=True)
+ except:
+ logger.warning('something wrong with camera jpeg capture')
+ #delayerr = audiotrim(foldername,filename)
+ onlysound = False
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ if beeps > 0:
+ if bus:
+ buzz(300)
+ else:
+ run_command('aplay -D plughw:' + str(plughw) + ' '+ gonzopifolder + '/extras/beep.wav')
+ if round(fps) != 25:
+ compileshot(foldername + filename,filmfolder,filmname)
+ #os.system('cp /dev/shm/' + filename + '.wav ' + foldername + filename + '.wav')
+ if beeps > 0:
+ if bus:
+ buzz(150)
+ else:
+ run_command('aplay -D plughw:' + str(plughw) + ' '+ gonzopifolder + '/extras/beep.wav')
+ t = 0
+ rectime = ''
+ vumetermessage('Gonzopi ' + gonzopiversion[:-1] + ' ' + gonzopivername[:-1])
+ updatethumb = True
+ #camera_recording=0
+ #if not in last shot or take then go to it
+ if pressed == 'record' and recordable == False:
+ scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ shot=shots+1
+ take=1
+ #take = takes
+ #takes = counttakes(filmname, filmfolder, scene, shot)
+ if pressed == 'retake' and recordable == False:
+ #scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
+ takes = counttakes(filmname, filmfolder, scene, shot)
+ #take = takes
+ #takes = counttakes(filmname, filmfolder, scene, shot)
+ take = takes + 1
+ #ENTER (auto shutter, iso, awb on/off)
+ elif pressed == 'middle' and menu[selected] == 'SHUTTER:':
+ if camera.shutter_speed == 0:
+ camera.shutter_speed = camera.exposure_speed
+ else:
+ camera.shutter_speed = 0
+ elif pressed == 'middle' and menu[selected] == 'ISO:':
+ if camera.iso == 0:
+ camera.iso = 100
+ else:
+ camera.iso = 0
+ elif pressed == 'middle' and menu[selected] == 'RED:':
+ if camera.awb_mode == 'auto':
+ camera.awb_gains = (float(camera.awb_gains[0]), float(camera.awb_gains[1]))
+ camera.awb_mode = 'off'
+ else:
+ camera.awb_mode = 'auto'
+ elif pressed == 'middle' and menu[selected] == 'BLUE:':
+ if camera.awb_mode == 'auto':
+ camera.awb_gains = (float(camera.awb_gains[0]), float(camera.awb_gains[1]))
+ camera.awb_mode = 'off'
+ else:
+ camera.awb_mode = 'auto'
+ elif pressed == 'middle' and menu[selected] == 'BEEP:':
+ beeps = 0
+ elif pressed == 'middle' and menu[selected] == 'LENGTH:':
+ reclenght = 0
+ elif pressed == 'middle' and menu[selected] == 'LIVE:':
+ if stream == '':
+ stream = startstream(camera, stream, plughw, channels)
+ if stream == '':
+ vumetermessage('something wrong with streaming')
+ else:
+ live = 'yes'
+ else:
+ stream = stopstream(camera, stream)
+ live = 'no'
+ elif pressed == 'middle' and menu[selected] == 'BRIGHT:':
+ camera.brightness = 50
+ elif pressed == 'middle' and menu[selected] == 'CONT:':
+ camera.contrast = 0
+ elif pressed == 'middle' and menu[selected] == 'SAT:':
+ camera.saturation = 0
+ elif pressed == 'middle' and menu[selected] == 'MIC:':
+ miclevel = 70
+ elif pressed == 'middle' and menu[selected] == 'PHONES:':
+ headphoneslevel = 70
+ elif pressed == 'middle' and menu[selected] == 'SRV:':
+ if showgonzopictrl == False:
+ menu=gonzopictrlmenu
+ #selected=0
+ showgonzopictrl = True
+ else:
+ menu=standardmenu
+ showgonzopictrl=False
+
+ #UP
+ elif pressed == 'up':
+ if menu[selected] == 'FILM:':
+ filmname = loadfilm(filmname, filmfolder, camera, overlay)
+ loadfilmsettings = True
+ if menu[selected] == 'BRIGHT:':
+ camera.brightness = min(camera.brightness + 1, 99)
+ elif menu[selected] == 'CONT:':
+ camera.contrast = min(camera.contrast + 1, 99)
+ elif menu[selected] == 'SAT:':
+ camera.saturation = min(camera.saturation + 1, 99)
+ elif menu[selected] == 'SFX:':
+ if effectselected < len(effects) - 1:
+ effectselected += 1
+ camera.image_effect = effects[effectselected]
+ elif menu[selected] == 'SHUTTER:':
+ if camera.shutter_speed == 0:
+ camera.shutter_speed = camera.exposure_speed
+ if camera.shutter_speed < 5000:
+ camera.shutter_speed = min(camera.shutter_speed + 50, 50000)
+ else:
+ camera.shutter_speed = min(camera.shutter_speed + 200, 50000)
+ elif menu[selected] == 'ISO:':
+ camera.iso = min(camera.iso + 100, 1600)
+ elif menu[selected] == 'BEEP:':
+ beeps = beeps + 1
+ elif menu[selected] == 'FLIP:':
+ if flip == 'yes':
+ camera.hflip = False
+ camera.vflip = False
+ flip = 'no'
+ time.sleep(0.2)
+ else:
+ camera.hflip = True
+ camera.vflip = True
+ flip = 'yes'
+ time.sleep(0.2)
+ elif menu[selected] == 'LENGTH:':
+ if reclenght < 1:
+ reclenght = reclenght + 0.2
+ else:
+ reclenght = int(reclenght + 1)
+ time.sleep(0.1)
+ elif menu[selected] == 'MIC:':
+ if miclevel < 100:
+ miclevel = miclevel + 2
+ run_command('amixer -c 0 sset Mic ' + str(miclevel) + '% unmute')
+ elif menu[selected] == 'PHONES:':
+ if headphoneslevel < 100:
+ headphoneslevel = headphoneslevel + 2
+ run_command('amixer -c 0 sset Speaker ' + str(headphoneslevel) + '%')
+ elif menu[selected] == 'SCENE:' and recording == False:
+ if scene <= scenes:
+ scene += 1
+ #shot = countshots(filmname, filmfolder, scene)
+ shot = 1
+ take = counttakes(filmname, filmfolder, scene, shot)
+ #scene, shots, takes = browse2(filmname, filmfolder, scene, shot, take, 0, 1)
+ #shot = 1
+ elif menu[selected] == 'SHOT:' and recording == False:
+ if shot <= shots:
+ shot += 1
+ take = counttakes(filmname, filmfolder, scene, shot)
+ #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 1, 1)
+ #takes = take
+ elif menu[selected] == 'TAKE:' and recording == False:
+ if take <= takes:
+ take += 1
+ #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 2, 1)
+ elif menu[selected] == 'RED:':
+ camera.awb_mode = 'off'
+ if float(camera.awb_gains[0]) < 7.98:
+ camera.awb_gains = (round(camera.awb_gains[0],2) + 0.02, round(camera.awb_gains[1],2))
+ elif menu[selected] == 'BLUE:':
+ camera.awb_mode = 'off'
+ if float(camera.awb_gains[1]) < 7.98:
+ camera.awb_gains = (round(camera.awb_gains[0],2), round(camera.awb_gains[1],2) + 0.02)
+ elif menu[selected] == 'SRV:':
+ if serverstate == 'on':
+ try:
+ os.makedirs(gonzopifolder+'/srv/sessions')
+ os.system('chown www-data '+gonzopifolder+'/srv/sessions')
+ except:
+ print('srv folder exist')
+ serverstate = 'false'
+ serverstate = gonzopiserver(False)
+ elif serverstate == 'off':
+ serverstate = 'on'
+ serverstate = gonzopiserver(True)
+ elif menu[selected] == 'WIFI:':
+ if wifistate == 'on':
+ run_command('sudo iwconfig wlan0 txpower off')
+ wifistate = 'off'
+ elif wifistate == 'off':
+ run_command('sudo iwconfig wlan0 txpower auto')
+ wifistate = 'on'
+ elif menu[selected] == 'SEARCH:':
+ if searchforcameras == 'on':
+ searchforcameras = 'off'
+ elif searchforcameras == 'off':
+ searchforcameras = 'on'
+ elif menu[selected] == 'MODE:':
+ if cammode == 'film':
+ cammode = 'picture'
+ vumetermessage('changing to picture mode')
+ elif cammode == 'picture':
+ cammode = 'film'
+ vumetermessage('changing to film mode')
+ camera.stop_preview()
+ camera.close()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ flushbutton()
+ elif menu[selected] == 'LENS:':
+ s = 0
+ for a in lenses:
+ if a == lens:
+ selectlens = s
+ s += 1
+ if selectlens < len(lenses) - 1:
+ selectlens += 1
+ lens = os.listdir('lenses/')[selectlens]
+ #npzfile = np.load('lenses/' + lens)
+ #lensshade = npzfile['lens_shading_table']
+ table = read_table('lenses/' + lens)
+ camera.lens_shading_table = table
+ elif menu[selected] == 'COMP:':
+ if comp < 1:
+ comp += 1
+ elif menu[selected] == 'HW:':
+ if plughw < len(getaudiocards())-1:
+ plughw += 1
+ vumetermessage(getaudiocards()[plughw])
+ elif menu[selected] == 'CH:':
+ if channels == 1:
+ channels = 2
+ elif menu[selected] == 'FPS:':
+ if fps_selected < len(fps_selection)-1:
+ fps_selected+=1
+ fps=fps_selection[fps_selected]
+ camera.framerate = fps
+ elif menu[selected] == 'Q:':
+ if scenes == 0:
+ if quality < 39:
+ quality += 1
+ elif menu[selected] == 'CAMERA:':
+ if camselected < len(cameras)-1:
+ newselected = camselected+1
+ logger.info('camera selected:'+str(camselected))
+ elif menu[selected] == 'DSK:':
+ if dsk+1 < len(storagedrives):
+ dsk += 1
+ filmfolder = storagedrives[dsk][1]
+ loadfilmsettings = True
+ #COUNT DISKSPACE
+ disk = os.statvfs(filmfolder)
+ diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
+ #LOAD FILM AND SCENE SETTINGS
+ try:
+ filmname = getfilms(filmfolder)[0][0]
+ except:
+ filmname = filmname
+ try:
+ filmname_back = getfilms(filmfolder)[0][1]
+ except:
+ filmname_back = filmname
+ if serverstate == 'on':
+ gonzopiserver(False)
+ gonzopiserver(True)
+
+ #LEFT
+ elif pressed == 'left':
+ if selected > 0:
+ selected = selected - 1
+ else:
+ selected = len(menu) - 1
+ if selected == 5:
+ selected = 4
+ #DOWN
+ elif pressed == 'down':
+ if menu[selected] == 'FILM:':
+ filmname = loadfilm(filmname, filmfolder, camera, overlay)
+ loadfilmsettings = True
+ elif menu[selected] == 'BRIGHT:':
+ camera.brightness = max(camera.brightness - 1, 0)
+ elif menu[selected] == 'CONT:':
+ camera.contrast = max(camera.contrast - 1, -100)
+ elif menu[selected] == 'SAT:':
+ camera.saturation = max(camera.saturation - 1, -100)
+ elif menu[selected] == 'SFX:':
+ if effectselected > 0:
+ effectselected -= 1
+ camera.image_effect = effects[effectselected]
+ elif menu[selected] == 'SHUTTER:':
+ if camera.shutter_speed == 0:
+ camera.shutter_speed = camera.exposure_speed
+ if camera.shutter_speed < 5000:
+ camera.shutter_speed = max(camera.shutter_speed - 50, 20)
+ else:
+ camera.shutter_speed = max(camera.shutter_speed - 200, 200)
+ elif menu[selected] == 'ISO:':
+ camera.iso = max(camera.iso - 100, 100)
+ elif menu[selected] == 'BEEP:':
+ if beeps > 0:
+ beeps = beeps - 1
+ elif menu[selected] == 'FLIP:':
+ if flip == 'yes':
+ camera.hflip = False
+ camera.vflip = False
+ flip = 'no'
+ time.sleep(0.2)
+ else:
+ camera.hflip = True
+ camera.vflip = True
+ flip = 'yes'
+ time.sleep(0.2)
+ elif menu[selected] == 'LENGTH:':
+ if reclenght > 1:
+ reclenght = int(reclenght - 1)
+ time.sleep(0.1)
+ elif reclenght > 0.3:
+ reclenght = reclenght - 0.2
+ time.sleep(0.1)
else:
- rectime = 'SYNCING.. '
- oldchecksync = checksync
- #print(term.yellow+'filming with '+camera_model +' ip:'+ network
- print(camselected,camera_recording,cameras)
- #writemessage(pressed)
- oldsettings = settings
- oldselected = selected
- #PING TARINAS
- if searchforcameras == 'on':
- if camera_recording == None:
- if pingip < 256:
- pingip+=1
+ reclenght = 0
+ elif menu[selected] == 'MIC:':
+ if miclevel > 0:
+ miclevel = miclevel - 2
+ run_command('amixer -c 0 sset Mic ' + str(miclevel) + '% unmute')
+ elif menu[selected] == 'PHONES:':
+ if headphoneslevel > 0:
+ headphoneslevel = headphoneslevel - 2
+ run_command('amixer -c 0 sset Speaker ' + str(headphoneslevel) + '%')
+ elif menu[selected] == 'SCENE:' and recording == False:
+ if scene > 1:
+ scene -= 1
+ #shot = countshots(filmname, filmfolder, scene)
+ shot=1
+ take = counttakes(filmname, filmfolder, scene, shot)
+ #scene, shots, take = browse2(filmname, filmfolder, scene, shot, take, 0, -1)
+ #takes = take
+ #shot = 1
+ elif menu[selected] == 'SHOT:' and recording == False:
+ if shot > 1:
+ shot -= 1
+ take = counttakes(filmname, filmfolder, scene, shot)
+ #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 1, -1)
+ #takes = take
+ elif menu[selected] == 'TAKE:' and recording == False:
+ if take > 1:
+ take -= 1
+ #scene, shot, take = browse2(filmname, filmfolder, scene, shot, take, 2, -1)
+ elif menu[selected] == 'RED:':
+ camera.awb_mode = 'off'
+ if float(camera.awb_gains[0]) > 0.02:
+ camera.awb_gains = (round(camera.awb_gains[0],2) - 0.02, round(camera.awb_gains[1],2))
+ elif menu[selected] == 'BLUE:':
+ camera.awb_mode = 'off'
+ if float(camera.awb_gains[1]) > 0.02:
+ camera.awb_gains = (round(camera.awb_gains[0],2), round(camera.awb_gains[1],2) - 0.02)
+ elif menu[selected] == 'SRV:':
+ if serverstate == 'on':
+ try:
+ os.makedirs(gonzopifolder+'/srv/sessions')
+ os.system('chown www-data '+gonzopifolder+'/srv/sessions')
+ except:
+ print('srv folder exist')
+ serverstate = gonzopiserver(False)
+ elif serverstate == 'off':
+ serverstate = gonzopiserver(True)
+ elif menu[selected] == 'WIFI:':
+ if wifistate == 'on':
+ run_command('sudo iwconfig wlan0 txpower off')
+ wifistate = 'off'
+ elif wifistate == 'off':
+ run_command('sudo iwconfig wlan0 txpower auto')
+ wifistate = 'on'
+ elif menu[selected] == 'SEARCH:':
+ if searchforcameras == 'on':
+ searchforcameras = 'off'
+ elif searchforcameras == 'off':
+ seaarchforcameras = 'on'
+ elif menu[selected] == 'MODE:':
+ if cammode == 'film':
+ cammode = 'picture'
+ vumetermessage('changing to picture mode')
+ elif cammode == 'picture':
+ cammode = 'film'
+ vumetermessage('changing to film mode')
+ camera.stop_preview()
+ camera.close()
+ camera = startcamera(lens,fps)
+ loadfilmsettings = True
+ flushbutton()
+ elif menu[selected] == 'LENS:':
+ s = 0
+ for a in lenses:
+ if a == lens:
+ selectlens = s
+ s += 1
+ if selectlens > 0:
+ selectlens -= 1
+ lens = os.listdir('lenses/')[selectlens]
+ #npzfile = np.load('lenses/' + lens)
+ #lensshade = npzfile['lens_shading_table']
+ table = read_table('lenses/' + lens)
+ camera.lens_shading_table = table
+ elif menu[selected] == 'DUB:':
+ if round(dub[0],1) == 1.0 and round(dub[1],1) > 0.0:
+ dub[1] -= 0.1
+ if round(dub[1],1) == 1.0 and round(dub[0],1) < 1.0:
+ dub[0] += 0.1
+ elif menu[selected] == 'COMP:':
+ if comp > 0:
+ comp -= 1
+ elif menu[selected] == 'HW:':
+ if plughw > 0:
+ plughw -= 1
+ vumetermessage(getaudiocards()[plughw])
+ elif menu[selected] == 'CH:':
+ if channels == 2:
+ channels = 1
+ elif menu[selected] == 'FPS:':
+ if fps_selected > 0:
+ fps_selected-=1
+ fps=fps_selection[fps_selected]
+ camera.framerate = fps
+ elif menu[selected] == 'Q:':
+ if scenes == 0:
+ if quality > 10:
+ quality -= 1
+ elif menu[selected] == 'CAMERA:':
+ if camselected > 0:
+ newselected = camselected-1
+ logger.info('camera selected:'+str(camselected))
+ elif menu[selected] == 'DSK:':
+ if dsk > 0:
+ dsk -= 1
+ filmfolder = storagedrives[dsk][1]
+ loadfilmsettings = True
+ #COUNT DISKSPACE
+ disk = os.statvfs(filmfolder)
+ diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
+ #LOAD FILM AND SCENE SETTINGS
+ try:
+ filmname = getfilms(filmfolder)[0][0]
+ except:
+ filmname = filmname
+ try:
+ filmname_back = getfilms(filmfolder)[0][1]
+ except:
+ filmname_back = filmname
+ if serverstate == 'on':
+ gonzopiserver(False)
+ gonzopiserver(True)
+
+ #RIGHT
+ elif pressed == 'right':
+ if selected < len(menu) - 1:
+ selected = selected + 1
else:
- pingip=0
- #searchforcameras='off'
- newcamera=pingtocamera(network[:-3]+str(pingip),port,'PING')
- if newcamera != '':
- if newcamera not in cameras and newcamera not in networks:
- cameras.append(newcamera)
- vumetermessage("Found camera! "+newcamera)
- print('-~-')
- print('pinging ip: '+network[:-3]+str(pingip))
+ selected = 0
+ if selected == 5: #jump over recording time
+ selected = 6
+ #Start Recording Time
+ if recording == True:
+ t = time.time() - starttime
+ rectime = time.strftime("%H:%M:%S", time.gmtime(t))
+ #Load settings
+ if loadfilmsettings == True:
+ db = get_film_files(filmname,filmfolder,db)
+ try:
+ filmsettings = loadsettings(filmfolder, filmname)
+ camera.brightness = filmsettings[2]
+ camera.contrast = filmsettings[3]
+ camera.saturation = filmsettings[4]
+ camera.shutter_speed = filmsettings[5]
+ camera.iso = filmsettings[6]
+ camera.awb_mode = filmsettings[7]
+ camera.awb_gains = filmsettings[8]
+ awb_lock = filmsettings[9]
+ miclevel = filmsettings[10]
+ headphoneslevel = filmsettings[11]
+ beeps = filmsettings[12]
+ flip = filmsettings[13]
+ comp = filmsettings[14]
+ between = filmsettings[15]
+ duration = filmsettings[16]
+ showmenu_settings = filmsettings[17]
+ quality = filmsettings[18]
+ #wifistate = filmsettings[19]
+ #serverstate=filmsettings[20]
+ plughw=filmsettings[21]
+ channels=filmsettings[22]
+ #cammode=filmsettings[23]
+ scene=filmsettings[24]
+ shot=filmsettings[25]
+ take=filmsettings[26]
+ logger.info('film settings loaded & applied')
+ time.sleep(0.2)
+ except:
+ logger.warning('could not load film settings')
+ if flip == "yes":
+ camera.vflip = True
+ camera.hflip = True
+ run_command('amixer -c 0 sset Mic ' + str(miclevel) + '% unmute')
+ run_command('amixer -c 0 sset Speaker ' + str(headphoneslevel) + '%')
+ print(filmfolder)
+ print(filmname)
+ origin_videos=organize(filmfolder, filmname)
+ print('ORIGIN')
+ print(origin_videos)
+ print('total of videos: '+str(len(origin_videos)))
+ with open(filmfolder+filmname+'/.origin_videos', 'w') as outfile:
+ outfile.write('\n'.join(str(i) for i in origin_videos))
+ if not os.path.isdir(filmfolder+'.videos/'):
+ os.makedirs(filmfolder+'.videos/')
+ allfiles = os.listdir(filmfolder+'.videos/')
+ print(allfiles)
+ print('alll')
+ for origin in origin_videos:
+ if origin in allfiles:
+ try:
+ #os.remove(origin)
+ print('ORIGIN VIDEO FOLDER NOT IN SYNC' + origin)
+ time.sleep(5)
+ except:
+ print('not exist')
+ #organize(filmfolder,'onthefloor')
+ scenes, shots, takes = countlast(filmname, filmfolder)
+ loadfilmsettings = False
+ rendermenu = True
+ updatethumb = True
+ if scene == 0:
+ scene = 1
+ if take == 0:
+ take = 1
+ if shot == 0:
+ shot = 1
+ # If menu at SCENE show first shot thumbnail off that scene
+ if menu[selected] == 'FILM:' and lastmenu != menu[selected] and recordable == False:
+ updatethumb = True
+ if menu[selected] == 'SCENE:' and lastmenu != menu[selected] and recordable == False:
+ updatethumb = True
+ if menu[selected] == 'SHOT:' and lastmenu != menu[selected] and recordable == False:
+ updatethumb = True
+ if menu[selected] == 'TAKE:' and lastmenu != menu[selected] and recordable == False:
+ updatethumb = True
+ #Check if scene, shot, or take changed and update thumbnail
+ if oldscene != scene or oldshot != shot or oldtake != take or updatethumb == True:
+ if recording == False:
+ #logger.info('film:' + filmname + ' scene:' + str(scene) + '/' + str(scenes) + ' shot:' + str(shot) + '/' + str(shots) + ' take:' + str(take) + '/' + str(takes))
+ foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/'
+ filename = 'take' + str(take).zfill(3)
+ recordable = not os.path.isfile(foldername + filename + '.mp4') and not os.path.isfile(foldername + filename + '.h264')
+ overlay = removeimage(camera, overlay)
+ if menu[selected] == 'SCENE:' and recordable == False: # display first shot of scene if browsing scenes
+ p = counttakes(filmname, filmfolder, scene, 1)
+ imagename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(1).zfill(3) + '/take' + str(p).zfill(3) + '.jpeg'
+ try:
+ videosize=countsize(filmfolder + filmname + '/scene' + str(scene).zfill(3)+'/scene.mp4')
+ vumetermessage('videosize: '+str(round(videosize/1000,2))+' Mb')
+ except:
+ vumetermessage('not rendered')
+ #elif menu[selected] == 'FILM:' and recordable == True:
+ # scene, shot, take = countlast(filmname,filmfolder)
+ # shot += 1
+ elif menu[selected] == 'FILM:' and recordable == False: # display first shot of film
+ p = counttakes(filmname, filmfolder, 1, 1)
+ imagename = filmfolder + filmname + '/scene' + str(1).zfill(3) + '/shot' + str(1).zfill(3) + '/take' + str(p).zfill(3) + '.jpeg'
+ try:
+ videosize=countsize(filmfolder + filmname + '/' + filmname+'.mp4')
+ vumetermessage('videosize: '+str(round(videosize/1000,2))+' Mb')
+ except:
+ vumetermessage('not rendered')
+ imagename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take' + str(take).zfill(3) + '.jpeg'
+ if menu[selected]=='SHOT:' and recordable == False or menu[selected]=='TAKE:' and recordable==False:
+ try:
+ videosize=countsize(foldername + filename + '.mp4')
+ vumetermessage('videosize: '+str(round(videosize/1000,2))+' Mb')
+ except:
+ videosize=countsize(foldername + filename + '.h264')
+ vumetermessage('not rendered, videosize: '+str(round(videosize/1000,2))+' Mb')
+ overlay = displayimage(camera, imagename, overlay, 3)
+ oldscene = scene
+ oldshot = shot
+ oldtake = take
+ updatethumb = False
+ scenes = countscenes(filmfolder, filmname)
+ shots = countshots(filmname, filmfolder, scene)
+ takes = counttakes(filmname, filmfolder, scene, shot)
+ #If auto dont show value show auto (impovement here to show different colors in gui, yes!!?)
+ if camera.iso == 0:
+ cameraiso = 'auto'
else:
- searchforcameras = 'off'
- time.sleep(keydelay)
+ cameraiso = str(camera.iso)
+ if camera.shutter_speed == 0:
+ camerashutter = 'auto'
+ else:
+ camerashutter = str(camera.exposure_speed).zfill(5)
+ if camera.awb_mode == 'auto':
+ camerared = 'auto'
+ camerablue = 'auto'
+ else:
+ camerared = str(float(camera.awb_gains[0]))[:4]
+ camerablue = str(float(camera.awb_gains[1]))[:4]
+
+ #Check if menu is changed and save settings / sec
+ if buttonpressed == True or recording == True or rendermenu == True:
+ lastmenu = menu[selected]
+ if showgonzopictrl == False:
+ menu = standardmenu
+ settings = storagedrives[dsk][0]+diskleft, filmname, str(scene) + '/' + str(scenes), str(shot) + '/' + str(shots), str(take) + '/' + str(takes), rectime, camerashutter, cameraiso, camerared, camerablue, str(round(camera.framerate)), str(quality), str(camera.brightness), str(camera.contrast), str(camera.saturation), effects[effectselected], str(flip), str(beeps), str(round(reclenght,2)), str(plughw), str(channels), str(miclevel), str(headphoneslevel), str(comp), '', cammode, '', serverstate, searchforcameras, wifistate, '', '', '', '', '', '', live
+ else:
+ #gonzopictrlmenu = 'FILM:', 'SCENE:', 'SHOT:', 'TAKE:', '', 'SHUTTER:', 'ISO:', 'RED:', 'BLUE:', 'FPS:', 'Q:', 'BRIGHT:', 'CONT:', 'SAT:', 'FLIP:', 'BEEP:', 'LENGTH:', 'HW:', 'CH:', 'MIC:', 'PHONES:', 'COMP:', 'TIMELAPSE', 'MODE:', 'DSK:', 'SHUTDOWN', 'SRV:', 'SEARCH:', 'WIFI:', 'CAMERA:', 'Add CAMERA', 'New FILM', 'Sync FILM', 'Sync SCENE'
+ menu = gonzopictrlmenu
+ #settings = '',str(camselected),'','',rectime,'','','','','','','','','',''
+ settings = storagedrives[dsk][0]+diskleft, filmname, str(scene) + '/' + str(scenes), str(shot) + '/' + str(shots), str(take) + '/' + str(takes), rectime, camerashutter, cameraiso, camerared, camerablue, str(round(camera.framerate)), str(quality), str(camera.brightness), str(camera.contrast), str(camera.saturation), effects[effectselected], str(flip), str(beeps), str(reclenght), str(plughw), str(channels), str(miclevel), str(headphoneslevel), str(comp), '', cammode, '', serverstate, searchforcameras, wifistate, str(camselected), '', '', '', '', '', ''
+ #Rerender menu if picamera settings change
+ #if settings != oldsettings or selected != oldselected:
+ writemenu(menu,settings,selected,'',showmenu)
+ rendermenu = False
+ #save settings if menu has been updated and x seconds passed
+ if recording == False:
+ #if time.time() - pausetime > savesettingsevery:
+ if oldsettings != settings:
+ settings_to_save = [filmfolder, filmname, camera.brightness, camera.contrast, camera.saturation, camera.shutter_speed, camera.iso, camera.awb_mode, camera.awb_gains, awb_lock, miclevel, headphoneslevel, beeps, flip, comp, between, duration, showmenu_settings, quality,wifistate,serverstate,plughw,channels,cammode,scene,shot,take]
+ #print('saving settings')
+ savesettings(settings_to_save, filmname, filmfolder)
+ if time.time() - pausetime > savesettingsevery:
+ pausetime = time.time()
+ #NETWORKS
+ networks=[]
+ adapters = ifaddr.get_adapters()
+ for adapter in adapters:
+ print("IPs of network adapter " + adapter.nice_name)
+ for ip in adapter.ips:
+ if ':' not in ip.ip[0] and '127.0.0.1' != ip.ip:
+ print(ip.ip)
+ networks=[ip.ip]
+ if networks != []:
+ network=networks[0]
+ if network not in cameras:
+ cameras=[]
+ cameras.append(network)
+ else:
+ network='not connected'
+ if len(cameras) > 1:
+ camerasconnected='connected '+str(len(cameras)-1)
+ recordwithports=True
+ vumetermessage('filming with '+camera_model +' ip:'+ cameras[camselected] + ' '+camerasconnected+' camselected:'+str(camselected)+' rec:'+str(camera_recording))
+ else:
+ camerasconnected=''
+ recordwithports=False
+ if searchforcameras == 'on':
+ camerasconnected='searching '+str(pingip)
+ if menu[selected] != 'SHOT:' and menu[selected] != 'SCENE:' and menu[selected] != 'FILM:' and menu[selected] != 'TAKE:':
+ vumetermessage('filming with '+camera_model +' ip:'+ network + ' '+camerasconnected)
+ disk = os.statvfs(filmfolder)
+ diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb'
+ checksync = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 )) + 'Mb'
+ if checksync == oldchecksync:
+ rectime = ''
+ else:
+ rectime = 'SYNCING.. '
+ oldchecksync = checksync
+ #print(term.yellow+'filming with '+camera_model +' ip:'+ network
+ print(camselected,camera_recording,cameras)
+ #writemessage(pressed)
+ oldsettings = settings
+ oldselected = selected
+ #PING TARINAS
+ if searchforcameras == 'on':
+ if camera_recording == None:
+ if pingip < 256:
+ pingip+=1
+ else:
+ pingip=0
+ #searchforcameras='off'
+ newcamera=pingtocamera(network[:-3]+str(pingip),port,'PING')
+ if newcamera != '':
+ if newcamera not in cameras and newcamera not in networks:
+ cameras.append(newcamera)
+ vumetermessage("Found camera! "+newcamera)
+ print('-~-')
+ print('pinging ip: '+network[:-3]+str(pingip))
+ else:
+ searchforcameras = 'off'
+ time.sleep(keydelay)
#--------------Logger-----------------------
@@ -2501,7 +2521,10 @@ def getfilms(filmfolder):
def getconfig(camera):
filmfolder=''
- version = camera.revision
+ if camera != None:
+ version = camera.revision
+ else:
+ version = 'none'
home = os.path.expanduser('~')
configfile = home + '/.gonzopi/config.ini'
configdir = os.path.dirname(configfile)
@@ -2522,7 +2545,15 @@ def getconfig(camera):
return camera_model, camera_revision, filmfolder+'/'
except:
logger.info("couldnt read config")
- if version == 'imx219':
+ if version == 'none':
+ config['SENSOR'] = {}
+ config['SENSOR']['model'] = version
+ config['SENSOR']['revision'] = 'none'
+ with open(configfile, 'w') as f:
+ config.write(f)
+ camera_model = version
+ camera_revision = 'none'
+ elif version == 'imx219':
config['SENSOR'] = {}
config['SENSOR']['model'] = version
config['SENSOR']['revision'] = 'standard'