跳转到主要内容

在这里添加您的描述

项目描述

WhipPyWeb

WhipPyWeb是一个Python工具,允许您使用WebRTC将桌面流式传输到网页浏览器。它设计时考虑了OBS

安装

您可以使用pipx安装WhipPyWeb

pipx install whippyweb
whippyweb run

或使用Docker

docker run -p 8080:8080 whippyweb

特性

  • 从OBS流式传输到(单个)网页浏览器
  • OBS和网页浏览器之间的非常低延迟
  • 您只需要Python服务器来建立连接,音频和视频直接从OBS流式传输到网页浏览器 - 没有任何Python处理的开销(这可能会很慢)。

工作原理

sequenceDiagram
    participant OBS as OBS
    participant WPW as WhipPyWeb
    participant BRS as Web Browser

    BRS->>WPW: Create websocket connection
    activate BRS
    activate WPW
    Note over OBS,BRS: Stream start
    OBS->>WPW: WebRTC offer
    activate WPW
    WPW->>BRS: WebRTC offer (over websocket)
    BRS->>BRS: Create WebRTC Answer
    BRS->>WPW: WebRTC answer (over websocket)
    WPW->>OBS: WebRTC answer
    deactivate WPW

    OBS->>BRS: Video and audio stream
    Note over OBS,BRS: Stream stop

    OBS->>WPW: WebRTC close
    activate WPW
    WPW->>BRS: WebRTC close (over websocket)
    BRS->>BRS: Close WebRTC connection
    deactivate BRS
    WPW->>OBS: OK
    deactivate WPW
    deactivate WPW

我是如何到这里的

我想改善我举办的活动体验。我想将我的桌面流式传输到网页浏览器,以便与同在房间的观众(带有Chromecast的投影仪)和远程观众(Google Meet共享屏幕)共享屏幕。

尝试了RTMP和HLS,但延迟太大 - 想象一下谈论3-12秒后才出现在屏幕上的幻灯片...

最终在这篇文章中发现了这个Medium文章,它将我引向了Broadcast-box。Broadcast-box反过来,将我引向了OBS2Browser

因为我想要做一些改动,而且我从未写过一行GO代码,所以我决定编写一个OBS2Browser的Python版本。WhipPyWeb就是结果。

现在我可以从OBS流式传输到网页浏览器,延迟非常低。

flowchart LR
    gl(Guest Laptop) --HDMI-to-USB-C--> ml(My Laptop with OBS)
    ml --With WhipPyWeb--> br(Web Browser)
    br --WiFi--> cc(Chromecast) --HDMI--> pr(Projector)
    br --> gm(Google Meet)

使用方法

一旦whippyweb启动,您就可以在http://localhost:8080/player访问播放器。在那里您将看到如何配置您的OBS实例的说明。

贡献

欢迎贡献!请打开一个问题或提交一个拉取请求。

许可证

本项目采用MIT许可证 - 请参阅LICENSE文件以获取详细信息。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

whippyweb-1.0.0.tar.gz (296.7 kB 查看哈希值)

上传时间

构建分发

whippyweb-1.0.0-py3-none-any.whl (296.4 kB 查看哈希值)

上传时间 Python 3

由以下提供支持