rtsp
— rtsp library¶
The rtsp
module on the OpenMV Cam allows you to stream video from your OpenMV Cam to any
compatible RTSP client (like VLC).
How to use the Library¶
Please checkout the example scripts in OpenMV IDE under Web Servers
.
The rtsp_server
is very easy to use. After being created you just need to call the rtsp_server.stream()
method with a call back function to generate image objects. For example:
network_if = network.WLAN(network.STA_IF)
network_if.active(True)
network_if.connect('your-ssid', 'your-password')
while not network_if.isconnected():
print("Trying to connect. Note this may take a while...")
time.sleep_ms(1000)
server = rtsp.rtsp_server(network_if)
server.stream(lambda pathname, session: sensor.snapshot())
Note that not all RTSP clients can decode all types of JPEG images streamed. For best results please
use the OV2640/OV5640 camera modules sensor.JPEG
mode for streaming RTSP JPEG video.
class rtsp_server - rtsp_server class¶
The rtsp_server
class creates a single connection RTSP web server on your OpenMV Cam.
Constructors¶
- class rtsp.rtsp_server(network_if, port=554)¶
Creates a WiFi
rtsp
server.network_if
is the network module interface created fromnetwork.LAN()
,network.WLAN()
, or etc.port
is the port number to use. The default RTSP port is 554.Methods¶
- register_setup_cb(cb)¶
Bind a call back (
cb
) to be executed when a client sets up a RTSP connection with thertsp_server
.Registering a call back is not required for the
rtsp_server
to work.The call back should accept two arguments:
pathname
is the name of the stream resource the client wants. You can ignore this if it’s not needed. Otherwise, you can use it to determine what image object to return. By default thepathname
will be “/”.session
is random number that will change when a new connection is established. You can usesession
with a dictionary to differentiate different accesses to the samepathname
.
- register_play_cb(cb)¶
Bind a call back (
cb
) to be executed when a client wants to start streaming.Registering a call back is not required for the
rtsp_server
to work.The call back should accept two arguments:
pathname
is the name of the stream resource the client wants. You can ignore this if it’s not needed. Otherwise, you can use it to determine what image object to return. By default thepathname
will be “/”.session
is random number that will change when a new connection is established. You can usesession
with a dictionary to differentiate different accesses to the samepathname
.
- register_pause_cb(cb)¶
Bind a call back (
cb
) to be executed when a client wants to pause streaming.Registering a call back is not required for the
rtsp_server
to work.NOTE: When you click the pause button on VLC in does not tell the server to pause.
The call back should accept two arguments:
pathname
is the name of the stream resource the client wants. You can ignore this if it’s not needed. Otherwise, you can use it to determine what image object to return. By default thepathname
will be “/”.session
is random number that will change when a new connection is established. You can usesession
with a dictionary to differentiate different accesses to the samepathname
.
- register_teardown_cb(cb)¶
Bind a call back (
cb
) to be executed when a client wants tear down a RTSP connection with thertsp_server
.Registering a call back is not required for the
rtsp_server
to work.The call back should accept two arguments:
pathname
is the name of the stream resource the client wants. You can ignore this if it’s not needed. Otherwise, you can use it to determine what image object to return. By default thepathname
will be “/”.session
is random number that will change when a new connection is established. You can usesession
with a dictionary to differentiate different accesses to the samepathname
.
- stream(cb, quality=90)¶
Starts running the
rtsp_server
logic and does not return. Make sure to setup everything you want to first before calling this method. Once called thertsp_server
will start accepting connections and streaming video data.cb
should be a call back that returns anImage
object which the RTSP library will jpeg compress and stream to the remote client. You are free to modify asensor.snapshot()
image as much as you like before returning the image object to be sent.quality
is the JPEG compression quality to use while streaming.The call back should accept two arguments:
pathname
is the name of the stream resource the client wants. You can ignore this if it’s not needed. Otherwise, you can use it to determine what image object to return. By default thepathname
will be “/”.session
is random number that will change when a new connection is established. You can usesession
with a dictionary to differentiate different accesses to the samepathname
.