2012-10-23 11 views
5

現在、私は最後の1年間のプロジェクトを計画していますが、音声によるIPおよびテキストベースのチャットをサポートするアプリケーションを作成したいと考えていました(「次のスカイプ」ではありません)。私は本当に簡単に軽量な方法を使用してvoIPの部分を完了させる必要があり、それは機能の拡張された量を必要としません、少なくともで始めることはありません。P2Pを使用したC++とvoIP

私が望む機能の1つは、サーバーには行かないということですが、アプリケーションのリリース後にサーバーを維持したくないためです。ですから、あなたのIPを誰かに与えることができれば、それを使うことが望ましいでしょう。

GUIにはQtフレームワークを使用する予定ですが、変更することもできますし、言語も変更することができます(C++)ので、何も書かれていません。ソフトウェアはウィンドウで実行されます。

私はH.323、sipなどのオープンソースを見てきましたが、それは難しいようですが、私が必要とすることを彼らが行うかどうかはわかりません。

私はそれを調べなければならないオープンソースのライブラリは、私が欲しいものの一部ですか?私が逃したどんな情報源?私は完全にvoIPの世界に新しいし、正しい方向にプッシュを使用することができます。繰り返しますが、現在私が計画段階に入っているので、簡単な方法でこれを行う言語があるとします。 私は助けていただきありがとうございます。

+0

[この質問](http://stackoverflow.com/questions/270524/does-anyone-know-of-a-good-simple-c-based-sip-stack-that-i-could-use)私はVoIPのための最も一般的なプロトコルであると信じているSIPを扱います。私は、P2Pとサーバーの関心事は何もない。 P2Pはクライアント/サーバーの特殊なケースです。 – paddy

+0

どのような品質レベルですか? (まともなVoIPには、[QoSタグ付け](http://www.cse.wustl.edu/~jain/refs/ipqs_ref.htm)が必要です)。 NATデバイス間でマシンをサポートしますか? (その場合は、[TURN](http://tools.ietf.org/html/rfc5766)と[STUN](http://tools.ietf.org/html/rfc5389)を参照してください。スターター)。あなたはおそらく[XMPP](http://xmpp.org/)を見たいかもしれません。ああ、ほとんど忘れてしまった:TURN/STUNをサポートするようにNATルーターを設定するには、通常[UPnP](http://upnp.org/specs/gw/igd1/)を使用します。 –

+0

私は人々の言葉を聞くのに十分な品質があれば、最高のものを必要としません。基本的には仕事だけです。 NAT tbhも考慮していません...もう少し詳しく読む必要があります:) –

答えて

1

私は数ヶ月前に私の会社に似た何かを実装しました。

教訓:

1. you can't just pass IPs around and expect the users to like that over skype. 
    Solution: 
     a. You will need your own server with the necessary ports forwarded. You will have to use some sort of firewall hole punching algorithm(take a look at UDP hole punching). 

2. Using existing VoIP library is always better. Downside? You can't write proprietary code using opensource library. Hence you will need to learn H.323 and RTCP/RTP protocol. 

3. You will need to write echo reduction algorithms for voice. 

4. COMPRESS your audio data before sending it to another computer. PCM data can and will clog your network, delaying sound and fuzzing up everything in the process. 
Use aLaw and uLaw compression schemes. 

5. Make sure you take care of all the error conditions. Multimedia over network can be tricky if not really hard to implement. 

6. DONT USE QT. Use a platform specific framework like .NET and libraries that deal with sound (NAudio). 

私は、これはあなたがVoIPプログラミングの当掘り下げる前に、最初に解決する必要があります問題を総括すると思います。

あなたの質問には、あなたの問題ははるかに小さいです。

1. You don't need echo reduction algorithms IF you use headsets. 
2. You don't need to write hole punching algorithms if you're OK with passing IPs around. Take a look at NAT traversal(UPnP?) if the data is suppose to go on a network and to a computer that isn't on your LAN. 

FLOW: 
COMPUTER1->DATABUFFER->COMPRESSuLaw/aLaw->NETWORK->DECOMPRESSuLaw/aLaw->OTHERCOMPUTER 
and vice versa. 

幸運:)

+0

aLaw/uLawは使用しないでください。 Opusを使う! http://www.opus-codec.org/downloads/ –

2

私はPJSIPをお勧めします。 http://www.pjsip.org/

PJSIPは、およびのオーディオを処理します。 (それもSTUNを持っています!)

私は他の答えに同意しなければなりません。DO QTを使用してください。ここに「ネイティブ」に行く理由はありません。 PJSIPでオーディオを処理できるだけでなく、他の多くのクロスプラットフォームオーディオライブラリがあります。

IPを回すことに関して...あなたがLAN上でこれを使うつもりなら、私はUDPブロードキャストを使って他のユーザーを発見することをお勧めします。お互い)。これはQTで達成するのが非常に簡単です。

関連する問題