A Jupyter widget that brings WebRTC and MediaStream API to notebooks and JupyterLab for real-time media streaming and recording.
ipywebrtc is a Jupyter widget that brings WebRTC and MediaStream API functionality to Jupyter notebooks and JupyterLab. It allows users to create, stream, and record media directly within the notebook environment, enabling real-time interactive applications like webcam streaming, widget-based visualizations, and peer-to-peer communication.
Data scientists, researchers, and educators using Jupyter notebooks who need to integrate real-time media streaming, recording, or interactive visualizations into their workflows.
It uniquely bridges WebRTC's real-time communication capabilities with Jupyter's interactive Python environment, offering seamless integration for media handling without requiring external web development.
WebRTC for Jupyter notebook/lab
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Directly exposes WebRTC and MediaStream APIs in Jupyter notebooks, enabling interactive media workflows without external tools, as shown in the demos for widget streaming and recording.
Supports creating streams from webcams, files, or any ipywidget, offering flexibility for various inputs, as detailed in the API for CameraStream, VideoStream, and WidgetStream.
Includes VideoRecorder, ImageRecorder, and AudioRecorder for easy capture and postprocessing directly from streams, demonstrated in the ImageRecorder demo.
Simple chat function allows streaming media to other peers, facilitating collaborative sessions within notebooks, though it's basic compared to full WebRTC implementations.
Integrates with ipyvolume to use MediaStreams as dynamic textures, enhancing interactive 3D plots, as shown in the WebRTC and ipyvolume demo.
Development installation requires npm and manual steps like building extensions, which can be cumbersome for users unfamiliar with JavaScript tooling, as noted in the README.
Functionality is confined to Jupyter notebooks and JupyterLab, making it unsuitable for standalone applications or other Python environments beyond this ecosystem.
Offers simplified peer-to-peer chat without advanced signaling, STUN/TURN server support, or scalable group communication, limiting real-world deployment scenarios.
Streaming widget outputs or 3D textures may introduce latency and increased resource consumption, especially in complex notebooks with multiple streams.