From 13b13f599a35cb54702609e2adfe858441c1c704 Mon Sep 17 00:00:00 2001 From: fanpt <320622572@qq.com> Date: Wed, 27 Aug 2025 10:18:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9B=B4=E6=96=B0=E7=8A=B6?= =?UTF-8?q?=E6=80=81=EF=BC=8C=E6=95=B0=E5=AD=97=E4=BA=BA=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=EF=BC=8C0-=E6=9C=AA=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=EF=BC=8C1-=E5=90=AF=E5=8A=A8=E4=B8=AD=EF=BC=8C2-=E5=B7=B2?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=EF=BC=8C3-=E5=90=AF=E5=8A=A8=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 61 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/app.py b/app.py index 6d8afc0..af0cc4a 100644 --- a/app.py +++ b/app.py @@ -88,17 +88,22 @@ def load_db_config(db_path): config_dict = {row["key"]: row["value"] for row in cursor.fetchall()} -def set_enable_status(db_path): - # 连接数据库 - +def set_status(db_path, status_code: int): + """ + 更新数据库中 livetlking_enable_status 的状态值 + 0 未启动(前端写入) + 1 启动成功 + 2 启动中 + 3 启动失败 + """ conn = sqlite3.connect(db_path, check_same_thread=False) try: - # 把 enable_status 对应的 value 字段改为 '1' conn.execute( - "UPDATE live_config SET value = '1' WHERE key = 'livetlking_enable_status';" + "UPDATE live_config SET value = ? WHERE key = 'livetlking_enable_status';", + (str(status_code),) ) conn.commit() - print("livetlking_enable_status 对应的 value 字段改为 '1'") + print(f"livetlking_enable_status 已更新为 {status_code}") finally: conn.close() @@ -383,6 +388,9 @@ if __name__ == '__main__': try: db_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'live_chat.db') + # 启动流程一开始:写入 1(启动中) + set_status(db_path, 1) + load_db_config(db_path) mp.set_start_method('spawn') @@ -406,17 +414,20 @@ if __name__ == '__main__': parser.add_argument('--customvideo_config', type=str, default='', help="custom action json") - parser.add_argument('--tts', type=str, default='gpt-sovits', help="tts service type") #xtts gpt-sovits cosyvoice + parser.add_argument('--tts', type=str, default='gpt-sovits', + help="tts service type") # xtts gpt-sovits cosyvoice parser.add_argument('--REF_FILE', type=str, default="input/gentle_girl.wav") - parser.add_argument('--REF_TEXT', type=str, default="刚进直播间的宝子们,左上角先点个关注,点亮咱们家的粉丝灯牌!我是你们的主播陈婉婉,今天给大家准备了超级重磅的福利") - parser.add_argument('--TTS_SERVER', type=str, default='http://127.0.0.1:9880') # http://localhost:9000 + parser.add_argument('--REF_TEXT', type=str, + default="刚进直播间的宝子们,左上角先点个关注,点亮咱们家的粉丝灯牌!我是你们的主播陈婉婉,今天给大家准备了超级重磅的福利") + parser.add_argument('--TTS_SERVER', type=str, default='http://127.0.0.1:9880') # http://localhost:9000 # parser.add_argument('--CHARACTER', type=str, default='test') # parser.add_argument('--EMOTION', type=str, default='default') parser.add_argument('--model', type=str, default='wav2lip') # musetalk wav2lip ultralight - parser.add_argument('--transport', type=str, default='webrtc') #webrtc rtcpush virtualcam - parser.add_argument('--push_url', type=str, default='http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream') #rtmp://localhost/live/livestream + parser.add_argument('--transport', type=str, default='webrtc') # webrtc rtcpush virtualcam + parser.add_argument('--push_url', type=str, + default='http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream') # rtmp://localhost/live/livestream parser.add_argument('--max_session', type=int, default=1) # multi session count parser.add_argument('--listenport', type=int, default=8010, help="web listen port") @@ -467,7 +478,8 @@ if __name__ == '__main__': # model = load_model(opt) # avatar = load_avatar(opt) if opt.model == 'wav2lip': - from lipreal import LipReal,load_model,load_avatar,warm_up + from lipreal import LipReal, load_model, load_avatar, warm_up + logger.info(opt) model = load_model("./models/wav2lip384.pth") avatar = load_avatar(opt.avatar_id) @@ -510,15 +522,17 @@ if __name__ == '__main__': for route in list(appasync.router.routes()): cors.add(route) - pagename='webrtcapi.html' - if opt.transport=='rtmp': - pagename='echoapi.html' - elif opt.transport=='rtcpush': - pagename='rtcpushapi.html' - logger.info('start http server; http://:'+str(opt.listenport)+'/'+pagename) - logger.info('如果使用webrtc,推荐访问webrtc集成前端: http://:'+str(opt.listenport)+'/dashboard.html') - # 服务开启,将数据库中enable_status 对应的 value 字段改为 '1' - set_enable_status(db_path) + pagename = 'webrtcapi.html' + if opt.transport == 'rtmp': + pagename = 'echoapi.html' + elif opt.transport == 'rtcpush': + pagename = 'rtcpushapi.html' + logger.info('start http server; http://:' + str(opt.listenport) + '/' + pagename) + logger.info( + '如果使用webrtc,推荐访问webrtc集成前端: http://:' + str(opt.listenport) + '/dashboard.html') + + # 服务已开启, 服务状态改为 '2' + set_status(db_path, 2) def run_server(runner): @@ -538,7 +552,8 @@ if __name__ == '__main__': run_server(web.AppRunner(appasync)) except Exception: - import traceback + logger.exception("启动失败") - traceback.print_exc() # 打印完整的错误堆栈 + # 服务启动失败, 服务状态改为 '3' + set_status(db_path, 3) input("发生异常,按回车键退出…") # 等待用户按回车再退出 \ No newline at end of file