Happy to see some interest, since I am still finding little nagging bugs to work out (like getting the correct aspect ration on the channels dvr player.
I use VLC. I too played with OBS (and I love the program), but I find VLC to be simpler and easier to manipulate from the Windows command line.
I use two DirectShow drivers to capture: screen-capture-recorder and virtual-audio-capturer. Both are available at: https://github.com/rdp/screen-capture-recorder-to-video-windows-free.
I'll note that once the video capture driver is installed, the resolution to be scanned and the start locations on the screen are set in the Windows Registery (Computer\HKEY_CURRENT_USER\Software\screen-capture-recorder)
I set VLC to the DirectShow capture mode and select the above two drivers as the devices. That is it for the capture.
Then, set VLC output to stream http (pick an open port) and set transcode profile to Video-MPEG-2+MPGA(TS). I had to set a video filter to vertically flip the output, but you may not have to do that. I don't understand what the problem is well enough to predict it. That is pretty much it for VLC. There may be some tweaking with video filters and preferences, but generally, that should get the stream started.
To skip all the UI stuff, I use the following command line to start the VLC stream:
start vlc.exe --run-time=%time% dshow:// :dshow-vdev=screen-capture-recorder :dshow-adev=virtual-audio-capturer :dshow-aspect-ratio=16:9 :dshow-chroma= :dshow-fps=30 :no-dshow-config :no-dshow-tuner :dshow-tuner-channel=0 :dshow-tuner-frequency=0 :dshow-tuner-country=0 :dshow-tuner-standard=0 :dshow-tuner-input=0 :dshow-video-input=-1 :dshow-video-output=-1 :dshow-audio-input=-1 :dshow-audio-output=-1 :dshow-amtuner-mode=1 :dshow-audio-channels=0 :dshow-audio-samplerate=0 :dshow-audio-bitspersample=0 :live-caching=300 :sout=#transcode{vcodec=mp1v,vb=6000,vfilter=transform,scale=Auto,width=1280,height=720,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ts,dst=:8080/video/} :no-sout-all :sout-keep
The 8080/video/ in that string is the port (8080) + a file path. For some reason, VLC or Channels expected a file path.
The --run-time=%time% is used because I call this command from a batch file where I pass the length of time that I want VLC to stream to the program. In this way, VLC will stop streaming softly. This doesn't matter to Channels, but it is important if you are also streaming to a file.
For channels, I use the docker version of XTEVE to create an M3U file suitable for recording.
I start by pointing pointing XTEVE to a playlist (M3U) that includes a single channel:
#EXTM3U
#EXTINF:0 tvg-id="Private" channel-number="1" tvg-chno="1" tvg-name="Private" group-title="Private"
http://192.168.183.3:8080/video/
The IP address is the IP address of the device running VLC and the port is the same port chosen for VLC.
NOTE: XTEVE IS NO LONGER NEEDED - since Channels DVR will create dummy (1-hour) episodes in a custom channel where EPG data is unavailble. See DVR Pre-Release: Placeholder guide data You can ignore the below XTEVE discussion and follow the above link instruction instead.
I set XTEVE to create a dummy EPG using this imput. (Note: if you don't plan to record with Channels, then the XTEVE server is not necessary. You can simply use the tags available in Channels to dress up the guide and live streaming works. You just can't record using Channels).
For my setup, XTEVE creates two files: 1) an M3U file and 2) an XMLTV file.
I create a custom channel in Channels DVR and point it to these two files using XTEVE's http server.
The custom channel in Channels DVR needs to have a screen format of MPG-TS.
That is pretty much it.
Let me know if you find I left something out and I'll rack my brain.