WidgetStream¶
A WidgetStream creates a MediaStream out of any widget.
[1]:
from ipywebrtc import WidgetStream, VideoStream
Example with pythreejs: streaming of a webgl canvas¶
[2]:
from pythreejs import Mesh, SphereGeometry, MeshLambertMaterial, PerspectiveCamera, DirectionalLight, Scene, AmbientLight, Renderer, OrbitControls
ball = Mesh(
geometry=SphereGeometry(radius=1),
material=MeshLambertMaterial(color='red'),
position=[2, 1, 0]
)
c = PerspectiveCamera(
position=[0, 5, 5], up=[0, 1, 0],
children=[DirectionalLight(color='white', position=[3, 5, 1], intensity=0.5)]
)
scene = Scene(children=[ball, c, AmbientLight(color='#777777')])
renderer = Renderer(
camera=c,
scene=scene,
controls=[OrbitControls(controlling=c)]
)
renderer
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-68a83e58efcb> in <module>
----> 1 from pythreejs import Mesh, SphereGeometry, MeshLambertMaterial, PerspectiveCamera, DirectionalLight, Scene, AmbientLight, Renderer, OrbitControls
2 ball = Mesh(
3 geometry=SphereGeometry(radius=1),
4 material=MeshLambertMaterial(color='red'),
5 position=[2, 1, 0]
ModuleNotFoundError: No module named 'pythreejs'
[3]:
# the webgl_stream will be updated after the scene has changed (so drag the above ball around if nothing happens)
webgl_stream = WidgetStream(widget=renderer)
webgl_stream
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-cefdf25c17ba> in <module>
1 # the webgl_stream will be updated after the scene has changed (so drag the above ball around if nothing happens)
----> 2 webgl_stream = WidgetStream(widget=renderer)
3 webgl_stream
NameError: name 'renderer' is not defined
[4]:
# You can limit the fps
webgl_stream2 = WidgetStream(widget=renderer, max_fps=5)
webgl_stream2
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-ddf1e6b2bf7d> in <module>
1 # You can limit the fps
----> 2 webgl_stream2 = WidgetStream(widget=renderer, max_fps=5)
3 webgl_stream2
NameError: name 'renderer' is not defined
Example with ipywidgets: streaming of a slider widget¶
[5]:
from ipywidgets import FloatSlider
slider = FloatSlider(
value=7.5,
step=0.1,
description='Test:',
disabled=False,
continuous_update=False,
orientation='horizontal',
readout=True,
readout_format='.1f',
)
slider
[6]:
widget_stream = WidgetStream(widget=slider, max_fps=1)
widget_stream
[7]:
# Close the stream
widget_stream.close()
Example with ipyleaflet: streaming of a map widget¶
[8]:
from ipyleaflet import Map
m = Map(center=(46, 14), zoom=5)
m
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-ff582678bacf> in <module>
----> 1 from ipyleaflet import Map
2 m = Map(center=(46, 14), zoom=5)
3 m
ModuleNotFoundError: No module named 'ipyleaflet'
[9]:
map_stream = WidgetStream(widget=m, max_fps=1)
map_stream
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-fe4837077166> in <module>
----> 1 map_stream = WidgetStream(widget=m, max_fps=1)
2 map_stream
NameError: name 'm' is not defined
[10]:
map_stream.close()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-40e8f44f56da> in <module>
----> 1 map_stream.close()
NameError: name 'map_stream' is not defined
[ ]: