webrtc测试服务器编译和搭建
来源:互联网 发布:网络舆情汇报 编辑:程序博客网 时间:2024/05/01 00:18
这部分,主要是参考网上别人的做法,只不过中间遇到的一些问题这里我会稍微写一下。
首先,webrtc服务器的编译主要参考这位大神的做法:http://blog.csdn.net/s569646547/article/details/50780682
我这里用的是Ubuntu 16.04 LTS 64位的linux系统。
服务器方面需要注意的是,启动服务器的时候不要设置系统代理,因为下载某些软件的时候可能需要翻墙。如果编译中出现下载失败的问题,很有可能是翻墙造成的,需要自己去确认下是不是需要翻墙。另外,设置系统代理或者取消代理,可能需要注销下才会起作用,这个有点麻烦,为什么不是立即生效呢。。。
一、AppRTC房间服务器
这个编译按照链接里的做就行,只不过中间安装某些软件的时候,需要等的时间比较长,耐心等就行了。
编译完成,配置的地方说几点不同的:
1.我这里用的iceserver,好像最新的webrtc demo用的是iceserver,所谓的iceserver其实就是请求一个url网址,返回一组打洞服务器地址,我这里改成这个
ICE_SERVER_BASE_URL = 'http://192.168.123.231'
完整的url是http://192.168.123.231/v1alpha/iceconfig/?key=north,这里的url需要自己做一个网站配置一下,理论上,如果只是测试,写成一个静态的index.html返回给客户端应该也是可以的。
url返回的json数据是:
{"iceServers":[{"username":"1473662094:ling","credential":"HbWuzrR0z\/Ei0wBPvHISXpdGvc4=","ttl":86400,"urls":["turn:192.168.123.231:3478?transport=udp","turn:192.168.123.231:3478?transport=tcp","turn:192.168.123.231:3479?transport=udp","turn:192.168.123.231:3479?transport=tcp"]},{"username":"1473662094:ling","credential":"HbWuzrR0z\/Ei0wBPvHISXpdGvc4=","ttl":86400,"urls":["turn:192.168.123.231:3478?transport=udp","turn:192.168.123.231:3478?transport=tcp","turn:192.168.123.231:3479?transport=udp","turn:192.168.123.231:3479?transport=tcp"]}]}
注意这里的urls,链接里面是uris,这是不同的。最新webrtc demo是用的urls解析的。另外mac版本的demo解析这个json和android不同,有bug,需要自己修复下。
2.npm的安装不需要翻墙。
3.constants.py里面的修改
4.apprtc.py里面,为了测试通过,我加了这句,是为了不执行if下面的代码。
5.我的启动命令dev_appserver.py --host 192.168.123.231 --port 8080 ./out/app_engine
二、Collider信令服务器
这个也是按照链接里的做就可以了。不过go的编译也用了蛮长时间,主要是第一次编译的问题。
需要注意的是,要在src目录下启动信令服务器,我的启动命令~/collider_root/bin/collidermain -port=8089 -room-server="192.168.123.231" -tls=false
三、打洞服务器
这里我是下载的源码http://turnserver.open-sys.org/downloads/v4.5.0.4/turnserver-4.5.0.4.tar.gz自己编译安装的。.configure以后,make,sudo make install就行了。
启动之前,我没有修改配置,用的默认配置启动的,签名证书的生成同链接里的。我的启动命令sudo turnserver start
不过这里可能涉及到一个打洞服务器认证的问题,由于这里只是自己测试用,这些并没有在意。如果是需要上线的,请自行研究解决下吧。
四、iceserver的生成
关于第一步中这个url:http://192.168.123.231/v1alpha/iceconfig/?key=north
这里我们做一个php实现。
1.网站服务器,由于ubuntu16.04 LTS中自带了一个叫做lighttpd的网站服务器,所以不需要再去装什么apache或者nginx网站服务器了。
2.php安装,请参照http://blog.csdn.net/wangzuo0714/article/details/6834558,该链接php安装部分,不过我用的php5.6
3.lighttp配置php
找到/etc/lighttpd/conf-available/15-fastcgi-php.conf,修改"bin-path" => "/usr/local/bin/php-cgi"指向你自己的php-cgi位置
然后运行
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
这将创建符号链接
/etc/lighttpd/conf-enabled/10-fastcgi.conf 指向/etc/lighttpd/conf-available/10-fastcgi.conf
/etc/lighttpd/conf-enabled/15-fastcgi-php.conf 指向 /etc/lighttpd/conf-available/15-fastcgi-php.conf
最后重启lighttpd, sudo service lighttpd force-reload
4.下面参照链接里的php,我做了一下修改,里面的username什么都是为了暂时测试改掉的,这里需要配合客户端做相应的修改,由于写改文章的时候,我对webrtc客户端代码还没做太多研究,这里为了测试通过,这样改了。
<?php $request_username = "";//$_GET["username"]; if(!isset($_GET["username"])) { //echo "username == null"; //exit; $request_username = "ling"; } $request_key = "ling1234";//$_GET["key"]; $time_to_live = 600; $timestamp = time() + $time_to_live;//失效时间 $response_username = $timestamp.":".$request_username;//$_GET["username"]; $response_key = $request_key; if(empty($response_key)) $response_key = "密钥";//constants.py中CEOD_KEY $response_password = getSignature($response_username, $response_key); $iceServer = new Response(); $iceServer->username = $response_username; $iceServer->credential = $response_password; $iceServer->ttl = 86400; $iceServer->urls = array("turn:192.168.123.231:3478?transport=udp","turn:192.168.123.231:3478?transport=tcp","turn:192.168.123.231:3479?transport=udp","turn:192.168.123.231:3479?transport=tcp"); $str = json_encode($iceServer); $config = array("iceServers"=>[$iceServer,$iceServer]);//{"iceServers":"ff"}; echo json_encode($config); /** * 使用HMAC-SHA1算法生成签名值 * * @param $str 源串 * @param $key 密钥 * * @return 签名值 */ function getSignature($str, $key) { $signature = ""; if (function_exists('hash_hmac')) { $signature = base64_encode(hash_hmac("sha1", $str, $key, true)); } else { $blocksize = 64; $hashfunc = 'sha1'; if (strlen($key) > $blocksize) { $key = pack('H*', $hashfunc($key)); } $key = str_pad($key, $blocksize, chr(0x00)); $ipad = str_repeat(chr(0x36), $blocksize); $opad = str_repeat(chr(0x5c), $blocksize); $hmac = pack( 'H*', $hashfunc( ($key ^ $opad) . pack( 'H*', $hashfunc( ($key ^ $ipad) . $str ) ) ) ); $signature = base64_encode($hmac); } return $signature; } class Response { public $username = ""; public $credential = ""; public $ttl = ""; public $urls = array(""); } ?>将以上php代码保存为index.php,放到/var/www/html/v1alpha/iceconfig下面。这样,访问http://192.168.123.231/v1alpha/iceconfig/?key=north,将会返回类似这样的json数据:
{"iceServers":[{"username":"1473662094:ling","credential":"HbWuzrR0z\/Ei0wBPvHISXpdGvc4=","ttl":86400,"urls":["turn:192.168.123.231:3478?transport=udp","turn:192.168.123.231:3478?transport=tcp","turn:192.168.123.231:3479?transport=udp","turn:192.168.123.231:3479?transport=tcp"]},{"username":"1473662094:ling","credential":"HbWuzrR0z\/Ei0wBPvHISXpdGvc4=","ttl":86400,"urls":["turn:192.168.123.231:3478?transport=udp","turn:192.168.123.231:3478?transport=tcp","turn:192.168.123.231:3479?transport=udp","turn:192.168.123.231:3479?transport=tcp"]}]}
以上是webrtc服务器的搭建过程,由于对webrtc的客户端和服务器端研究太少,这里的步骤都是为了测试所写,而且都是测试通过的。
以后如果有机会详细研究下去的话,会再找机会写点更详细的东西。
- webrtc测试服务器编译和搭建
- Webrtc服务器搭建
- Webrtc服务器搭建
- Webrtc服务器搭建
- Webrtc服务器搭建
- Webrtc服务器搭建
- Webrtc服务器搭建 (coturn)
- webrtc服务器搭建
- webrtc-房间服务器搭建
- Webrtc服务器搭建
- webrtc coturn服务器搭建
- Webrtc服务器搭建
- webrtc 服务器搭建
- Webrtc 系列之一: ubuntu 下webrtc的环境搭建 和编译为安卓APK
- webrtc应用turn服务器搭建
- WebRTC之turn服务器搭建
- apprtc(webrtc) 本地搭建服务器
- 搭建webrtc服务器(ubuntu14.04)
- springmvc 原理解析
- 关于今天在用spring字符集过滤器遇到的问题
- jQuery 之缓存
- Hbuilder/H5 功能汇总
- @SuppressLint("NewApi")和@TargetApi()的区别
- webrtc测试服务器编译和搭建
- MVVM初识
- Zigbee性能分析
- PHP+mysql链接
- jQuery 放大镜(面向过程)
- RecyclerView的使用教程1
- Linux-C基础知识学习:C语言作业-把100~200之间的不能被3整除的数输出
- <link>标签中的rel="sheetstyle"含义
- java 模拟浏览器进行get和post请求