workerman作為信令服務(wù)器,實(shí)現(xiàn)webrtc一對(duì)一視頻聊天。完整示例源碼在附件中。
?
在線demo:
webrtc 在線demo
webrtc源碼 github地址:https://github.com/walkor/workerman-webrtc 不要吝嗇你的小星星哦
注意:
webrct要求網(wǎng)站是基于https的,http無(wú)法開啟攝像頭,所以需要設(shè)置https證書。
?
配置:
假設(shè)你的域名為 webrtc.workerman.net,則config.php中配置類似如下
<?php
// 信令服務(wù)器(Signaling Server)地址,需要用wss協(xié)議,并且必須是域名
$SIGNALING_ADDRESS = 'wss://webrtc.workerman.net:8877';
$SSL_CONTEXT = array(
// 更多ssl選項(xiàng)請(qǐng)參考手冊(cè) http://php.net/manual/zh/context.ssl.php
'ssl' => array(
// 請(qǐng)使用絕對(duì)路徑
'local_cert' => '磁盤路徑/server.pem', // 也可以是crt文件
'local_pk' => '磁盤路徑/server.key',
'verify_peer' => false,
'allow_self_signed' => true, //如果是自簽名證書需要開啟此選項(xiàng)
)
);
啟動(dòng):
linux系統(tǒng)運(yùn)行 php start.php start -d 啟動(dòng)
windows系統(tǒng)雙擊start_for_win.bat啟動(dòng)
訪問:
瀏覽器訪問 域名.com:9988
進(jìn)入視頻聊天頁(yè)面
?
其它:
源碼中web目錄可以使用其它webserver運(yùn)行,比如apache nginx。
如果使用nginx代理wss,需要注釋掉config.php中$SSL_CONTEXT設(shè)置,?wss相關(guān)設(shè)置參考手冊(cè)?http://doc.workerman.net/faq/secure-websocket-server.html
?
GITHUB:
webrtc github地址:https://github.com/walkor/workerman-webrtc 不要吝嗇你的小星星哦
注意github下載的源碼需要用composer安裝workerman才能運(yùn)行,附件中是完整的webrtc示例代碼。
?
注意:
如果有問題,可以嘗試裝一個(gè)turn服務(wù)器,比如 https://github.com/coturn/coturn
安裝完coturn后 web/room.php頁(yè)面js 代碼里設(shè)置類似如下:
iceServers: [{
urls: [
'turn:域名.com:3478?transport=udp',
'turn:域名.com:3478?transport=tcp'
],
username: 'xxx',
credential: 'xxx'
}]
這個(gè)demo并不是支持所有瀏覽器,一般來說谷歌瀏覽器是沒問題的
chrome、firefox可以跑起來。但是國(guó)內(nèi)谷歌核心類的瀏覽器會(huì)報(bào)錯(cuò):.addTrack is not a function只能看到本地。難道是把webrtc閹割了?
你好,請(qǐng)問一下,用手機(jī)的4G網(wǎng)谷歌瀏覽器訪問就閃退黑屏,要怎么解決啊,是不是stun的問題啊
我用turn解決了,不知道對(duì)不對(duì),但是現(xiàn)在可以用兩個(gè)手機(jī)的4G網(wǎng)鏈接視頻通話了。下面是我安裝的整個(gè)過程。
var configuration = {
iceServers: [{
urls: 'turn:域名',//免費(fèi)的stun服務(wù)器換成自己搭建的turn
},{
urls: 'turn:域名',//
credential:'用戶名',
username:'密碼'
}]
};
csdn博客地址:
地址:https://blog.csdn.net/polarGW/article/details/70226634
下載turn包地址 https://blog.csdn.net/qq_32435729/article/details/78729093
安裝 turn
先安裝所需依賴庫(kù):要不然編譯會(huì)報(bào)錯(cuò):(我安裝的時(shí)候沒有到sudo,直接yum)
sudo yum install openssl-devel
sudo yum install sqlite
sudo yum install sqlite-devel
sudo yum install libevent
sudo yum install libevent-devel
sudo yum install postgresql-devel
sudo yum install postgresql-server
sudo yum install mysql-devel
sudo yum install mysql-server
或者是:
sudo yum install mysql - serve(中間加空格不同版本安裝命令不一樣試一下)
sudo yum install hiredis
sudo yum install hiredis-devel
下載 turn 包:
官網(wǎng):http://turnserver.open-sys.org/downloads/
這里我們選取CenterOS最新版本v4.5.0.6對(duì)應(yīng)CenterOS7.2下載之后是一個(gè)后綴為.gz的壓縮包。
wget http://turnserver.open-sys.org/downloads/v4.5.0.6/turnserver-4.5.0.6-CentOS7.2-x86_64.tar.gz
解壓:
tar -zxvf turnserver-4.5.0.6-CentOS7.2-x86_64.tar.gz
cd turnserver-4.5.0.6
./install.sh
修改配置文件,配置文件在/etc/turnserver目錄下turnserver.conf,執(zhí)行:
cd /etc/turnserver/
vim turnserver.conf
listening-port=3478
listening-ip=10.10.xx.xx
relay-ip=10.10.xx.xx
external-ip=133.110.xx.xx
user=user:password 或者使用ssh也是可以的
user=user:passKey
realm=companyName.com.cn
以上就是配置的主要內(nèi)容,更詳細(xì)的配置可以直接查看turnserver.conf,里面的注釋很詳細(xì),可以設(shè)置tls,mysql,redis,mongodb等等內(nèi)容這里不做詳細(xì)解釋了。
另外:STUN和TURN的區(qū)別,turn服務(wù)器是一個(gè)特殊的stun服務(wù)器,turn具備了stun的功能,并且具備stun不具備的中繼轉(zhuǎn)發(fā)功能,我們按照的服務(wù)可以不提供turn功能只作為stun使用,打開turnserver.conf中的stun-only即可。
啟動(dòng)和關(guān)閉TURN服務(wù):
啟動(dòng)命令:
turnserver -v -r 外網(wǎng)ip -a -o -c /etc/turnserver/turnserver.conf
關(guān)閉命令:
執(zhí)行 cat /var/run/turnserver/turnserver.pid 或者 cat /var/tmp/turnserver.pid
找到進(jìn)程編號(hào),例如:2059
執(zhí)行kill 2059 結(jié)束進(jìn)程。
測(cè)試地址:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
測(cè)試樣例:
點(diǎn)擊gather candidates按鈕測(cè)試,正確結(jié)果如下:
如果沒有產(chǎn)生3種類型的ip地址則配置失?。ㄔ摲?wù)可能會(huì)用到80端口,在公司機(jī)房服務(wù)器配置沒有成功,最后用阿里云配置成功)。
請(qǐng)問這個(gè)demo的nginx怎么配置啊,https默認(rèn)端口使443,訪問demo地址帶9988的話,提示連接已重置,但是將nginx的ssl監(jiān)聽端口改成9988,demo又運(yùn)行部起來。
windows系統(tǒng)雙擊start_for_win.bat啟動(dòng)后,本機(jī)的可以打開攝像頭運(yùn)行,其它電腦或手機(jī)進(jìn)入房間后就黑屏了
如何看到對(duì)方呢?我用手機(jī)打開的 打開后只是看到本地的自己 用了兩部手機(jī)都是這樣 房間號(hào)也相同
大神,我提一個(gè)問題, 我所有的都搭建好了,但是我遇到一個(gè)難題,在本地時(shí),語(yǔ)音正常, 搭建到服務(wù)器,語(yǔ)音就有特別大的噪音,嘯叫,回聲, 想提問如何解決 系統(tǒng)是debian9 php7.4.6 workerman4 安裝了turn,希望大神能回答一下
噪音這個(gè)不是服務(wù)端該解決的問題。一般是客戶端采集聲音的時(shí)候要通過一些算法消除噪音回聲這些,不過這些一般都是客戶端封裝死了的,我們很難去修改的。
composer install 阿里云鏡像會(huì)報(bào)錯(cuò)
改成 騰訊的就可以了
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
好用,大贊啊