目录
[一、先确认:1985 端口有没有在监听](#一、先确认:1985 端口有没有在监听)
[报错:SyntaxError: '(' was never closed](#报错:SyntaxError: '(' was never closed)
版本特点:

-
日常开发 / 测试 / 本地实时 Demo → Wav2Lip
-
高质量数字人 / 渲染视频 → ErNeRF
-
虚拟主播 / 二次元 / 带表情互动 → MuseTalk
musetalk方案
https://www.bilibili.com/video/BV1gm421N7vQ/?vd_source=d4dc8f82f62c00f6ff1db7a1047e538f
一、先确认:1985 端口有没有在监听
在运行 SRS 的机器上执行:
Windows:
netstat -ano | findstr 1985
Linux:
ss -lntp | grep 1985
启动服务:
http://127.0.0.1:8010/webrtcapi.html
报错:SyntaxError: '(' was never closed
解决:
self.__video 结尾应该加逗号。
python
def _start(self, track: PlayerStreamTrack) -> None:
self.__started.add(track)
if self.__thread is None:
self.__log_debug("Starting worker thread")
self.__thread_quit = threading.Event()
self.__thread = threading.Thread(
name="media-player",
target=player_worker_thread,
args=(
self.__thread_quit,
asyncio.get_event_loop(),
self.__container,
self.__audio,
self.__video
),
)
self.__thread.start()
def _stop(self, track: PlayerStreamTrack) -> None:
self.__started.discard(track)
if not self.__started and self.__thread is not None:
self.__log_debug("Stopping worker thread")
self.__thread_quit.set()
self.__thread.join()
self.__thread = None
if not self.__started and self.__container is not None:
#self.__container.close()
self.__container = None
python
def _start(self, track: PlayerStreamTrack) -> None:
self.__started.add(track)
if self.__thread is None:
self.__log_debug("Starting worker thread")
self.__thread_quit = threading.Event()
self.__thread = threading.Thread(
name="media-player",
target=player_worker_thread,
args=(
self.__thread_quit,
asyncio.get_event_loop(),
self.__container,
self.__audio,
self.__video,
),
)
self.__thread.start()
def _stop(self, track: PlayerStreamTrack) -> None:
self.__started.discard(track)
if not self.__started and self.__thread is not None:
self.__log_debug("Stopping worker thread")
self.__thread_quit.set()
self.__thread.join()
self.__thread = None
if not self.__started and self.__container is not None:
#self.__container.close()
self.__container = None