Setting up a webcam platform

I want to set up a low-level low-quality webcam platform. The chat is done using nodejs, webcam streaming is done using Wowza. Now I have several questions.

  • Suppose I have 100 people publish a stream and about 10 - 20 people subscribe to that stream. How many servers do I need and what kind of specs?

  • Can I use the settings of the default videochat example of wowza? So just copy the Application.xml and change a few values and it is done?

  • On client side what values can best be used for publishing the webcam. Best quality value and keyframe interval etc.

  • Is it difficult to scale to multiple wowza servers if it is necessary?

  • What is the best way to make screenshots every 10 seconds

You have to know the bitrate of the streams, then do the math to determine how many streams out that is, and multiply by bitrate. The limiting factor is usually bandwidth. A 1gbs nic delivers about 800mbs of throughput. Wowza can saturate 4 - 5gbs nic, if the server is up to spec: late model quad or dual quad cpu, 4 - 8g ram, 64bit OS and 64bit Java JDK.

The VideoChat example is super-simple to show the very basics of chat, and is intended as starting place or reference for developers. Here are some options for pre-built video chats that work with Wowza

For client-side camera settings refer to the Actionscript 3 Camera API, and the Wowza VideoChat example.

It is easy to scale for simple live and vod delivery, but it is not simple to scale chat. You want all the users in a group connected to the same server, so load balancing has to be customized. You might use the Wowza Dynamic Load Balancer to get the least loaded server for the initial connection, but will have to invent something else to ensure each new user in a group connects to that, which shouldn’t be too hard if you have Flash or server-side Java skills, where both would be ideal.

You can take snapshots of a single stream:

https://www.wowza.com/docs/how-to-take-a-single-frame-snapshot-of-a-live-stream-for-thumbnail-creation-modulecreatesnapshot

Richard