VideoReceiverLog : Failed because video sink is not set

Hi,
I am working on Ubuntu 19.04:
I have set up a freelan in order to give control of the BlueROV2 to a distant PC (IP: 9.0.0.13).
I achieve to give control with a Netcat command launched on companion PC (IP: 9.0.0.12):

mkfifo backpipe
nc -ulp 14550 0<backpipe | nc -u 9.0.0.13 14550 1>backpipe

It works.
But, when I do the same for Video stream:

mkfifo campipe
nc -ulp 5600 0<campipe | nc -u 9.0.0.13 5600 1>campipe

I get the following error in QGC on remote PC: “VideoReceiverLog : Failed because video sink is not set”
Any idea on how to fix this ?
Thanks.

Hi,
Answering my own post… It seems to be impossible to send Video stream using Netcat, like I do with MAVLink commands. But you can send the stream using an RTSP server.

To do this:
1 - On companion PC
Install Nginx and launch service (maybe useless cause you can get the stream directly from Pi, anyway, continue :slight_smile: )
Create a file called “vlc.sdp” in “/var/www/html” default folder with content:

c=IN IP4 127.0.0.1
m=video 5600 RTP/AVP 96
a=rtpmap:96 H264/90000

Open VLC software
Broadcast a Network stream (Media > Broadcast > Network) and type location: http://127.0.0.1/vlc.sdp
Click “Broadcast” and “Next” button
Choose destination “RSTP” and click “Add” button
By default port is 8554. Keep it like this.
Type “/stream” to complete the URI and click “Next”
Click on the wrench button and “Codec Video” tab
Check “Keep original video track”
Save and click next
You are now streaming camera.

2 - In QGC client

Go to “General” settings to receive the stream
In Video paragraph, select RTSP source and type :
rstp://9.0.0.12:8554/stream
Go back to main screen
Here you are, you now receive the stream from your BlueROV2.

1 Like

To get low latency, use on companion PC:

gst-launch-1.0 udpsrc port=5600 ! tee name='video' ! queue ! udpsink host=9.0.0.14 port=5600 video. ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! avdec_h264