commit 7124fb1d4b1de714ff5b51cd24d20b2eccb5c4e1
parent 52fa6ace189fcfb635affe173ac98642655a1992
Author: rbckman <rob@tarina.org>
Date: Thu, 30 Jan 2025 00:29:04 +0000
change bitrate
Diffstat:
M | gonzopi.py | | | 98 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------- |
1 file changed, 85 insertions(+), 13 deletions(-)
diff --git a/gonzopi.py b/gonzopi.py
@@ -113,7 +113,7 @@ else:
#MAIN
def main():
- global headphoneslevel, miclevel, gonzopifolder, screen, loadfilmsettings, plughw, channels, filmfolder, scene, showmenu, rendermenu, quality, profilelevel, i2cbuttons, menudone, soundrate, soundformat, process, serverstate, que, port, recording, onlysound, camera_model, fps_selection, fps_selected, fps, db, selected, cammode, newfilmname, camera_recording, abc, showhelp, camera, overlay, overlay2, recordwithports, crossfade, blendmodes, blendselect, updip, updport
+ global headphoneslevel, miclevel, gonzopifolder, screen, loadfilmsettings, plughw, channels, filmfolder, scene, showmenu, rendermenu, quality, profilelevel, i2cbuttons, menudone, soundrate, soundformat, process, serverstate, que, port, recording, onlysound, camera_model, fps_selection, fps_selected, fps, db, selected, cammode, newfilmname, camera_recording, abc, showhelp, camera, overlay, overlay2, recordwithports, crossfade, blendmodes, blendselect, updip, updport, bitrate
# Get path of the current dir, then use it as working directory:
rundir = os.path.dirname(__file__)
if rundir != '':
@@ -154,7 +154,8 @@ def main():
fps = 25
fps_selected=8
fps_selection=[]
- quality = 25
+ quality = 20
+ bitrate = 8888888
profilelevel='4.2'
headphoneslevel = 40
miclevel = 50
@@ -1379,7 +1380,7 @@ def main():
os.system(gonzopifolder + '/alsa-utils-1.1.3/aplay/arecord -D hw:' + 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, quality=quality)
+ camera.start_recording(filmfolder+ '.videos/'+video_origins+'.h264', format='h264', bitrate = bitrate, level=profilelevel, quality=quality)
starttime = time.time()
os.system('ln -sfr '+filmfolder+'.videos/'+video_origins+'.h264 '+foldername+filename+'.h264')
recording = True
@@ -1513,6 +1514,8 @@ def main():
else:
menu=standardmenu
showgonzopictrl=False
+ elif pressed == 'middle' and menu[selected] == 'Q:':
+ bitrate = get_bitrate(numbers_only[1:], bitrate)
#UP
elif pressed == 'up':
@@ -1659,9 +1662,8 @@ def main():
fps=fps_selection[fps_selected]
camera.framerate = fps
elif menu[selected] == 'Q:':
- if scenes == 0:
- if quality < 39:
- quality += 1
+ if quality < 39:
+ quality += 1
elif menu[selected] == 'CAMERA:':
if camselected < len(cameras)-1:
newselected = camselected+1
@@ -1848,9 +1850,8 @@ def main():
fps=fps_selection[fps_selected]
camera.framerate = fps
elif menu[selected] == 'Q:':
- if scenes == 0:
- if quality > 10:
- quality -= 1
+ if quality > 10:
+ quality -= 1
elif menu[selected] == 'CAMERA:':
if camselected > 0:
newselected = camselected-1
@@ -1921,6 +1922,7 @@ def main():
cameras=filmsettings[27]
updip=filmsettings[28]
updport=filmsettings[29]
+ bitrate=filmsettings[30]
logger.info('film settings loaded & applied')
time.sleep(0.2)
except:
@@ -2049,7 +2051,7 @@ def main():
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,cameras,updip,updport]
+ 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,cameras,updip,updport,bitrate]
#print('saving settings')
savesettings(settings_to_save, filmname, filmfolder)
if time.time() - pausetime > savesettingsevery:
@@ -2931,6 +2933,75 @@ def nameyourfilm(filmfolder, filmname, abc, newfilm):
time.sleep(keydelay)
+#-------------set bitrate----------------
+
+def get_bitrate(abc, bitrate):
+ pressed = ''
+ buttonpressed = ''
+ buttontime = time.time()
+ holdbutton = ''
+ abcx = 0
+ helpmessage = 'Up, Down (select bitrate) Right (next). Middle (done), Retake (Cancel)'
+ cursor = '_'
+ blinking = True
+ pausetime = time.time()
+ menuinput=str(bitrate)
+ while True:
+ message = 'New bitrate: ' + menuinput
+ print(term.clear+term.home)
+ print(message+cursor)
+ writemessage(message + cursor)
+ vumetermessage(helpmessage)
+ pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton)
+ if event == ' ':
+ event = '_'
+ if pressed == 'down':
+ pausetime = time.time()
+ if abcx < (len(abc) - 1):
+ abcx = abcx + 1
+ cursor = abc[abcx]
+ elif pressed == 'up':
+ pausetime = time.time()
+ if abcx > 0:
+ abcx = abcx - 1
+ cursor = abc[abcx]
+ elif pressed == 'right':
+ pausetime = time.time()
+ if len(menuinput) < 7:
+ menuinput = menuinput + abc[abcx]
+ cursor = abc[abcx]
+ else:
+ helpmessage = 'Yo, maximum bitrate reached bro!'
+ elif pressed == 'left' or pressed == 'remove':
+ pausetime = time.time()
+ if len(menuinput) > 0:
+ menuinput = menuinput[:-1]
+ cursor = abc[abcx]
+ elif pressed == 'middle' or event == 10:
+ if abc[abcx] != ' ' or menuinput != '':
+ menuinput = menuinput + abc[abcx]
+ if int(menuinput) < 25000001:
+ logger.info("New bitrate " + menuinput)
+ bitrate = int(menuinput)
+ return bitrate
+ break
+ else:
+ helpmessage = 'in the range of bitrate 1-25000000'
+ elif pressed == 'retake':
+ return ''
+ elif event in abc:
+ pausetime = time.time()
+ menuinput = menuinput + event
+ if time.time() - pausetime > 0.5:
+ if blinking == True:
+ cursor = abc[abcx]
+ if blinking == False:
+ cursor = ' '
+ blinking = not blinking
+ pausetime = time.time()
+ time.sleep(keydelay)
+
+
#-------------New udp Stream host----------------
def newudp_ip(abc, network):
@@ -3187,7 +3258,7 @@ def timelapse(beeps,camera,filmname,foldername,filename,between,duration,backlig
else:
run_command('aplay -D plughw:' + str(plughw) + ' '+ gonzopifolder + '/extras/beep.wav')
#camera.start_recording(foldername + 'timelapse/' + filename + '_' + str(n).zfill(3) + '.h264', format='h264', quality=26, bitrate=5000000)
- camera.start_recording(foldername + 'timelapse/' + filename + '_' + str(n).zfill(3) + '.h264', format='h264', bitrate=5555555, level=profilelevel, quality=quality)
+ camera.start_recording(foldername + 'timelapse/' + filename + '_' + str(n).zfill(3) + '.h264', format='h264', bitrate=bitrate, level=profilelevel, quality=quality)
if sound == True:
os.system(gonzopifolder+'/alsa-utils-1.1.3/aplay/arecord -D hw:'+str(plughw)+' -f '+soundformat+' -c '+str(channels)+' -r '+soundrate+' -vv '+foldername+'timelapse/'+filename+'_'+str(n).zfill(3)+'.wav &')
files.append(foldername + 'timelapse/' + filename + '_' + str(n).zfill(3))
@@ -5290,10 +5361,11 @@ def startstream(camera, stream, plughw, channels,network, updip, updport):
#stream_cmd = 'ffmpeg -f h264 -r 25 -i - -itsoffset 5.5 -fflags nobuffer -f alsa -ac '+str(channels)+' -i hw:'+str(plughw)+' -ar '+soundrate+' -acodec mp2 -b:a 128k -ar '+soundrate+' -vcodec copy -map 0:0 -map 1:0 -g 0 -f mpegts udp://10.42.0.169:5002'
#numbers_only = ' ','1','2','3','4','5','6','7','8','9','0'
#newhost, hostport = newudp_ip(numbers_only, network)
- stream_cmd = 'ffmpeg -f h264 -r 24.989 -i - -itsoffset 5.5 -fflags nobuffer -f alsa -ac '+str(channels)+' -i hw:'+str(plughw)+' -ar '+soundrate+' -acodec mp2 -b:a 128k -ar '+soundrate+' -vcodec copy -f mpegts udp://'+updip+':'+updport
+ #stream_cmd = 'ffmpeg -f h264 -r 24.989 -i - -itsoffset 5.5 -fflags nobuffer -f alsa -ac '+str(channels)+' -i hw:'+str(plughw)+' -ar '+soundrate+' -acodec mp2 -b:a 128k -ar '+soundrate+' -vcodec copy -f mpegts udp://'+updip+':'+updport
+ stream_cmd = 'ffmpeg -f h264 -r 24.989 -i - -vcodec copy -f mpegts udp://'+updip+':'+updport
try:
stream = subprocess.Popen(stream_cmd, shell=True, stdin=subprocess.PIPE)
- camera.start_recording(stream.stdin, splitter_port=2, format='h264', bitrate = 5555555, quality=quality)
+ camera.start_recording(stream.stdin, splitter_port=2, format='h264', bitrate = bitrate, quality=quality)
except:
stream = ''
#now = time.strftime("%Y-%m-%d-%H:%M:%S")