Would you like to stream from the CSI Camera (Jetson Nano) to your macOS? No problem, it’s super easy! In this tutorial I will show you 2 ways to display the RTP video stream on your macOS. Both options require only a few steps and which one you choose is up to you.
Condition
- Both devices (Jetson Nano & macOS) must be on the same network
- SSH connection from macOS to Jetson Nano is available
- You know the IP or the domain name (.local) of the macOS
- Firewall on macOS is disabled (for simplicity)
- The CSI camera on the Jetson Nano is operational
Use of ffplay
Download ffplay for macOS from the official provider site. Unzip the archive and move binary to target directory.
# move binary to target directory
$ mv ffplay /usr/local/bin/ffplay
# test ffplay version (optional)
$ ffplay -version
Now create an SDP file for ffplay (for example directly on your desktop).
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=NanoStream
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 56.15.102
m=video 1234 RTP/AVP 96
a=rtpmap:96 H264/90000
Note: Note the port specification (m=video 1234 RTP/AVP 96), if this is already occupied on your system, you must change this value and adapt the following steps.
Connect (via SSH) to the Jetson Nano and start the video stream from the camera there.
# start video stream from csi camera
$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), format=NV12, width=1920, height=1080' ! nvvidconv flip-method=2 ! nvv4l2h264enc insert-sps-pps=true ! h264parse ! rtph264pay pt=96 ! udpsink host=(IP or Domain from macOS) port=1234 sync=false -e
If there are no problems, leave this terminal connection and start another terminal on the macOS.
# start ffplay
$ ffplay -protocol_whitelist "file,udp,rtp" -i ~/Desktop/ffplay.sdp
After confirming the command, a window should open after a few seconds and you will see the video stream.
Use of VLC
Download latest VLC player from official VLC website. Now install VLC Player. Optionally you can test whether everything works. Also create an SDP file for the VLC Player.
c=IN IP4 127.0.0.1
m=video 1234 RTP/AVP 96
a=rtpmap:96 H264/90000
Connect (via SSH) to the Jetson Nano and start the video stream from the camera there.
# start video stream from csi camera
$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), format=NV12, width=1920, height=1080' ! nvvidconv flip-method=2 ! nvv4l2h264enc insert-sps-pps=true ! h264parse ! rtph264pay pt=96 ! udpsink host=(IP or Domain from macOS) port=1234 sync=false -e
Note: Depending on your camera position, you can change the value of flip-method=2
(1 to 4).
If there are no problems, leave this terminal connection and double click on the SDP file for the VLC player. Here, too, you should be able to watch the stream after a few seconds.
Notice
If you have already cloned/installed the repository dusty-nv/jetson-inference, you can view the different video streams in the same way on macOS!
# video viewer
$ video-viewer --bitrate=1000000 --output-codec=h264 csi://0 rtp://(IP or Domain from macOS):1234 --headless
# pose estimation
$ posenet --bitrate=1000000 --output-codec=h264 csi://0 rtp://(IP or Domain from macOS):1234 --headless
# image detection
$ imagenet --bitrate=1000000 --output-codec=h264 csi://0 rtp://(IP or Domain from macOS):1234 --headless
# object detection
$ detectnet --bitrate=1000000 --output-codec=h264 csi://0 rtp://(IP or Domain from macOS):1234 --headless
Hint: Don’t forget to re-enable the firewall (on your macOS) after you’r done!