在webrtc-streamer流媒体使用公网访问时,一定会用到coturn服务,之前我写的教程无法在window下搭建coturn服务器,都是Linux下搭建的,但是对于很多人来说,Linux并不是首选,因此我今天也研究了一下如何纯windows搭建并配合webrtc-streamer流媒体进行互联网视频播放。
目录
下载Cygwin
安装openssl
安装libevent
安装gcc
安装make
下载Coturn
编译Coturn
进入coturn目录
执行./configure
执行make
执行make install
配置turnserver.conf
开始运行
补充:脱离Cygwin 启动
下载Cygwin
这个玩意百度有很多介绍,我就不copy了,大概就是让Linux程序跑在windows下
官网地址:Cygwin
下载文件:setup-x86_64.exe
双击安装
下一步
默认下一步
选择安装的目录 下一步
选择下载的目录 下一步
根据你联网的情况选择,下一步
选择阿里云镜像站点,下一步
重点来了,需要安装的依赖软件就在这里安装,视图:完整
安装openssl
搜索:openssl 我这是已经安装过了,没有安装的时候,双击对应行的操作列,也就是跳过,会自动加载版本就可以安装其他的了,只要版本出来就是准备安装了。
安装libevent
安装gcc
安装make
然后下一步
我这里已经安装过了,这里不显示软件,初次安装,这里会显示你刚才选中的准备安装的软件
下一步
快捷方式都勾上 完成即可。至此,Cygwin安装完毕。
下载Coturn
GitHub地址:coturn/coturn: coturn TURN server project (github.com)
下载完解压后拷贝到D:\ENV\Cygwin\bin
编译Coturn
打开Cygwin的安装目录,有一个Cygwin.bat批处理,双击打开
打开后如下,这个默认目录就是当前Cygwin的目录,所有后面的相对路径都是基于这个目录
进入coturn目录
执行cd /bin/coturn
执行./configure
结尾出现success 说明到这一步没问题,继续
执行make
执行make install
至此,coturn就编译完成了,目录下会出现一个bin文件夹,进入后会看到turnserver.exe
别急,你会发现你比我少几个文件,一个是turnserver.conf 还有2个pem文件,从usr/local/etc目录将turnserver.conf.default文件拷贝过来,并修改文件名去掉default
配置turnserver.conf
我建议直接清空,复制如下内容:
relay-device=eth0listening-ip=内网iplistening-port=3478tls-listening-port=5349relay-ip=内网ipexternal-ip=公网iprelay-threads=50lt-cred-mechmin-port=49152max-port=65535cert=/bin/coturn/bin/turn_server_cert.pempkey=/bin/coturn/bin/turn_server_pkey.pempidfile=/var/run/turnserver.piduser=admin:123456cli-password=123456
注意:不要无脑copy,配置你自己的内网ip和公网ip
生成签名pem文件
openssl req -x509 -newkey rsa:2048 -keyout /bin/coturn/bin/turn_server_pkey.pem -out /bin/coturn/bin/turn_server_cert.pem -days 99999 -nodes
此时在coturn的bin目录下就会生成turn_server_cert.pem和turn_server_pkey.pem文件
开始运行
turnserver -o -a -f -c /usr/bin/coturn/bin/turnserver.conf -r sdo.com
运行后没有ERROR即可,然后查看本机的3478端口是否被监听
此时我们就可以将webrtc-streamer配置turn服务启动了。
务必:对webrtc-streamer的tcp8000端口,3478的tcp和udp端口映射出去。
webrtc-streamer启动命令:
webrtc-streamer.exe -o -H 内网ip:8000 -S公网ip:公网端口 -Tadmin:123456@公网ip:公网端口
例如:
webrtc-streamer.exe -o -H 192.168.1.27:8000 -S112.97.116.2:3478 -Tadmin:123456@112.97.116.2:3478
如何仅仅是测试,可以在启动命令后直接跟rtsp地址,注意加空格。
至此公网就可以通过coturn进行转发webrtc的视频了。
补充:脱离Cygwin 启动
如果每次都要使用Cygwin启动也就太依赖了,能不能做成批处理直接拷贝到其他服务器启动呢?
能!
将Cygwin的bin目录下的dll文件全部拷贝到Coturn目录下,然后修改turnserver.conf中的签名文件的路径
cert=turn_server_cert.pempkey=turn_server_pkey.pem
创建2个批处理
一个启动 start.bat
@echo offrem 检查是否有 turnserver.exe 进程运行tasklist /FI "IMAGENAME eq turnserver.exe" | findstr /I "turnserver.exe"if %ERRORLEVEL% == 0 ( echo 正在停止 turnserver.exe 进程... taskkill /F /IM turnserver.exe echo 进程已停止。) else ( echo 没有找到 turnserver.exe 进程。)rem 启动 turnserver 服务并显示启动信息echo 正在启动 turnserver 服务...turnserver -o -a -f -c turnserver.conf -r sdo.comecho turnserver start successfullrem 暂停以查看启动信息pause
一个停止stop.bat
@echo offrem 查找并停止 turnserver.exe 进程tasklist /FI "IMAGENAME eq turnserver.exe" | findstr /I "turnserver.exe"if %ERRORLEVEL% == 0 ( echo 正在停止 turnserver.exe 进程... taskkill /F /IM turnserver.exe echo 进程已停止。) else ( echo 未找到 turnserver.exe 进程运行。)rem 等待一会儿以确保进程已完全停止timeout /t 5 /nobreak >nulecho turnserver 服务已停止。
然后就可以通过批处理启动和停止啦,是不是很容易!
启动
停止