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 Web 服务器。

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 压缩质量。