commit 0ea5339daa09298539abc726ac07b6334135097c
parent 2f9fa025419de4bec13815e473214d00ef829a01
Author: rob <rob@tarina.org>
Date:   Tue,  7 Nov 2023 10:45:20 +0200
Merge branch 'master' of https://git.tarina.org/tarina
Diffstat:
| M | tarina.py | | | 57 | ++++++++++++++++++++++++++++++++------------------------- | 
1 file changed, 32 insertions(+), 25 deletions(-)
diff --git a/tarina.py b/tarina.py
@@ -587,7 +587,7 @@ def main():
                 scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
                 yankedshot = ''
                 vumetermessage('Shot pasted!')
-                time.sleep(1)
+                time.sleep(2)
             elif pressed == 'insert' and menu[selected] == 'SCENE:' and yankedscene:
                 vumetermessage('Pasting scene, please wait...')
                 pastescene = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_yanked'
@@ -598,7 +598,7 @@ def main():
                 scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
                 yankedscene = ''
                 vumetermessage('Scene pasted!')
-                time.sleep(1)
+                time.sleep(2)
             #MOVE SHOT and MOVE SCENE
             elif pressed == 'insert' and menu[selected] == 'SHOT:' and cuttedshot:
                     vumetermessage('Moving shot, please wait...')
@@ -617,7 +617,7 @@ def main():
                     updatethumb = True
                     scenes, shots, takes = browse(filmname,filmfolder,scene,shot,take)
                     vumetermessage('Shot moved!')
-                    time.sleep(1)
+                    time.sleep(2)
             elif pressed == 'insert' and menu[selected] == 'SCENE:' and cuttedscene:
                     vumetermessage('Moving scene, please wait...')
                     pastescene = filmfolder + filmname + '/' + 'scene' + str(scene-1).zfill(3) + '_yanked'
@@ -631,7 +631,7 @@ def main():
                     cuttedscene = ''
                     updatethumb = True
                     vumetermessage('Scene moved!')
-                    time.sleep(1)
+                    time.sleep(2)
             #INSERT SHOT
             elif pressed == 'insert' and menu[selected] != 'SCENE:':
                 insertshot = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) +'/shot' + str(shot-1).zfill(3) + '_insert'
@@ -2945,8 +2945,6 @@ def compileshot(filename,filmfolder,filmname):
         filename=filename.replace('.h264','')
     if '.mp4' in filename:
         filename=filename.replace('.mp4','')
-    if not os.path.isfile(filename + '.wav'):
-        audiosilence('',filename)
     if os.path.isfile(filename + '.h264'):
         logger.info('Video not converted!')
         writemessage('Converting to playable video')
@@ -2957,6 +2955,8 @@ def compileshot(filename,filmfolder,filmname):
         print(filename+'.mp4 removed!')
         run_command('MP4Box -fps 25 -add ' + video_origins + '.h264 ' + video_origins + '.mp4')
         os.system('ln -sf '+video_origins+'.mp4 '+filename+'.mp4')
+        if not os.path.isfile(filename + '.wav'):
+            audiosilence('',filename)
         #add audio/video start delay sync
         run_command('sox -V0 '+filename+'.wav -c 2 /dev/shm/temp.wav trim 0.013')
         run_command('mv /dev/shm/temp.wav '+ filename + '.wav')
@@ -3014,6 +3014,8 @@ def shotfiles(filmfolder, filmname, scene):
     #time.sleep(2)
     return files
 
+#--------Show JPEG as progress when rendering
+
 #---------------Render Video------------------
 
 def rendervideo(filmfiles, filename, renderinfo):
@@ -3130,13 +3132,18 @@ def rendershot(filmfolder, filmname, scene, shot):
     oldvideohash = ''
     take = counttakes(filmname, filmfolder, scene, shot)
     renderfilename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take' + str(take).zfill(3) 
+    # Video Hash
+    compileshot(renderfilename,filmfolder,filmname)
+    videohash = videohash + str(int(countsize(renderfilename + '.mp4')))
+    print('Videohash of shot is: ' + videohash)
     #if something shutdown in middle of process
     if os.path.isfile(renderfilename + '_tmp.mp4') == True:
         os.system('mv ' + renderfilename + '_tmp.mp4 ' + renderfilename + '.mp4')
-    filmfiles = [renderfilename]
     scenedir = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/'
     # Check if video corrupt
     renderfix = False
+    if os.path.isfile(renderfilename + '.jpeg') == False: 
+        run_command('ffmpeg -sseof -1 -i ' + renderfilename + '.mp4 -update 1 -q:v 1 -vf scale=800:450 ' + renderfilename + '.jpeg')
     try:
         pipe = subprocess.check_output('mediainfo --Inform="Video;%Duration%" ' + renderfilename + '.mp4', shell=True)
         videolenght = pipe.decode().strip()
