rtsp --- rtsp 函式庫

OpenMV Cam 上的 rtsp 模組可讓你將影片從 OpenMV Cam 串流到任何相容的 RTSP 用戶端(例如 VLC)。

範例:

import network
import rtsp
import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("your-ssid", "your-password")
while not wlan.isconnected():
    time.sleep_ms(100)

server = rtsp.rtsp_server(wlan)

# Called each time the server needs a new frame to send.
def image_callback(pathname, session):
    return csi0.snapshot()

# Does not return; streams to any RTSP client that connects.
server.stream(image_callback, quality=70)

將用戶端連接到 rtsp://<camera-ip>:554/ 即可觀看串流。

class rtsp_server -- rtsp_server 類別

rtsp_server 類別會在你的 OpenMV Cam 上建立一個單一連線的 RTSP 網頁伺服器。

class rtsp.rtsp_server(network_if: Any, port: int = 554)

建立一個繫結至 network_if 的 RTSP 伺服器。

network_if 是由 network.LAN()network.WLAN() 或類似方法建立的網路模組介面。

port 是要監聽的 TCP 連接埠。預設的 RTSP 連接埠為 554。

register_setup_cb(cb: Callable[[str, int], None]) None

繫結一個回呼函式 cb,當用戶端建立 RTSP 連線時被呼叫。

該回呼函式會收到 pathname(所要求的串流資源路徑,預設為 "/")與 session(一個隨機的工作階段 id)。

register_play_cb(cb: Callable[[str, int], None]) None

繫結一個回呼函式 cb,當用戶端開始串流時被呼叫。

該回呼函式會收到 pathnamesession,如 register_setup_cb() 中所述。

register_pause_cb(cb: Callable[[str, int], None]) None

繫結一個回呼函式 cb,當用戶端暫停串流時被呼叫。

注意:VLC 的暫停按鈕並不會實際通知伺服器。

該回呼函式會收到 pathnamesession,如 register_setup_cb() 中所述。

register_teardown_cb(cb: Callable[[str, int], None]) None

繫結一個回呼函式 cb,當用戶端拆除 RTSP 連線時被呼叫。

該回呼函式會收到 pathnamesession,如 register_setup_cb() 中所述。

stream(image_callback: Callable[[str, int], image.Image], quality: int = 90) None

開始執行 rtsp_server 的邏輯,且不會回傳。

image_callback 會被呼叫以產生每一個影格,並且必須回傳一個 image.Image 物件。它會收到 pathnamesession,如 rtsp_server.register_setup_cb() 中所述。

quality 是串流時所使用的 JPEG 壓縮品質。