Beaglebone as a USB device?

Can I somehow program my beaglebone to pretend to a computer that it is a webcam when plugged into the USB?
I wanted to connect a USB hub and several webcams to the USB A socket and have the output going through the USB B socket to a computer so that I can have lots of webcams that I can switch between and maybe even mount on servos so that I can connect to my beaglebone from somewhere in the world and view these webcams and move them around.

It may be better to have the beaglebone being the server rather than having it pumping out images to another computer to be the server but I thought that this would be simpler as a proof of concept.

Any thoughts on how this would be possible?

Much appreciated, Dan.

The GSoC project a couple years ago that sniffed protocols might be of use.

It's in the default angstrom image:

root@beagleboneA3-0428:~# zcat /proc/config.gz | grep G_WEBCAM
CONFIG_USB_G_WEBCAM=m

It has been a few years since I tried to use it, so no idea if it works.

I take it that this makes the beaglebone show up as a USB device. So how can I switch between cameras on that device and perhaps even audio from multiple sources?

Thanks, Dan