Python and webcam capture delay?
jack catcher (nick)
nomail at thank.you
Mon Jul 6 13:41:03 EDT 2009
Rhodri James kirjoitti:
> 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.
Well, getting already encoded video from the webcam sounds almost like a
free lunch (which it probably is not). At least I wouldn't want to get
too long a delay because of the encoding.
I haven't got the webcam(s) yet, and I guess I can basically purchase
any ones I find suitable for getting the job done. Any recommendations?
More information about the Python-list
mailing list