目录
[SFU 大概率"不需要"改 HTTPS](#SFU 大概率“不需要”改 HTTPS)
可以播放:
bash
MetahumancharacterHeiXi.exe -RenderOffscreen -PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888 -AllowUntrustedCertificates
PixelStreamingInfrastructure https
|-------------------------|---------|------|
| SignallingWebServer | 前端网页服务器 | ✅ 必改 |
|----------------|------------------|------|
| Signalling | WebRTC 信令服务器(WS) | ✅ 必改 |
|---------|-------------|-------|
| SFU | WebRTC 媒体转发 | ⚠ 可能要 |
|--------------|------------|------|
| Frontend | 前端 JS 连接地址 | ✅ 必改 |
修改前:
python
const config = require('./config');
const WebSocket = require('ws');
const mediasoup = require('mediasoup');
const mediasoupSdp = require('@epicgames-ps/mediasoup-sdp-bridge');
const minimist = require('minimist');
SFU 大概率"不需要"改 HTTPS
你真正要改的是 SignallingWebServer + Signalling
浏览器 (HTTPS)
↓
SignallingWebServer(网页 + JS)
↓
Signalling(WSS 信令)
↓
SFU(WebRTC 媒体传输,走 DTLS + SRTP)
批量替换脚本:
python
import os
# 项目根目录(改成你的)
ROOT_DIR = r"D:\YourProject"
# 要忽略的目录
IGNORE_DIRS = {
".git",
"node_modules",
".idea",
"Docs",
"Extras"
}
# 只处理这些类型的文件
TARGET_EXT = {
".js", ".ts", ".json", ".html", ".mjs", ".cjs"
}
def should_skip(path):
parts = set(path.split(os.sep))
return not parts.isdisjoint(IGNORE_DIRS)
def process_file(filepath):
with open(filepath, "r", encoding="utf-8", errors="ignore") as f:
content = f.read()
new_content = content.replace("ws://", "wss://")
new_content = new_content.replace("http://", "https://")
if new_content != content:
with open(filepath, "w", encoding="utf-8") as f:
f.write(new_content)
print(f"Updated: {filepath}")
for root, dirs, files in os.walk(ROOT_DIR):
if should_skip(root):
continue
for file in files:
if any(file.endswith(ext) for ext in TARGET_EXT):
full_path = os.path.join(root, file)
process_file(full_path)
print("Done.")