“Fake” DirectShow video capture device

2019-01-18 14:55发布

问题:

This is tangential to the last few questions I've asked.

I need to get video from an IP webcam (SNC-RZ25N) to Flash Media Server. I'd rather not have to use Windows, but if it makes things easier, I will. (Flash Media Live Encoder is a Windows only program.)

I've considered many different routes from point A to point B, but it seems like the easiest might be to just use Flash Media Live Encoder to publish to Flash Media Server. Then the only gap I have to bridge is getting a video source readable by Flash Media Live Encoder.

Of course, my source is on the network and FMLE looks for a "Microsoft DirectShow compatible video capture device". I have found a not-free SDK ( http://www.e2esoft.cn/vcam/vcamsdk.asp ) that should allow me to spoof such a device and hopefully send the camera stream to FMS.

Does anyone know of a different program or SDK I should be using? Am I making things more complicated than they need to be?

回答1:

It's really not that hard to turn a DirectShow source filter into a capture device. You need to register the filter in the right category, and implement IKsProperty to report the right category on the output pin.

Take a look at Vivek's capture source filter example at http://tmhare.mvps.org/downloads.htm

G



回答2:

Roman's "IP Video source" directshow relay may do the job: http://alax.info/blog/1223

Also if you want to write you own, you could base off https://github.com/rdp/screen-capture-recorder-to-video-windows-free it overcomes one bug vivek's has with flash player: http://social.msdn.microsoft.com/Forums/en/windowsdirectshowdevelopment/thread/e02d7ac9-5dfe-4f9d-8ce5-4bb73badb6ed

So basically you need to implement IAMStreamConfig, and IKsProperty set in the pin, pass IKsProperty queries down to the pin, and specify PIN_CATEGORY_CAPTURE I guess, maybe some of that you don't need...



回答3:

Use the "vivek directshow capture filter". It is what you basically need. Of course this is a very basic sample code. In order your code to work with Flash Player, you need to implement all neccessary methods like SetFormat/SetMediaType and since DirectShow is rather non friendly interface, you'll spend some time on it.



回答4:

You may also want to look at Wowza Media Server, as it is much friendlier with input devices (supports RTP/RTSP/MPEG-TS H.264/AAC ingest). http://www.wowzamedia.com