基於pjsip實現p2p語音對講

2021-07-29 11:58:49 字數 2078 閱讀 2333

config-file

大家先大致瀏覽上面的pjsua文件說明,對整個pjsua的選項有個了解。然後我們關注到最後的config_file。

# this is a comment in the config file.

--id sip:[email protected]

--registrar sip:example.com

--realm *

--username alice

--password secret

sipserver測試環境搭建

需要三颱pc進行測試,兩台pc執行./pjsua客戶端,一台執行sipserver。另外需要三颱路由器,兩台pc客戶端執行分別執行在兩台路由器下,sipserver執行在上級路由網路。

按照前面的說明,分別生成user1和user2兩個conf檔案。

在兩個客戶端系統執行命令:./pjsua-x86_64-unknown-linux-gnu –config-file userx.conf

然後按照提示說明即可完成sip呼叫的過程。不過大概率情況下,你應該是不能進行語音對講的。因為兩個pjsua處於兩個不同網路下,需要nat穿透。

前面如果你遇到語音不通的情況,大概應該是你的路由器的nat模式是對稱型的,stun是無法穿透對稱型nat的,此處需要用到turn,按照協議介紹turn是對stun的一種補充,對於無法穿透的對稱型nat,需要借助turn進行**,我的理解turn已經不是純粹的p2p了。

turn server搭建:

這裡我們選擇restund作為turn server

restund的安裝參考:

(注意啟動restund服務時,修改/etc/restund.conf裡面的server ip)

我們需要將該restund server部署到sipserver同一網路中。

–turn-srv引數:

pjsip文件中關於–turn-srv的sample大概是這樣子的:

another example to use turn and ice:

$ ./pjsua --use-ice

--use-turn

--turn-srv turn.pjsip.org --turn-user

[username]

--turn-passwd ***

不了解turn的對這裡的–turn-user和–turn-passwd會十分疑惑。

我們檢視restund服務配置/etc/restund.auth:

#

# restund.auth

## this file contains a list of authenticated users, with one

# user per line in the format:

## username:ha1

## the ha1 value can be calculated using util/genha1.sh

## sample user for testing:

## username = demo

# realm = myrealm

# password = secret

#demo:c5dcdebd926706f33065ec3b65bf103c

這裡的預設的username就是demo,password就是secret了。

這樣上面的引數可以這麼填寫:

.

/pjsua--

use-

ice-

-use

-turn--

turn

-srv

restund_ip:3478--

turn

-user

demo--

turn

-passwd

secret

C 基於UDP實現的P2P語音聊天工具

語音獲取 要想傳送語音資訊,首先得獲取語音,這裡有幾種方法,一種是使用directx的directxsound來錄音,我為了簡便使用乙個開源的外掛程式naudio來實現語音錄取。在專案中引用naudio.dll 錄音相關 private iw ein w ein private w efilewri...

認識P2P,利用P2P

是peer to peer的縮寫 好象還看到過文章說是point to point,我也不清楚,網上的資料也不清楚,鬱悶 peer在英語裡有 地位 能力等 同等者 同事 和 夥伴 等意義。這樣一來,p2p也就可以理解為 夥伴對夥伴 的意思,或稱為對等聯網。目前人們認為其在加強網路上人的交流 檔案交換...

p2p的基本實現過程

絡上的大多數udp原理研究分析後,自己總結了下面的結果.1 client a 登入 通過http伺服器 webservices 驗證成功獲取自身資訊與好友 列表資訊等。2 http伺服器登記client a的nat後的ip位址與埠 3 client b登入 通過http伺服器 webservices...