Feeding live video from a capture card through FFMPEG

On Windows? That would be great if you have a working method. :pray:

1 Like

I’m not sure this can help you, unless you can figure out how to create an http stream.

My HDHomerun has an actual address I can access via http. For example.

http://192.168.10.12:5004/auto/v6

So in VLC I select…

Media>Convert/Save>

Select the address as the source

Convert to an MPEG TS

Destination file = “path to somefilename.ts”

Press start and it starts transcoding.

Then I can load the zero length file into Retroarch either by the command line or by browsing to it normally.

I did some research and it turns out he hdhomerun is broadcasting an MPEG-TS. stream. If you can manage that this should work for you. For that matter, since VLC can already capture your stream you can probably just do the convert/save and transcode into the MPEG-TS file for Retroarch.

The advantage to getting your stream into the TS format is that you can do a raw dump to the *.ts and it works without trascoding. If Retrarch can load a recorded *.avs then you could try doing a raw dump and name the destination file with the avs extension.

Maybe I wasn’t clear on my end goal here. I want to view the live feed of my video capture card in RetroArch, not simply reading a video file.

Something akin to this (and the method suggested by @anon55749740) : https://www.youtube.com/watch?v=c_kcn3jkn-s

Instead of pushing a stream from another RetroArch instance, I would push it through VLC (with the Stream > Capture Card option through dshow). I can’t get the UDP stream to work properly though.

1 Like

The video file is a zero size file. It actually is the live feed. It just gives you a file to feed to Retroarch. Weird I know. :crazy_face:

All you need is an ip address of the stream. If you can view the stream as a network source in VLC then this will do it. Just use the Capture/Save option in VLC and select the stream address as the source.

Capture/Save in VLC renders the stream as a video file. Perhaps if I save the playlist as a M3U file once the link of the stream is in, I could get it to work like you are suggesting.

1 Like

What format are you saving the file to. I used MPEG-TS and named my file with the *.ts extension. You probably need to transcode it into MPEG-TS along the way. (In the same dialog.)

And to be clear I meant Media>Convert/Save.

Snap11

Snap12

Snap13

Then press start and load the destination file as content in Retroarch.

Obviously, be sure to leave VLC running.

It works, but it still renders the file. It’s a endless file, but if you look up its properties, you’ll see that it’s far from being a light file : I got 25 GB within a couple of minutes (mind you, my video card is feeding me with 1080p60). Unless I got your instructions wrong, doesn’t this method inflict a huge delay as well (since it always reads from the start of the file)?

Using a M3U playlist is useless (you can’t manually chose the FFMPEG core). Typing retroarch http://[my local IP]:8080 somehow works, but strangely, it get stuck on the first frame of the stream.

1 Like

Hmmm, I hadn’t taken a look at that, you are correct. Well shoot! :crazy_face: It’s not really a live feed then is it? Although it may be better than nothing.

I’ll have to explore other options. Maybe with more than one looking at this we’ll come up with a solution.

If I have any success I’ll post back here.

The best way would be if a DirectShow driver was implemented through FFMPEG. There is a feature request that was created back in 2019, but it didn’t get much traction : https://github.com/libretro/RetroArch/issues/8088

While that one solution to your specific issue, I have often thought that some kind of “virtual monitor” core would be life changing. Any application capable of using the full screen could make use of the shader system.

About this issue though. I keep getting some kind of “circular pixel” ffmpeg error and some feature not being compiled in this version. (When trying UDP or RSTP.) There has been an actual ffmpeg_libretro.dll. (I have an old version.) I’m wondering if the support could be added to a custom build of the core.

I am still doing R&D.