Python and webcam capture delay?
Rhodri James
rhodri at wildebst.demon.co.uk
Mon Jul 6 11:22:43 EDT 2009
On Mon, 06 Jul 2009 07:10:38 +0100, jack catcher (nick) <nomail at thank.you>
wrote:
> Tim Roberts kirjoitti:
>> "jack catcher (nick)" <nomail at thank.you> wrote:
>>> I'm thinking of using Python for capturing and showing live webcam
>>> stream simultaneously between two computers via local area network.
>>> Operating system is Windows. I'm going to begin with VideoCapture
>>> extension, no ideas about other implementation yet. Do you have any
>>> suggestions on how short delay I should hope to achieve in showing the
>>> video? This would be part of a psychological experiment, so I would
>>> need to deliver the video stream with a reasonable delay (say, below
>>> 100ms).
>> You need to do the math on this. Remember that a full 640x480 RGB
>> stream
>> at 30 frames per second runs 28 megabytes per second. That's more than
>> twice what a 100 megabit network can pump.
>> You can probably use Python to oversee this, but you might want to
>> consider
>> using lower-level code to control the actual hardware. If you are
>> targeting Windows, for example, you could write a DirectShow graph to
>> pump
>> into a renderer that transmits out to a network, then another graph to
>> receive from the network and display it.
>> You can manage the network latency by adding a delays in the local
>> graph.
>
> Thanks Tim, you're correct about the math. What is your main point about
> DirectShow: that it is generally faster and more reliable than doing the
> job high-level, or that one could use coding/decoding in DirectShow to
> speed up the transmission? I think the latter would be a great idea if
> the latency were tolerable. On the other hand, I'd like to keep things
> simple and do all the programming in Python. I've got no experience with
> DirectShow, but I guess the filters need to be programmed in C++ and
> called from Python?
>
> Another option might be to use resolution 320x240 at 15fps.
Does the webcam just deliver frames, or are you getting frames out of
a decoder layer? If it's the latter, you want to distribute the encoded
video, which should be much lower bandwidth. Exactly how you do that
depends a bit on what format the webcam claims to deliver.
--
Rhodri James *-* Wildebeest Herder to the Masses
More information about the Python-list
mailing list