你知道Jupyter notebook還可以用來做 “視頻聊天室” 嗎?

作者:Martin Renou

編譯:wLsq

Ipywidgets在Jupyter生態系統中扮演着重要角色,它帶來了用戶和數據之間的互動。小工具組件是多種的Python對象,通常在Jupyter Notebook或JupyterLab中具有可視化表示:按鈕,滑塊,文本輸入,複選框等。

Ipywidgets鏈接: https://github.com/jupyter-widgets/ipywidgets

用戶無需編寫Python代碼就可以使用鼠標操作並設置滑塊完成交互

表示Python小組件的對象是在服務器端(後端)的Python內核(負責執行Jupyter Notebook中的代碼的部分)中工作的。Python對象包含有所有小組件狀態的信息。對於滑塊小部件,Python對象包含最小值,最大值,以及當前值。這個Python對象(在後端,服務器端)可以與窗口小組件的Javascript模型(在前端,客戶端)同步,這個前端模型也包含了有關小組件的相同信息。每次用戶在筆記本中顯示小組件時,它都會創建一個與Javascript模型保持同步的視圖。在上面示例中,您可以看到兩個視圖是同步的。

ipywidgets不僅僅是一個交互式小組件庫,它也是一個功能強大的框架,可以直接創建新的自定義小組件。開發人員可以通過使用widget-cookiecutter項目快速啓動包含代碼結構和封裝的最佳實踐的小組件庫。

widget-cookiecutter鏈接: https://github.com/jupyter-widgets/widget-cookiecutter/

已經有許許多多不同的小組件庫被創建好了,你可以直接使用mybinder在線試用它們,而無需安裝任何東西,下面的一些功能均可以在線操作試用,鏈接如下:

https://mybinder.org/

bqplot:2-D交互式數據

ipyleaflet:交互式地圖

pythreejs:交互式三維場景

ipyvolume:3-D交互式數據可視化和多卷渲染

nglview:三維交互式分子可視化

gmaps:Google地圖上的數據可視化

itk-jupyter-widgets:交互式2-D和3-D數據可視化

從ipywidgets 7.4開始,我們有兩個新的小組件:音頻和視頻,可以在Jupyter Notebook和Jupyterlab中輕鬆進行圖像/音頻處理。

與Image小組件一樣,新的音頻和視頻小組件在後端和前端之間同步二進制數據。你可以使用自己喜歡的庫(OpenCV,scikit-image 等)輕鬆操作此數據,並動態更新窗口小組件值。

在視頻小組件上使用OpenCV進行邊緣檢測

這兩個小組件都是用於創建ipywebrtc庫不錯的構建塊。ipywebrtc由Maarten Breddels創建(Maarten是著名庫vaex和ipyvolume的作者)。它利用WebRTC瀏覽器API的強大功能,允許在Jupyter筆記本內部進行媒體流傳輸

ipywebrtc的API非常簡單:首先,用戶將創建我們稱之爲媒體流的小組件API。媒體流小組件也可以是:

  • 一個WidgetStream小組件,給定任何輸入小組件
  • 一個VideoStream小組件,給定一個視頻小組件作爲輸入
  • 一個ImageStream小組件,給定一個圖像小組件作爲輸入
  • 一個AudioStream小組件,給定一個音頻小部件作爲輸入
  • 一個CameraStream小組件,它爲用戶的網絡攝像頭創建視頻/音頻流

使用媒體流小組件,你可以:

  • 使用VideoRecorder小組件錄製電影
  • 使用ImageRecorder小部件拍攝快照
  • 使用AudioRecorder小部件錄製音頻
  • 使用簡單的聊天功能將其流式傳輸到同級

至於其他小部件庫,只需點擊此鏈接即可立即試用。你將能夠嘗試所有這些工作流程。

https://mybinder.org/v2/gh/maartenbreddels/ipywebrtc/master?filepath=docs/source

假設你想使用計算機上的攝像頭動態地執行圖像處理,並運行人臉識別,邊緣檢測或任何其他奇特的算法。使用ipywebrtc實現起來非常簡單。你需要做的就是創建一個CameraStream小組件的實例,在攝像頭視頻流作爲輸入的情況下創建一個ImageRecorder,並實現處理圖像的回調(例如使用scikit-image)。

使用CameraStream的快照創建ImageRecorder,並使用scikit-image動態處理圖像

ipywebrtc的另一個不錯的功能是能夠從任何小組件創建媒體小組件。這意味着你可以輕鬆地從您喜歡的小組件庫中記錄圖像和視頻,以進行二維或三維數據可視化(此處爲ipyvolume)。

使用ipyvolume小組件作爲輸入創建WidgetStream,並使用VideoRecorder錄製視頻

一旦你使用了庫的這些不錯功能,你就可以下載你創建的視頻/圖像。或者,你可以使用聊天功能直接共享它們。此功能將聊天室名稱和你要共享的流(默認爲CameraStream)作爲輸入,並允許您將Jupyter Notebook轉換爲會議室!

在PyPairs演講期間,使用ipywebrtc創建的聊天室

Github上製作這些圖像的示例: https://github.com/QuantStack/quantstack-talks/tree/master/2018-11-14-PyParis-widgets/notebooks

關於作者

作者名字是Martin Renou,是QuantStack的科學軟件工程師。加入QuantStack之前,在SUPAERO學習。曾在巴黎的Logilab和劍橋的Enthought工作過。作爲QuantStack的開源開發人員,參與了各種項目,從xsimd和xtensor在C ++到ipyleaflet和ipywebrtc在Python和Javascript中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章