Problem
Connecting to a HTTP stream fails when that stream exposes the desktop capture device.
Devices
Two different machines have been tried but both are Windows 10 build 19041.746 and VLC 3.0.12.
Step-by-Step
SENDER VLC INSTANCE
- Open VLC
- Media > Open Capture Device
- Capture mode: Desktop
- Down arrow to right of 'Play' button > Stream
- Next
- New destination: HTTP > Add
- Port: 8585
- Next
- Profile: Video - H.264 + MP3 (MP4)
- Next
- Stream
RECEIVER VLC INSTANCE
- Open VLC
- Media > Open Network Stream
- Please enter a network URL: : http://localhost:8585
- Play
Debugging steps
All tests have been done with fresh instances of VLC and making sure that port 8585 is not in use through netstat before starting the stream. So far I have:
- Looked in Tools > Messages but there are no obvious errors to me
- Used netstat to confirm the port is activating/deactivating with the stream being started and VLC subsequently closed
- Successfully streamed a video file (mkv) with same transcode settings to prove it is not a firewall issue
- Ticked "Display locally" on the Stream Output > Destination Setup wizard screen so I can see the desktop is being captured
- Successfully streamed desktop to a file and played it back
- Tried to stream the recorded desktop file to HTTP but VLC failed connect. The sender VLC instance used ":sout=#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:duplicate{dst=http{mux=ffmpeg{mux=flv},dst=:8585/},dst=display} :no-sout-all :sout-keep" and the receiver VLC instance gave basically the same Message output as above, no errors.
In these unprecedented times... I need a screen sharing solution that is entirely within the local network so does not rely on any Internet service. This will be used to allow a training provider to share their screen to trainees so that proper social distancing can be maintained. Audio is not required as participants would be in a conference call on our telephony solution. Ultimately, I hope to make use of either HTML5's video element to embed the stream or some other mechanism so viewers can use their browser.