if ('MediaSource' in window) {
console.log('MSE is supported');
} else {
console.log('MSE is not supported');
}
2. 創建MediaSource對象
創建一個MediaSource對象並將其附加到<video>元素上:
<video id="videoElement" controls></video>
<script>
var video = document.getElementById('videoElement');
var mediaSource = new MediaSource();
video.src = URL.createObjectURL(mediaSource);
</script>
WebRTC使用多種技術來實現NAT穿透,主要包括ICE(Interactive Connectivity Establishment)、STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)。
ICE(Interactive Connectivity Establishment):
ICE 是一個框架,整合了 STUN 和 TURN 技術,用於確保端點之間的連接。
STUN(Session Traversal Utilities for NAT):
STUN 用於獲取位於 NAT 後面的設備的公共 IP 地址,實現 UDP 打洞,以便建立直接的 P2P 連接。
*** Error loading script: face_manipulation_extras.py Traceback (most recent call last): File “C:\Users\clairechang\stable-diffusion-webui-master\modules\scripts.py”, line 515, in load_scripts script_module = script_loading.load_module(scriptfile.path) File “C:\Users\clairechang\stable-diffusion-webui-master\modules\script_loading.py”, line 13, in load_module module_spec.loader.exec_module(module) File “”, line 883, in exec_module File “”, line 241, in call_with_frames_removed File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\scripts\face_manipulation_extras.py”, line 4, in from face_manipulation.main import process, alignImage File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\face_manipulation\main.py”, line 6, in from face_manipulation.zerodim.network.training import Model File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\face_manipulation\zerodim\network\training.py”, line 18, in from face_manipulation.zerodim.network.modules import BetaVAEGenerator, BetaVAEEncoder File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\face_manipulation\zerodim\network\modules.py”, line 10, in from face_manipulation.zerodim.stylegan2_pytorch.model import ConstantInput, ToRGB, ModulatedConv2d, FusedLeakyReLU File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\face_manipulation\zerodim\stylegan2_pytorch\model.py”, line 11, in from face_manipulation.zerodim.stylegan2_pytorch.op import FusedLeakyReLU, fused_leaky_relu, upfirdn2d, conv2d_gradfix File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\face_manipulation\zerodim\stylegan2_pytorch\op__init_.py”, line 1, in from .fused_act import FusedLeakyReLU, fused_leaky_relu File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-face-manipulation-extras\face_manipulation\zerodim\stylegan2_pytorch\op\fused_act.py”, line 19, in fused = load( File “C:\Users\clairechang\AppData\Local\Programs\Python\Python310\myenv\lib\site-packages\torch\utils\cpp_extension.py”, line 1308, in load return _jit_compile( File “C:\Users\clairechang\AppData\Local\Programs\Python\Python310\myenv\lib\site-packages\torch\utils\cpp_extension.py”, line 1710, in _jit_compile _write_ninja_file_and_build_library( File “C:\Users\clairechang\AppData\Local\Programs\Python\Python310\myenv\lib\site-packages\torch\utils\cpp_extension.py”, line 1823, in _write_ninja_file_and_build_library _run_ninja_build( File “C:\Users\clairechang\AppData\Local\Programs\Python\Python310\myenv\lib\site-packages\torch\utils\cpp_extension.py”, line 2077, in _run_ninja_build vc_env = distutils._msvccompiler._get_vc_env(plat_spec) File “C:\Users\clairechang\AppData\Local\Programs\Python\Python310\myenv\lib\site-packages\setuptools\msvc.py”, line 230, in msvc14_get_vc_env return _msvc14_get_vc_env(plat_spec) File “C:\Users\clairechang\AppData\Local\Programs\Python\Python310\myenv\lib\site-packages\setuptools\msvc.py”, line 187, in _msvc14_get_vc_env raise distutils.errors.DistutilsPlatformError(“Unable to find vcvarsall.bat”) distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/
這個錯誤訊息顯示在運行 face_manipulation_extras.py 腳本時,遇到了一個與編譯 C++ 擴展模組相關的問題,具體來說是缺少 Microsoft Visual C++ 編譯工具。解決這個問題的方法如下:
設定 Visual Studio 的環境變數:安裝完成後,必須確保 vcvarsall.bat 已正確配置到你的系統環境變數中,通常這是自動處理的。你可以嘗試重新啟動你的終端機或電腦來使變更生效。
模型版本不相容
錯誤訊息如下:
*** Error running process: C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py Traceback (most recent call last): File “C:\Users\clairechang\stable-diffusion-webui-master\modules\scripts.py”, line 832, in process script.process(p, *script_args) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 1228, in process self.controlnet_hack(p) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 1213, in controlnet_hack self.controlnet_main_entry(p) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 898, in controlnet_main_entry Script.check_sd_version_compatible(unit) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 827, in check_sd_version_compatible raise Exception(f”ControlNet model {unit.model}({cnet_sd_version}) is not compatible with sd model({sd_version})”) Exception: ControlNet model control_v11p_sd15_inpaint ebff9138 is not compatible with sd model(StableDiffusionVersion.SDXL)
*** Error running process: C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py Traceback (most recent call last): File “C:\Users\clairechang\stable-diffusion-webui-master\modules\scripts.py”, line 832, in process script.process(p, *script_args) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 1228, in process self.controlnet_hack(p) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 1213, in controlnet_hack self.controlnet_main_entry(p) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 919, in controlnet_main_entry model_net, control_model_type = Script.load_control_model(p, unet, unit.model) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 436, in load_control_model control_model = Script.build_control_model(p, unet, model) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet.py”, line 465, in build_control_model control_model = build_model_by_guess(state_dict, unet, model_path) File “C:\Users\clairechang\stable-diffusion-webui-master\extensions\sd-webui-controlnet\scripts\controlnet_model_guess.py”, line 218, in build_model_by_guess p_new = p + unet_state_dict[key].clone().cpu() RuntimeError: The size of tensor a (1024) must match the size of tensor b (768) at non-singleton dimension 1