Video capture and streaming from Webcam

I'm currently trying to write a piece of software that will capture video from a webcam, and stream this over a LAN to other computers on the network.

So far, I've managed to write code that will capture an AVI file, and code that will send this AVI to any other machine that requests it. However, I need to take this a step further and make this a real time process, letting other users on the LAN watch the video live, as it happens.

After a little research, it seems that I must capture the AVI to memory, rather than to a file. The OCX I was using doesn't support this, so I feel like I'm back to square one. Thus the first part of my question, can anyone recommend an OCX that will let me save the file to ram instead?

Now, when it comes to streaming, I know little more than it's usually (or possibly always?) done with the UDP protocol. Again, this shouldn't prove to be a problem, since I'm quite comfortable with the use of the winsock control for TCP and UDP communication.

However, I still need to figure out:

1) How to capture the AVI to RAM
2) How to prepare this stream / retreive the data to be sent via the winsock control

Full points will be given to anyone who can offer me relative code, otherwise I will drop the points available and allocate them to anyone who can point me to another site with references to this subject that prove useful in the final solution.

Thanks in advance,

Stephen Sherlock
Who is Participating?
Un1Connect With a Mentor Commented:
Did you try the AVPhone controls?
Have a look at the Windows Media packes on the MS sites.

Windows Media Encoder is free to download, and works very well.  I have many servers spread across the country streaming 28kbps HTTP programs 24x7x365

If you can't get WME to recognise your Webcam drivers, you may be better off getting a low cost compatible encoder card (many listed on WME site) and going that way.  The quality and reliability will be well worth the difference.

Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

stesherlockAuthor Commented:
I'm afraid neither of those suggestions appear to acheive my desired result.

I need to be able to code this feature into an existing project to provide additional functionality, so the MS WME is out of the question (unless I've overlooked something on the site? Some more accurate links would be appreciated if this is the case).

The second method seems to only capture shots at certain intervals, which is again not really what I'm looking for since the video will ideally be real time, around the 15-25 FPS mark.

Thanks for trying.
stesherlockAuthor Commented:
I may be wrong, but I've just downloaded the DirectX SDK again, and this DirectShow side of things seems to look promising.

Has anyone had any expereience with DirectShow from VB? Any relevant code would be greatly appreciated.
stesherlockAuthor Commented:
Since I believe the way to go with this is now to use DirectShow, I'm going to delete this question and post another with a different "topic" that may promote more interest.

stesherlockAuthor Commented:
Well, since it was the AV Phone control that I ended up using (and forgot about this question in the process :() I'll give the points to UN1 for being the first to suggest it...
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.