Jupyter远程服务器使用本地摄像头、WebRTC实现聊天室、实时视频处理

本文介绍了如何在Jupyter远程服务器上利用WebRTC和ipywebrtc组件,实现实时视频处理和聊天室功能。通过本地摄像头获取视频流,服务器处理后再回传,确保在Python内核中可以访问和处理视频内容。详细步骤包括安装组件、创建流媒体、处理视频帧,以及使用不同类型的流媒体组件。示例代码展示了连续抓取和实时处理视频帧的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jupyter远程使用摄像头、WebRTC聊天室、实时视频处理

前言

使用ipywebrtc组件,获取本地视频流并传输到远程Jupyter服务器,由服务器处理过视频后再回传到本地,最后由ipywidgets.Image组件展示。

效果体验

建议使用Chrome浏览器

效果展示
前往官方示例并启用摄像头,即可体现实际效果。
如果你想更深刻地体验示范代码,可以去Binder打开任意一个.ipynb文件,一步步运行即可。


准备工作

需要先安装ipywebrtc组件,有两种方法,简单的办法是直接通过pip安装(需要jupyter版本在5.3及以上):

pip install ipywebrtc

第二种是通过github安装最新预览版:

git clone https://github.com/maartenbreddels/ipywebrtc
cd ipywebrtc
pip install -e .
jupyter nbextension install --py --symlink --sys-prefix ipywebrtc
jupyter nbextension enable --py --sys-prefix ipywebrtc

如果你使用的是jupyter lab,那么只需要在终端运行以下语句:

jupyter labextension install jupyter-webrtc

使用方法

完成准备工作后,首先需要在Jupyter文件中引用ipywebrtc库,然后创建一个流,可用的流请见下文组件介绍部分,这里以CameraStream为例,使用本地前置摄像头:

from ipywebrtc import CameraStream
camera = CameraStream.facing_user(audio=False)
camera

不出意外的话,Chrome浏览器会弹窗询问是否允许网页使用摄像头,选择允许后,就可在输出区看到摄像头拍到的视频了。

如果Chrome不弹出提示,而是显示Error creating view for media stream: Only secure origins are allowed,则表示浏览器认为当前网站不安全(没有使用https连接),因此禁用了摄像头。最简单的解决方法是在Chrome快捷方式的“目标”一栏最后加上--unsafely-treat-insecure-origin-as-secure="http://host_ip:port"并重启即可(把host_ip:port修改为自己的服务器地址)

但这时候,视频还只是在本地显示,并没有上传到Python内核所在的服务器中(假设你使用的是远程服务器),因此也就没办法在Python上下文中获取视频内容。
所以下一步,我们需要创建一个ImageRecorder来记录流媒体,并以图片的形式发送给服务器上的Python内核:

from ipywebrtc import ImageRecorder
image_recorder = ImageRecorder(stream=camera)
image_recorder

运行这段代码,会显示ImageRecorder组件,点击组件上的相机图标,即可抓拍来自stream的画面。
ImageRecorder
之后,再通过访问image_recorder.image.value并转换成Pillow格式,即可在Python内获取该图片:

import PIL.Image
import io
im = PIL.Image.open(io.BytesIO
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值