gonzopi

git clone https://git.tarina.org/gonzopi
Log | Files | Refs | README | LICENSE

commit d6ee58abb216008b9e1d5b1c049ab766e24dbb5e
parent 28b5756ae4296972e5ede2c13c23054efa4b2488
Author: rbckman <rob@tarina.org>
Date:   Sun, 18 May 2025 20:27:46 +0100

copy takes to dubs

Diffstat:
Mgonzopi.py | 80++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 61 insertions(+), 19 deletions(-)

diff --git a/gonzopi.py b/gonzopi.py @@ -591,7 +591,7 @@ def main(): crossfadesave(folder,crossfade,filename) #DUB SHOT elif pressed == 'middle' and menu[selected] == 'SHOT:' and recordable == False: - newdub = clipsettings(filmfolder, filmname, scene, shot, take, plughw) + newdub, yanked = clipsettings(filmfolder, filmname, scene, shot, take, plughw,yanked) take = counttakes(filmname, filmfolder, scene, shot) if newdub: camera.stop_preview() @@ -622,7 +622,7 @@ def main(): rendermenu = True #DUB SCENE elif pressed == 'middle' and menu[selected] == 'SCENE:': - newdub = clipsettings(filmfolder, filmname, scene, 0, take, plughw) + newdub, yanked = clipsettings(filmfolder, filmname, scene, 0, take, plughw,yanked) if newdub: camera.stop_preview() renderfilename, newaudiomix = renderscene(filmfolder, filmname, scene) @@ -644,7 +644,7 @@ def main(): rendermenu = True #DUB FILM elif pressed == 'middle' and menu[selected] == 'FILM:': - newdub = clipsettings(filmfolder, filmname, 0, 0, take, plughw) + newdub, yanked = clipsettings(filmfolder, filmname, 0, 0, take, plughw,yanked) if newdub: camera.stop_preview() renderfilename = renderfilm(filmfolder, filmname, comp, 0) @@ -785,8 +785,10 @@ def main(): vumetermessage('Moving scene ' + str(scene) + ' (I)nsert button to place it...') #PASTE SHOT and PASTE SCENE elif pressed == 'insert' and yanked: - if copying == 'take': + if copying == 'take' and menu[selected] == 'TAKE:': take = counttakes(filmname, filmfolder, scene, shot) + if shot == 0: + shot=1 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) @@ -801,7 +803,10 @@ def main(): paste = '' if moving == True: os.system('rm -r ' + yanked + '*') - elif copying == 'shot': + elif copying == 'shot' and menu[selected] == 'SHOT:': + take = counttakes(filmname, filmfolder, scene, shot) + if shot == 0: + shot=1 vumetermessage('Pasting shot, please wait...') paste = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_yanked' try: @@ -813,7 +818,7 @@ def main(): os.system('rm -r ' + yanked+'/*') #Remove hidden placeholder #os.system('rm ' + yanked + '/.placeholder') - elif copying == 'scene': + elif copying == 'scene' and menu[selected]=='SCENE:': vumetermessage('Pasting scene, please wait...') paste = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_yanked' os.system('cp -r ' + yanked + ' ' + paste) @@ -821,7 +826,7 @@ def main(): os.system('rm -r ' + yanked+'/*') #Remove hidden placeholder #os.system('rm ' + yanked + '/.placeholder') - elif copying == 'film': + elif copying == 'film' and menu[selected]=='FILM:': vumetermessage('Pasting film, please wait...') paste = filmfolder+filmname+'_copy' os.system('cp -r ' + yanked + ' ' + paste) @@ -4243,6 +4248,24 @@ def has_audio_track(file_path): print(f"Error parsing {file_path}: {e}") return None +def is_audio_stereo(file_path): + try: + # Parse the media file + media_info = MediaInfo.parse(file_path) + + # Check for audio tracks + for track in media_info.tracks: + if track.track_type == "Audio": + if track.channel_s == 1: + return False + if track.channel_s == 2: + return True + return None + + except Exception as e: + print(f"Error parsing {file_path}: {e}") + return None + def get_video_length(filepath): # Parse the file media_info = MediaInfo.parse(filepath) @@ -4310,11 +4333,11 @@ def compileshot(filename,filmfolder,filmname): except: audiolength=videolength #if there is no audio length - logger.info('audio is:' + str(audiolength)) + print('trimming audio') - if int(audiolength) > int(videolength): + if int(audiolength) > int(videolength+int(0.013*1000)): vumetermessage('trimming audio...') - run_command('sox -V0 '+filename+'.wav -c 2 /dev/shm/temp.wav trim 0.013') + run_command('sox -V0 -b 16 '+filename+'.wav -c 2 /dev/shm/temp.wav trim 0.013') run_command('mv /dev/shm/temp.wav '+ filename + '.wav') os.system('rm /dev/shm/temp.wav') fps_rounded=round(fps) @@ -4330,6 +4353,13 @@ def compileshot(filename,filmfolder,filmname): db = correct_database(filmname,filmfolder,db) db.update('videos', where='filename="'+video_origins+'"', videolength=videolength/1000, audiolength=audiolength/1000, audiosync=audiosync) mux=False + #one more if stereo check! + stereo = is_audio_stereo(filename+'.wav') + if stereo == False: + run_command('sox -V0 -b 16 '+filename+'.wav -c 2 /dev/shm/temp.wav') + run_command('mv /dev/shm/temp.wav '+ filename + '.wav') + os.system('rm /dev/shm/temp.wav') + logger.info('audio is:' + str(audiolength)) if mux == True: #muxing mp3 layer to mp4 file #count estimated audio filesize with a bitrate of 320 kb/s @@ -4547,9 +4577,8 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): try: if video_db[0].faststart == 0: faststart=False - if video_db[0].faststart == 1: - faststart=True except: + faststart = True pass if faststart == False: vumetermessage('found new clip compiling...') @@ -5179,7 +5208,7 @@ def removedub(dubfolder, dubnr): #-------------Clip settings--------------- -def clipsettings(filmfolder, filmname, scene, shot, take, plughw): +def clipsettings(filmfolder, filmname, scene, shot, take, plughw, yanked): vumetermessage('press record, view or retake to be dubbing') pressed = '' buttonpressed = '' @@ -5216,10 +5245,10 @@ def clipsettings(filmfolder, filmname, scene, shot, take, plughw): fadein = round(dubmix[dubselected][2],1) fadeout = round(dubmix[dubselected][3],1) menu = 'BACK', 'ADD:', '', '', 'DUB' + str(dubselected + 1) + ':', '', '', '' - settings = '', 'd:' + str(nmix) + '/o:' + str(ndub), 'in:' + str(nfadein), 'out:' + str(nfadeout), '', 'd:' + str(mix) + '/o' + str(dub), 'in:' + str(fadein), 'out:' + str(fadeout) + settings = '', 'd:' + str(nmix) + '/o:' + str(ndub), 'in:' + str(nfadein), 'out:' + str(nfadeout), '', 'd:' + str(mix) + '/o' + str(dub), 'in:' + str(fadein), 'out:' + str(fadeout), '' else: menu = 'BACK', 'ADD:', '', '' - settings = '', 'd:' + str(nmix) + '/o:' + str(ndub), 'in:' + str(nfadein), 'out:' + str(nfadeout) + settings = '', 'd:' + str(nmix) + '/o:' + str(ndub), 'in:' + str(nfadein), 'out:' + str(nfadeout), '' oldmenu=writemenu(menu,settings,selected,header,showmenu,oldmenu) pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton) @@ -5244,6 +5273,15 @@ def clipsettings(filmfolder, filmname, scene, shot, take, plughw): elif pressed == 'down' and selected == 3: if newdub[3] > 0.01: newdub[3] -= 0.1 + elif pressed == 'insert' and yanked != '': + os.makedirs(filefolder, exist_ok=True) + dubmix.append(newdub) + dubrecord = filefolder + 'dub' + str(len(dubfiles)+1).zfill(3) + '.wav' + os.system('cp '+yanked+'.wav '+dubrecord) + dubfiles, dubmix, newmix = getdubs(filmfolder, filmname, scene, shot) + dubselected = len(dubfiles) - 1 + dubrecord='' + yanked = '' elif pressed == 'record' or pressed == 'middle' and selected == 1: dubmix.append(newdub) dubrecord = filefolder + 'dub' + str(len(dubfiles)+1).zfill(3) + '.wav' @@ -5291,13 +5329,17 @@ def clipsettings(filmfolder, filmname, scene, shot, take, plughw): elif pressed == 'down' and selected == 7: if dubmix[dubselected][3] > 0.01: dubmix[dubselected][3] -= 0.1 - elif pressed == 'right': - if selected < (len(settings) - 1): + if pressed == 'right': + if selected < (len(settings)-2): selected = selected + 1 + else: + selected = 0 + selected == 0 elif pressed == 'left': if selected > 0: selected = selected - 1 - + else: + selected = len(settings) - 2 elif pressed == 'middle' and menu[selected] == 'BACK': os.system('pkill aplay') break @@ -5323,7 +5365,7 @@ def clipsettings(filmfolder, filmname, scene, shot, take, plughw): print(str(round(p,1))) c += 1 dubmix_old = dubmix - return dubrecord + return dubrecord, yanked #---------------Play & DUB--------------------