fix edgetts exception

This commit is contained in:
lipku 2024-09-07 13:44:59 +08:00
parent 995428b426
commit 275af1ed9e
3 changed files with 11 additions and 4 deletions

2
app.py
View File

@ -169,7 +169,7 @@ async def record(request):
sessionid = params.get('sessionid',0) sessionid = params.get('sessionid',0)
if params['type']=='start_record': if params['type']=='start_record':
# nerfreals[sessionid].put_msg_txt(params['text']) # nerfreals[sessionid].put_msg_txt(params['text'])
nerfreals[sessionid].start_recording() nerfreals[sessionid].start_recording("data/record_lasted.mp4")
elif params['type']=='end_record': elif params['type']=='end_record':
nerfreals[sessionid].stop_recording() nerfreals[sessionid].stop_recording()
return web.Response( return web.Response(

View File

@ -72,14 +72,14 @@ class BaseReal:
for key in self.custom_index: for key in self.custom_index:
self.custom_index[key]=0 self.custom_index[key]=0
def start_recording(self): def start_recording(self,path):
"""开始录制视频""" """开始录制视频"""
if self.recording: if self.recording:
return return
self.recording = True self.recording = True
self.recordq_video.queue.clear() self.recordq_video.queue.clear()
self.recordq_audio.queue.clear() self.recordq_audio.queue.clear()
self.container = av.open("data/record_lasted.mp4", mode="w") self.container = av.open(path, mode="w")
process_thread = Thread(target=self.record_frame, args=()) process_thread = Thread(target=self.record_frame, args=())
process_thread.start() process_thread.start()
@ -115,6 +115,10 @@ class BaseReal:
except Exception as e: except Exception as e:
print(e) print(e)
#break #break
for packet in videostream.encode(None):
self.container.mux(packet)
for packet in audiostream.encode(None):
self.container.mux(packet)
self.container.close() self.container.close()
self.recordq_video.queue.clear() self.recordq_video.queue.clear()
self.recordq_audio.queue.clear() self.recordq_audio.queue.clear()

View File

@ -65,7 +65,10 @@ class EdgeTTS(BaseTTS):
t = time.time() t = time.time()
asyncio.new_event_loop().run_until_complete(self.__main(voicename,text)) asyncio.new_event_loop().run_until_complete(self.__main(voicename,text))
print(f'-------edge tts time:{time.time()-t:.4f}s') print(f'-------edge tts time:{time.time()-t:.4f}s')
if self.input_stream.getbuffer().nbytes<=0: #edgetts err
print('edgetts err!!!!!')
return
self.input_stream.seek(0) self.input_stream.seek(0)
stream = self.__create_bytes_stream(self.input_stream) stream = self.__create_bytes_stream(self.input_stream)
streamlen = stream.shape[0] streamlen = stream.shape[0]