@@ -3148,11 +3155,6 @@ def rendershot(filmfolder, filmname, scene, shot):
         # For backwards compatibility remove old rendered scene files
         # run_command('rm ' + renderfilename + '*')
         renderfix = True
-    # Video Hash
-    for p in filmfiles:
-        compileshot(p,filmfolder,filmname)
-        videohash = videohash + str(int(countsize(p + '.mp4')))
-    print('Videohash of shot is: ' + videohash)
     try:
         with open(scenedir + '.videohash', 'r') as f:
             oldvideohash = f.readline().strip()
@@ -3165,8 +3167,7 @@ def rendershot(filmfolder, filmname, scene, shot):
     audiohash = ''
     oldaudiohash = ''
     newaudiomix = False
-    for p in filmfiles:
-        audiohash += str(int(countsize(p + '.wav')))
+    audiohash += str(int(countsize(renderfilename + '.wav')))
     dubfiles, dubmix, newmix = getdubs(filmfolder, filmname, scene, shot)
     for p in dubfiles:
         audiohash += str(int(countsize(p)))
@@ -3186,7 +3187,7 @@ def rendershot(filmfolder, filmname, scene, shot):
         if os.path.exists(scenedir+'dub') == True:
             os.system('cp '+scenedir+'dub/original.wav '+renderfilename+'.wav')
         #os.system('cp '+dubfolder+'original.wav '+renderfilename+'.wav')
-        renderaudio(filmfiles, renderfilename, dubfiles, dubmix)
+        renderaudio(renderfilename, renderfilename, dubfiles, dubmix)
         print('updating audiohash...')
         with open(scenedir + '.audiohash', 'w') as f:
             f.write(audiohash)
@@ -3238,24 +3239,28 @@ def renderscene(filmfolder, filmname, scene):
     renderfilename = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/scene'
     scenedir = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/'
     # Check if video corrupt
-    renderfix = False
+    renderfixscene = False
     try:
         pipe = subprocess.check_output('mediainfo --Inform="Video;%Duration%" ' + renderfilename + '.mp4', shell=True)
         videolenght = pipe.decode().strip()
     except:
         videolenght = ''
+        renderfixscene = True
     print('Scene lenght ' + videolenght)
     if videolenght == '':
         print('Okey, scene file not found or is corrupted')
         # For backwards compatibility remove old rendered scene files
-        #run_command('rm ' + renderfilename + '*')
-        renderfix = True
+        #run_command('rm ' + renderfilename + '.mp4')
+        #run_command('rm ' + renderfilename + '.wav')
+        vumetermessage('corrupted scene file! removing, please render again')
+        renderfixscene = True
+        #return '', ''
     # Video Hash
     shot=1
     for p in filmfiles:
-        compileshot(p,filmfolder,filmname)
-        videohash = videohash + str(int(countsize(p + '.mp4')))
+        #compileshot(p,filmfolder,filmname)
         rendershotname, renderfix = rendershot(filmfolder, filmname, scene, shot)
+        videohash = videohash + str(int(countsize(p + '.mp4')))
         shot=shot+1
     print('Videohash of scene is: ' + videohash)
     try:
@@ -3267,13 +3272,15 @@ def renderscene(filmfolder, filmname, scene):
         with open(scenedir + '.videohash', 'w') as f:
             f.write(videohash)
 
+    print('renderfix is:'+str(renderfixscene))
     # Render if needed
-    if videohash != oldvideohash or renderfix == True:
+    if videohash != oldvideohash or renderfixscene == True or renderfix == True:
         rendervideo(filmfiles, renderfilename, 'scene ' + str(scene))
         fastedit(filmfolder, filmname, filmfiles, scene)
         print('updating videohash...')
         with open(scenedir + '.videohash', 'w') as f:
             f.write(videohash)
+    #time.sleep(3)
 
     #Audio
     audiohash = ''
@@ -3300,11 +3307,11 @@ def renderscene(filmfolder, filmname, scene):
         print('no audiohash found, making one...')
         with open(scenedir + '.audiohash', 'w') as f:
             f.write(audiohash) 
-        renderfix=True
+        renderfixscene=True
     if os.path.isfile(scenedir+'/.rerender') == True:
-        renderfix=True
+        renderfixscene=True
         os.system('rm '+scenedir+'/.rerender')
-    if audiohash != oldaudiohash or newmix == True or renderfix == True:
+    if audiohash != oldaudiohash or newmix == True or renderfix == True or renderfixscene == True:
         renderaudio(filmfiles, renderfilename, dubfiles, dubmix)
         print('updating audiohash...')
         with open(scenedir + '.audiohash', 'w') as f:
@@ -3373,7 +3380,7 @@ def renderfilm(filmfolder, filmname, comp, scene, muxing):
         scenedir = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/'
         for p in filmfiles:
             print(p)
-            compileshot(p,filmfolder,filmname)
+            #compileshot(p,filmfolder,filmname)
             videohash += str(int(countsize(p + '.mp4')))
         print('Videohash of film is: ' + videohash)
         try: