gonzopi

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

commit a878f402b5faaa6aa173cba79e480d289155bb63
parent ecb5fd870b5ffc0a377e50b4579b338c0b8d5103
Author: rbckman <rob@tarina.org>
Date:   Mon,  8 Dec 2025 20:47:18 +0200

new bitrate set, also now if you set bitrate its gonna choose bitrate over Q

Diffstat:
Mgonzopi.py | 84++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 64 insertions(+), 20 deletions(-)

diff --git a/gonzopi.py b/gonzopi.py @@ -153,7 +153,7 @@ def main(): pressagain = '' #STANDARD VALUES (some of these may not be needed, should do some clean up) abc = '_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0' - numbers_only = ' ','1','2','3','4','5','6','7','8','9','0' + numbers_only = ' ','0','1','2','3','4','5','6','7','8','9' keydelay = 0.0555 selectedaction = 0 selected = 0 @@ -267,6 +267,8 @@ def main(): muxing=False mux='no' camera = '' + gputemp = '' + cputemp = '' if rpimode: #FIRE UP CAMERA @@ -1817,7 +1819,7 @@ def main(): if udp_ip == '': udp_ip, udp_port = newudp_ip(numbers_only, network) rendermenu = True - stream = startstream(camera, stream, plughw, channels,network,udp_ip,udp_port) + stream = startstream(camera, stream, plughw, channels,network,udp_ip,udp_port,bitrate) if stream == '': vumetermessage('something wrong with streaming') else: @@ -1862,6 +1864,12 @@ def main(): showgonzopictrl=False elif pressed == 'middle' and menu[selected] == 'Q:': bitrate = get_bitrate(numbers_only, bitrate) + bitrate = int(bitrate*1000) + camera = stopcamera(camera, rec_process) + camera = startcamera(camera) + vumetermessage('Bitrate set to ' + str(bitrate/1000)+ ' kbits/s') + time.sleep(3) + loadfilmsettings = True rendermenu = True elif pressed == 'middle' and menu[selected] == 'VFX:': if effects[effectselected] == 'colorpoint': @@ -2596,6 +2604,12 @@ def main(): savesettings(settings_to_save, filmname, filmfolder) if time.time() - pausetime > savesettingsevery: pausetime = time.time() + #CPU AND GPU TEMP + with open('/sys/class/thermal/thermal_zone0/temp', 'r') as f: + cputemp = 'cpu: '+str(int(f.read()) / 1000)+'°C' + # GPU/SoC temp + result = subprocess.run(['vcgencmd', 'measure_temp'], capture_output=True, text=True) + gputemp = 'gpu: '+ str(float(result.stdout.split('=')[1].split("'")[0])) + '°C' #NETWORKS networks=[] network='' @@ -2626,7 +2640,7 @@ def main(): 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 +' '+cputemp+' '+gputemp) disk = os.statvfs(filmfolder) diskleft = str(int(disk.f_bavail * disk.f_frsize / 1024 / 1024 / 1024)) + 'Gb' #checksync = int(disk.f_bavail * disk.f_frsize / 1024 / 1024 ) @@ -3881,26 +3895,34 @@ def get_bitrate(abc, bitrate): cursor = '_' blinking = True pausetime = time.time() + bitrate=int(bitrate/1000) menuinput=str(bitrate) while True: - message = 'New bitrate: ' + menuinput + message = 'New bitrate ' + menuinput + endmessage = ' kbits/s' print(term.clear+term.home) print(message+cursor) - writemessage(message + cursor) + writemessage(message + cursor + endmessage) vumetermessage(helpmessage) pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton) if event == ' ': event = '_' - if pressed == 'down': + if pressed == 'up': pausetime = time.time() if abcx < (len(abc) - 1): abcx = abcx + 1 cursor = abc[abcx] - elif pressed == 'up': + else: + abcx = 0 + cursor = abc[abcx] + elif pressed == 'down': pausetime = time.time() if abcx > 0: abcx = abcx - 1 cursor = abc[abcx] + else: + abcx = len(abc) - 1 + cursor = abc[abcx] elif pressed == 'right' and abcx != 0: pausetime = time.time() if len(menuinput) < 7: @@ -3916,13 +3938,13 @@ def get_bitrate(abc, bitrate): elif pressed == 'middle' or event == 10: if abc[abcx] != ' ' or menuinput != '': menuinput = menuinput + abc[abcx] - if int(menuinput) < 25000001: + if int(menuinput) < 65001: logger.info("New bitrate " + menuinput) bitrate = int(menuinput) return bitrate break else: - helpmessage = 'in the range of bitrate 1-25000000' + helpmessage = 'in the range of bitrate 1-65000' elif pressed == 'retake': return '' elif event in abc: @@ -7162,7 +7184,7 @@ def uploadfilm(filename, filmname): #-------------Streaming--------------- -def startstream(camera, stream, plughw, channels,network, udp_ip, udp_port): +def startstream(camera, stream, plughw, channels,network, udp_ip, udp_port, bitrate): #youtube #youtube="rtmp://a.rtmp.youtube.com/live2/" #with open("/home/pi/.youtube-live") as fp: @@ -7178,7 +7200,10 @@ def startstream(camera, stream, plughw, channels,network, udp_ip, udp_port): stream_cmd = 'ffmpeg -f h264 -r 24.989 -i - -vcodec copy -f mpegts udp://'+udp_ip+':'+udp_port try: stream = subprocess.Popen(stream_cmd, shell=True, stdin=subprocess.PIPE) - camera.start_recording(stream.stdin, splitter_port=2, format='h264', bitrate = bitrate, quality=quality) + if bitrate > 1000: + camera.start_recording(stream.stdin, splitter_port=2, format='h264', bitrate = bitrate) + else: + camera.start_recording(stream.stdin, splitter_port=2, format='h264', quality=quality) except: stream = '' #now = time.strftime("%Y-%m-%d-%H:%M:%S") @@ -7199,22 +7224,35 @@ def startrecording(camera, takename,bitrate, quality, profilelevel, reclength): rec_process = subprocess.Popen(ffmpeg_cmd, stdin=subprocess.PIPE) if reclength > 1 or reclength == 0: if camera.recording == True: - #camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) - camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) + if bitrate > 1000: + camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) + else: + camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) else: - #camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) - camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) + if bitrate > 1000: + camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) + else: + camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) else: if camera.recording == True: - camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) + if bitrate > 1000: + camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) + else: + camera.split_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) else: - camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) + if bitrate > 1000: + camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) + else: + camera.start_recording(rec_process.stdin, format='h264', level=profilelevel, intra_period=5, quality = quality) return rec_process, camera def stoprecording(camera,rec_process,bitrate, quality, profilelevel): #camera.stop_recording() #camera.split_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) # back to hot standby - camera.split_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, quality = quality) # back to hot standby + if bitrate > 1000: + camera.split_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) # back to hot standby + else: + camera.split_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, quality = quality) # back to hot standby # Close the FFmpeg process time.sleep(0.5) rec_process.stdin.close() @@ -7646,7 +7684,10 @@ def startcamera(camera): camera.drc_strength = 'off' # disables extra tone-mapping that shifts hues time.sleep(1) if cammode == 'film': - camera.start_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, quality = quality) # back to hot standby + if bitrate > 1000: + camera.start_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) # back to hot standby + else: + camera.start_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, quality = quality) # back to hot standby return camera def startcamera_preview(camera): @@ -7657,7 +7698,10 @@ def startcamera_preview(camera): camera.start_preview() except: print('no preview') - camera.start_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, quality = quality) # back to hot standby + if bitrate > 1000: + camera.start_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, bitrate = bitrate) # back to hot standby + else: + camera.start_recording('/dev/null', format='h264', level=profilelevel, intra_period=5, quality = quality) # back to hot standby return camera def stopcamera_preview(camera):