views:

56

answers:

1

I would like to write a Skype like software which allows P2P video/audio streaming. What language is better suited for that?

There are several requirements:

  1. Software should be easy to install.

  2. It should be easy to program.

  3. I want to have access to video information. For example to make a face expression recognition on the fly.

  4. It should be free.

I am thinking of Python and Java. Which one would be better? Or may be there is a third choice which is better?

ADDED

Flash is an attractive option since users can use their browser in which flash is installed by default and if not, it's easy to install flash. But I do not know if I can have access to video (if I want to do some processing). Moreover, Flash is not free.

+2  A: 

The functionality you're interested in is likely to involve somewhat heavy network traffic (for video streaming) and CPU usage (for facial recognition). Efficiency is therefore going to matter quite a bit in your final product, which implies that you'll want those critical parts to be handled by native code, probably written in C or C++.

On the other hand, you're asking for a language that's easy to program, which is very appropriate while you're experimenting and prototyping. An expressive language that makes your meaning clear in a small amount of code will help you focus on solving the problems before you, rather than getting bogged down in implementation details. Python is a very good choice for this. (As a matter of fact, Python was the development language of several other p2p projects including BitTorrent, P2P-Next, and my own video streaming system.)

Allow me to suggest this approach:

  1. Develop your first version in a high level language like Python.
  2. Use compiled libraries for video frame processing. Several major multimedia libraries have python bindings, including gstreamer and libavcodec.
  3. Once you have a working prototype and are satisfied with your design, consider re-implementing the system in C or C++.
Forest