Mr.小艾——apprtc服务器的搭建(ubuntu)
来源:互联网 发布:条形码打印机软件 编辑:程序博客网 时间:2024/06/16 18:12
apprtc(webrtc)本地搭建服务器
好长时间没有更新了,之前一直在研究视频直播,这段时间由于项目换了需求。需要搭建一套webrtc的视频会议系统,网页和网页端实现倒是简单点(毕竟初衷就是用于网页的),但问题是项目需求是Android端和Web端实现通信。首先就是网上找资料,然后打算自己搭建发现不切实际果断放弃,连续好几个星期一直找,期间尝试了无数中方法,一直没有什么收获。皇天不负有心人吧?最后找到了这个apprtc——github上的开源项目。Android端的代码是现成的,直接导入修改修改就可以用。难的就是系统服务器的搭建。首先我告诉你,我搭建成功了!!!所以你想成功就耐着性子做下去。我一个人摸索了一个星期,为了帮助大家少走点弯路,将我自己的经验分享给大家。
网上这样的教程千篇一律,我搭建的时候几乎找遍了所以资料,但内容大体一样(估计是一个人写的,其他人也就改改,自己装没装都是问题)。个人建议 百度or谷歌 “apprtc 搭建 ”前几个博客写的很清楚,但对于新手来说有难度,我的经验就是结合他们的教程来说的,理论上面写的也很清楚,像服务器的组成功能等都有介绍。首先自己找一篇教程来做,我把会遇到的问题分享给大家。
- Apprtc房间服务器
- 信令服务器
- 打洞服务器
- nginx服务器
- php模块的安装
Apprtc房间服务器搭建
将github上面的源码下载到本地,放到一个好找的目录就行。接下来如果直接按照教程安装可能会出现问题,因为好多资源都需要连接国外的服务器下载。所以下载好源码之后,先实现翻墙吧!!!不会的话就网上找一个代理。个人推荐一个“二师兄vpn”(建议充值一个会员吧,20元一个月,我不是打广告!这个和我没有关系,毕竟免费的太垃圾了。。。)vpn登录之后检查一下成功没有(看看可不可以访问youtube什么的)。之后按照教程一步步来,会在源码的目录下多出一个out文件夹,然后接着安装依赖库、修改配置文件(注意别进错目录就行)修改的话就按照教程来。在修改constants.py的时候注意
TURN_URL_TEMPLATE = '%s/turn.php?username=%s&key=%s'CEOD_KEY = 和coturn turnserver.conf static-auth-secret一致
上面的turn.php是要自己新建的,还有CEOD_KEY的值自己想一个好记的,后面会用的到。记住这两点!!!
修改完之后 从新grunt build下
到源码的根目录下启动:
dev_appserver.py –host=0.0.0.0 ./out/app_engine
信令服务器搭建
这个很简单,按照教程就可以,当然还是在翻墙的前提之下。修改一些配置文件就可以启动了
~/collider_root/bin/collidermain -port=8089 -tls=false
打洞服务器搭建
还是按照教程来,到编辑配置文件的时候
static-auth-secret = CEOD_KEY的值
千万记得修改,之后启动:service coturn start
之后在浏览器输入:IP地址:3478 出现 TURN Server 就成功了!!!
装到这里,大多数的教程一般就结束了!此时浏览器访问 IP地址:8080一般可以了,Android端导入源码之后修改一下服务器的地址就可以了。但android和web是无法通信的。记得上面还有一个turn.php没用到吧?只能说成功了一大半了。
nginx服务器搭建
因为需要跑一个php文件,(我这里是turn.php 注意TURN_URL_TEMPLATE = ‘%s/turn.php?username=%s&key=%s’ php的名字要和这里的名字一致)需要再搭建一个服务器,在这里选择nginx具体的安装很简单,下载一些压缩包解压,之后复制命令运行就可以了,具体的自行百度,最后nginx配置php模块的时候记得选好端口号,因为这里服务器安装的很多,避免重复导致无法使用;默认的文件路径可以修改也可以不修改,但对于的路径下一定要有turn.php文件(你的名字自己定义),文件的内容写一下内容,要稍作修改:
<?php $request_username = $_GET["username"]; if(empty($request_username)) { echo "username == null"; exit; } $request_key = $_GET["key"]; $time_to_live = 600; $timestamp = time() + $time_to_live;//失效时间 $response_username = $timestamp.":".$_GET["username"]; $response_key = $request_key; if(empty($response_key)) $response_key = "密钥";//constants.py中CEOD_KEY $response_password = getSignature($response_username, $response_key); $jsonObj = new Response(); $jsonObj->username = $response_username; $jsonObj->password = $response_password; $jsonObj->ttl = 86400; $jsonObj->uris = array("turn:IP地址:3478?transport=udp","turn:IP地址:3478?transport=tcp","turn:IP地址:3479?transport=udp","turn:IP地址:3479?transport=tcp"); echo json_encode($jsonObj); /** * 使用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 $password = ""; public $ttl = ""; public $uris = array(""); } ?>
这是别人自己定义的文件代码,我们可以直接拿过来使用。此时在浏览器输入 IP地址:80 (这是我自己定义的,默认是8080,由于被APPrtc占用所以换成80)。没有安装php所以没有结果,但是如果换成.html文件可以的话说明Nginx就安装成功了。
php的搭建
还是一样安装的教程自行百度吧,安装成功之后,启动php:
sudo service php-fpm start
出现php-fpm done 就说明成功了,之后重启一下nginx!!!在浏览器输入IP地址/index.php 会出现:username == null
说明你真的完成了。
之后,重启一下电脑。打开四个终端:
第一个进入到apprtc源码的目录执行:
dev_appserver.py --host=0.0.0.0 ./out/app_engine
第二个直接运行:
~/collider_root/bin/collidermain -port=8089 -tls=false
第三个运行:
sudo usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
第四个运行:
sudo service php-fpm start
顺序就按照这个来,php和nginx颠倒会出现端口被占用的情况。之后android和web就可以建立连接了!!!turn打洞服务器开机自起,就不用自己打开了
总结
距离我完成搭建到现在已经有好几个星期了,有好多当初遇到的问题现在也不记得了。按照上面说的一步步来应该不会有太大的问题。以后一定做完就写总结,这也是对自己的一种负责。我成功了你也可以的,有不懂的可以问我,我保证教会你!!!还有有什么问题也请指出,我会改。我是Mr.小艾。
- Mr.小艾——apprtc服务器的搭建(ubuntu)
- AppRTC服务器搭建
- webrtc 服务器搭建(1)apprtc房间服务器
- apprtc(webrtc) 本地搭建服务器
- CentOS6.5搭建APPRTC服务器
- 基于webrtc的apprtc服务器搭建(ubuntu14.04 64位)
- 基于webrtc的apprtc服务器搭建(ubuntu14.04 64位)
- 搭建APPRTC服务器时,遇到的coturn服务器配置及调用的问题解决
- WebRTC知识分享——AppRTC服务器简述
- appRTC在Ubuntu14.04环境下的服务器搭建以及ios客户端代码编译,android客户端下载
- appRTC搭建(force relay)
- webrtc随笔-apprtc服务器
- 本地APPRTC服务器配置
- apprtc demo的apprtc.py分析
- Ubuntu——用VSFTP搭建FTP服务器(2)
- ubuntu常见服务器的搭建
- Ubuntu Web服务器的搭建
- APPRTC本地服务器常见问题汇总
- linux 安装apache httpd
- mybatis的使用
- 利用stringstream 类实现字符串和数值间转换
- QUTOJ-1356 小E和1(规律)
- ubuntu下运行Android-Studio时出现Execution failed for task ':app:validateSigningDebug
- Mr.小艾——apprtc服务器的搭建(ubuntu)
- UGUI<一>:canvas
- Linux 下socket编程客户端与服务端代码
- 如何把自己的app(MEAN开发方式)部署到heroku
- Canvas 基本绘图Api记录
- opencv2.x 以上 删除二值化图像中面积较小的区域
- hdu5973
- iOS开发多线程详解
- 思路题,树的直径(Anton and Tree,cf 734E)