Cowboy said:
You can listen to ports and grab the bits, but that is the only way to catch
streaming video I know of. There are free tools that allow you to do this,
so programming is not the only option.
Actually, last I looked at this, YouTube wasn't really using streaming
video. They have a Flash-based player that downloads the entire video
file, starting playback once enough of the file has been buffered. The
Flash video file remains in your cache after it's been downloaded, and
you can use various tools to extract the video from the Flash .flv format.
In C#, downloading would be as simple as parsing the links from the
YouTube page for the video to find the Flash object and the parameters
for that object, and then downloading the referenced .flv file. Of
course, what to do with that file after the fact is a separate question,
but the downloading itself should be relatively straightforward.
Pete