gonzopi

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

commit e844950509068ee64e00f741e35933ad46975a05
parent d101a684560aa8aef313b0395919d28d90adb425
Author: rbckman <rob@tarina.org>
Date:   Thu, 25 Dec 2025 13:53:35 +0000

added DUB settings to browser, dont merge mp4 audio, split cut

Diffstat:
Mgonzopi.py | 42+++++++++++++++++++++++++++++++++++-------
Msrv/gonzopiserver.py | 2++
Msrv/templates/index.html | 16+++++++++++++++-
3 files changed, 52 insertions(+), 8 deletions(-)

diff --git a/gonzopi.py b/gonzopi.py @@ -5209,6 +5209,7 @@ def rendervideo(filmfolder, filmname, scene, filmfiles, filename, renderinfo): l.write("file '"+str(f)+".mp4'\n") videomerge.append('-i') videomerge.append(scenedir+'.renderlist') + videomerge.append('-an') videomerge.append('-c:v') videomerge.append('copy') videomerge.append('-movflags') @@ -5611,7 +5612,8 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): video_origins=filmfolder+'.videos/'+datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) #compileshot(scenedir+'blend/'+blendmodes[blendselect]+'.h264',filmfolder,filmname) call(['MP4Box', '-rem', '2', scenedir+'blend/'+blendmodes[blendselect] + '.mp4'], shell=False) - run_command('ffmpeg -y -i '+renderfilename+'.mp4 -i '+scenedir+'blend/'+blendmodes[blendselect]+'.mp4 '+encoder()+'-filter_complex "blend="'+blendmodes[blendselect]+' '+filmfolder+'.tmp/blend.mp4') + run_command('ffmpeg -y -i '+renderfilename+'.mp4 -i '+scenedir+'blend/'+blendmodes[blendselect]+'.mp4 '+encoder()+'-filter_complex "blend='+blendmodes[blendselect]+'" -an '+filmfolder+'.tmp/blend.mp4') + #run_command('ffmpeg -y -i '+renderfilename+'.mp4 -i '+scenedir+'blend/'+blendmodes[blendselect]+'.mp4 '+encoder()+'-filter_complex "[0:v][1:v]blend=all_mode='+blendmodes[blendselect]+':all_opacity=0.5[v]" -map "[v]" -an '+filmfolder+'.tmp/blend.mp4') screen_filename = scenedir+'take' + str(counttakes2(scenedir)+1).zfill(3) run_command('cp ' + renderfilename + '.wav ' + screen_filename + '.wav') #make a new sublink @@ -5771,6 +5773,11 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): def renderscene(filmfolder, filmname, scene): global fps, muxing + #dont start muxing individual shots or scenes lol + mux = False + if muxing == True: + mux = True + muxing = False #This function checks and calls rendervideo & renderaudio if something has changed in the film #Video videohash = '' @@ -5804,7 +5811,7 @@ def renderscene(filmfolder, filmname, scene): scene = int(p.rsplit('scene',1)[1][:3]) shot = int(p.rsplit('shot',1)[1][:3]) #remove audio track - call(['MP4Box', '-rem', '2', p], shell=False) + #call(['MP4Box', '-rem', '2', p], shell=False) rendershotname, renderfix = rendershot(filmfolder, filmname, p, scene, shot) if renderfix == True: renderfixscene = True @@ -5817,7 +5824,7 @@ def renderscene(filmfolder, filmname, scene): for p in filmfiles: scene = int(p.rsplit('scene',1)[1][:3]) shot = int(p.rsplit('shot',1)[1][:3]) - call(['MP4Box', '-rem', '2', p], shell=False) + #call(['MP4Box', '-rem', '2', p+'.mp4'], shell=False) rendershotname, renderfix = rendershot(filmfolder, filmname, p, scene, shot) if renderfix == True: renderfixscene = True @@ -5900,7 +5907,8 @@ def renderscene(filmfolder, filmname, scene): #dont mux scenes for now #mux = False ifaudio = get_audio_length(renderfilename+'.mp4') - if muxing == True and ifaudio == None: + if mux == True and ifaudio == None: + muxing = True #muxing mp3 layer to mp4 file #count estimated audio filesize with a bitrate of 320 kb/s try: @@ -5936,6 +5944,11 @@ def renderfilm(filmfolder, filmname, comp, scene): global fps, muxing def render(q, filmfolder, filmname, comp, scene): global fps, muxing + #dont start muxing individual shots or scenes lol + mux = False + if muxing == True: + mux = True + muxing = False newaudiomix = False #if comp == 1: # newaudiomix = True @@ -5946,6 +5959,7 @@ def renderfilm(filmfolder, filmname, comp, scene): return scenes = countscenes(filmfolder, filmname) for i in range(scenes): + scenefilename, audiomix = renderscene(filmfolder, filmname, i + 1) #Check if a scene has a new audiomix print('audiomix of scene ' + str(i + 1) + ' is ' + str(audiomix)) @@ -6021,7 +6035,8 @@ def renderfilm(filmfolder, filmname, comp, scene): print('Already rendered!') #muxing = True ifaudio = get_audio_length(renderfilename+'.mp4') - if muxing == True and ifaudio == None: + if mux == True and ifaudio == None: + muxing = True #muxing mp3 layer to mp4 file #count estimated audio filesize with a bitrate of 320 kb/s audiosize = countsize(renderfilename + '.wav') * 0.453 @@ -6267,6 +6282,7 @@ def clipsettings(filmfolder, filmname, scene, shot, take, plughw, yanked): dubmix.append(newdub) dubrecord = filefolder + 'dub' + str(len(dubfiles)+1).zfill(3) + '.wav' os.system('cp '+yanked+'.wav '+dubrecord) + vumetermessage('dub' + yanked + ' pasted!') dubfiles, dubmix, newmix = getdubs(filmfolder, filmname, scene, shot) dubselected = len(dubfiles) - 1 dubrecord='' @@ -6288,6 +6304,9 @@ def clipsettings(filmfolder, filmname, scene, shot, take, plughw, yanked): elif pressed == 'move' and selected == 4: vumetermessage('press insert button to move dub') movedub = filefolder + 'dub' + str(dubselected + 1).zfill(3) + '.wav' + elif pressed == 'copy': + vumetermessage('dub' + str(dubselected + 1).zfill(3)+' copied!') + yanked = filefolder + 'dub' + str(dubselected + 1).zfill(3) elif pressed == 'insert' and selected == 4: vumetermessage('moving dub please hold on') pastedub = filefolder + 'dub' + str(dubselected + 1).zfill(3) + '_insert.wav' @@ -6515,8 +6534,8 @@ def playdub(filmname, filename, player_menu, take): settings = '','','' elif pause == True: if player_menu == 'shot': - menu = 'BACK', 'PLAY', 'REPLAY', 'TRIM' - settings = '','','','' + menu = 'BACK', 'PLAY', 'REPLAY', 'TRIM', 'SPLIT' + settings = '','','','','' else: menu = 'BACK', 'PLAY', 'REPLAY' settings = '','','' @@ -6780,6 +6799,13 @@ def playdub(filmname, filename, player_menu, take): elif menu[selected] == 'CANCEL': selected = 1 trim = False + elif menu[selected] == 'SPLIT': + split_list.append([[0, player.position()], takename]) + split_list.append([[player.position(), clipduration], takename]) + vumetermessage('split '+str(len(split_list))+' position set to: '+ str(player.position())) + player.quit() + #playerAudio.quit() + return trim, split_list elif menu[selected] == 'FROM BEGINNING': trim = ['beginning', player.position()] player.quit() @@ -7641,6 +7667,8 @@ def getbutton(lastbutton, buttonpressed, buttontime, holdbutton): pressed=nextstatus elif "paste" in nextstatus: pressed="insert" + elif "dub" in nextstatus: + pressed="dub" elif "MAKEPLACEHOLDERS:" in nextstatus: pressed=nextstatus #print(nextstatus) diff --git a/srv/gonzopiserver.py b/srv/gonzopiserver.py @@ -715,6 +715,8 @@ class api: sendtocamera(ip,port,'copy') elif i.func == 'paste': sendtocamera(ip,port,'paste') + elif i.func == 'dub': + sendtocamera(ip,port,'dub') elif i.scene!=None and i.shot!=None and i.film != None: #sendtocamera(ip,port,'NEWFILM:'+i.film) #time.sleep(0.05) diff --git a/srv/templates/index.html b/srv/templates/index.html @@ -108,6 +108,8 @@ $$(document).on('keydown', function (event) { $$('#DELETE').trigger('click'); } else if (event.which == 13) { $$('#MIDDLE').trigger('click'); + } else if (event.which == 68) { + $$('#DUB').trigger('click'); } else if (event.which == 97) { $$('#CAMERA0').trigger('click'); } else if (event.which == 98) { @@ -194,7 +196,7 @@ $if thumb != '': </div> <div class="controller3"> -<a id="MOVE">MOVE</a> <a id="COPY">COPY</a> <a id="PASTE">PASTE</a><br> +<a id="MOVE">MOVE</a> <a id="COPY">COPY</a> <a id="PASTE">PASTE</a> <a id="DUB">DUB</a> <br> </div> </div> @@ -565,6 +567,18 @@ $$('#PASTE').on('click', function () { } }) }); +$$('#DUB').on('click', function () { + $$.ajax({ + method: "POST", + type: "Content-type", + url:"/api?func=dub", + success: function(result) { + }, + error: function(result) { + console.log('error', result); + } +}) +}); </script>