在webrtc-streamer流媒体使用公网访问时,一定会用到coturn服务,之前我写的教程无法在window下搭建coturn服务器,都是Linux下搭建的,但是对于很多人来说,Linux并不是首选,因此我今天也研究了一下如何纯windows搭建并配合webrtc-streamer流媒体进行互联网视频播放。
下载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=eth0
listening-ip=内网ip
listening-port=3478
tls-listening-port=5349
relay-ip=内网ip
external-ip=公网ip
relay-threads=50
lt-cred-mech
min-port=49152
max-port=65535
cert=/bin/coturn/bin/turn_server_cert.pem
pkey=/bin/coturn/bin/turn_server_pkey.pem
pidfile=/var/run/turnserver.pid
user=admin:123456
cli-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:[email protected]:3478
如何仅仅是测试,可以在启动命令后直接跟rtsp地址,注意加空格。
至此公网就可以通过coturn进行转发webrtc的视频了。
补充:脱离Cygwin 启动
如果每次都要使用Cygwin启动也就太依赖了,能不能做成批处理直接拷贝到其他服务器启动呢?
能!
将Cygwin的bin目录下的dll文件全部拷贝到Coturn目录下,然后修改turnserver.conf中的签名文件的路径
cert=turn_server_cert.pem
pkey=turn_server_pkey.pem
创建2个批处理
一个启动 start.bat
@echo off
rem 检查是否有 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.com
echo turnserver start successfull
rem 暂停以查看启动信息
pause
一个停止stop.bat
@echo off
rem 查找并停止 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 >nul
echo turnserver 服务已停止。
然后就可以通过批处理启动和停止啦,是不是很容易!
启动
停止
版权归原作者 吭哧瘪肚的万能工 所有, 如有侵权,请联系我们删除。