5

私は現在、ボイスオーバーIPとテキストベースのチャットをサポートするアプリケーションを作成したいという最終年度のプロジェクトを計画しています(ただし、「次のスカイプ」ではありません)。私は、voIP の部分を処理するための軽量で使いやすい方法が本当に必要であり、少なくともそもそも機能を拡張する必要はありません。

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

私は GUI に Qt フレームワークを使用する予定ですが、言語 (C++) も変更可能であるため、石で書かれたものは何もありません。ソフトウェアは Windows 上で実行されます。

H.323、sip、その他のオープンソースを調べましたが、入り込むのが非常に難しいようで、必要なことを行っているかどうかわかりません。

私が調べるべきオープンソースライブラリは、私が望むことを部分的に行いますか? 私が見逃したソースはありますか?私は voIP の世界にまったく慣れていないので、正しい方向へのプッシュを使用できます。繰り返しになりますが、これを単純な方法で行う言語があれば、現在計画段階にあるので、切り替えることができます。助けてくれてありがとう。

4

2 に答える 2

3

まず、数か月前に会社に似たようなものを実装しました。

得られた教訓:

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.

幸運を :)

于 2012-10-23T22:14:30.583 に答える
2

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

PJSIP が SIP音声を処理します。(STUNもあります!)

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

IP の受け渡しに関して...LAN でこれを使用する場合は、UDP ブロードキャストを使用して他のユーザーを検出することをお勧めします (エンド ユーザーがお互いを識別できるように、UI にユーザー名を定義する場所を用意します)。これは、QT では非常に簡単に実現できます。

于 2012-10-24T01:45:03.177 に答える