基于webrtc的媒体流传输工具tl-rtc-file

在这里插入图片描述

也不知道是什么意思,天天都有人在微信公众号的后台发,是打算找我兑奖吗?


本文软件是朋友 Eduna 推荐的,因为他觉得好像很好玩的样子。老苏一开始以为 tl-rtc-file 是跟 Snapdrop 一样的局域网文件传输工具,在看了 demo 网站后,发现确实有点意思,但最终的结果却有点让人失望了。

什么是 tl-rtc-file ?

tl-rtc-file 是基于 webrtc 的网页在线媒体流传输开源工具。内网不限速(局域网最高到过70多M/s),支持多文件拖拽发送,网页文件预览。 扩展了许多丰富的小功能,如本地屏幕录制,远程屏幕共享(无延迟),远程音视频通话(无延迟),直播(无延迟),密码房间,oss 云存储,中继服务设置,webrtc 检测,webrtc 统计,文字传输(群聊,私聊),公共聊天,远程画板,AI 聊天框,丰富的后台管理,实时执行日志展示,机器人告警通知等功能… 等等

官方的演示站点:https://im.iamtsm.cn

安装

在群晖上以 Docker 方式安装。因为涉及到多个容器,所以采用 docker-compose 安装方式。

准备工作

第一步、先创建好目录

# 新建文件夹 tlrtcfile 和 子目录
mkdir -p /volume1/docker/tlrtcfile/{data/{db,log,init.sql,my.cnf},coturn}

# 进入 tlrtcfile 目录
cd /volume1/docker/tlrtcfile

第二步、准备好需要的文件

turnserver-with-secret-user.conf

第一个文件是 turnserver-with-secret-user.conf

实际上 turnserver 在局域网是非必须步骤,只有在公网才是必须步骤。所谓非必须就是哪怕容器停止了,也不影响使用的意思

老苏基于官方的示例文件:https://github.com/tl-open-source/tl-rtc-file/blob/master/docker/coturn/turnserver-with-secret-user.conf 做了微调

#------------TURN BASE CONFIG 基础配置------------#
#监听网卡
listening-device=eth0
#监听ip(内网ip)
listening-ip=
#监听端口(端口)
listening-port=3478
#公网ip
# external-ip=
#端口最小值
min-port=49152
#端口最大值
min-port=55000
#cli密码
cli-password=qwerty
#后台运行-默认关闭 docker运行时需关闭, 自行部署时,可以开启
# daemon
#会话指纹
fingerprint
#中等详细日志
verbose
#长期凭证
#lt-cred-mech
#关闭tls
no-tls
#关闭dtls
no-dtls

#------------TURN REST API USER CONFIG 有效时间帐号密码模式 (优先推荐使用这种方式)------------#
#开启rest api
use-auth-secret
#rest api账号密码
static-auth-secret=tlrtcfile
#来源(域名或ip:port)
realm=192.168.0.197:3478

其中 :

  • listening-device :一般单网卡不需要修改
  • static-auth-secret:密码
  • realm: 前面的 IP 修改为自己群晖主机的 IP,后面的端口不要改

这个文件需存放在 coturn 目录中

env.txt

第二个文件是 env.txt,之所以没用 tlrtcfile.env 做文件名,是为了方便在 FileStation 中直接编辑修改

老苏基于官方的示例文件:https://github.com/tl-open-source/tl-rtc-file/blob/master/tlrtcfile.env 做了微调,去掉了没用上的部分,例如 OSS、企业微信等

#-----------------以下为基础配置-----------------#
## api服务端口
tl_rtc_file_api_port=9092
## websocket服务端口
tl_rtc_file_socket_port=8444
## websocket服务地址
tl_rtc_file_socket_host=192.168.0.197:8444

#-----------------以下为webrtc相关配置-----------------#
## webrtc-stun中继服务地址
tl_rtc_file_webrtc_stun_host=stun:192.168.0.197:3478
## webrtc-turn中继服务地址
tl_rtc_file_webrtc_turn_host=turn:192.168.0.197:3478?transport=udp
## webrtc中继服务用户名
tl_rtc_file_webrtc_turn_username=tlrtcfile
## webrtc中继服务密码
tl_rtc_file_webrtc_turn_credential=tlrtcfile
## webrtc中继服务Secret
tl_rtc_file_webrtc_turn_secret=tlrtcfile
## webrtc中继服务帐号过期时间 (毫秒)
tl_rtc_file_webrtc_turn_expire=86400000

#-----------------以下为mysql数据库相关配置-----------------#
## 是否开启数据库
tl_rtc_file_db_open=true
## 数据库地址
tl_rtc_file_db_mysql_host=mysql
## 数据库端口
tl_rtc_file_db_mysql_port=3306
## 数据库名称
tl_rtc_file_db_mysql_dbName=webchat
## 数据库用户名
tl_rtc_file_db_mysql_user=tlrtcfile
## 数据库密码
tl_rtc_file_db_mysql_password=tlrtcfile

#-----------------以下为管理后台相关配置-----------------#
## 管理后台房间号
tl_rtc_file_manage_room=tlrtcfile
## 管理后台密码
tl_rtc_file_manage_password=tlrtcfile

需要将 192.168.0.197 修改为自己群晖主机的 IP

docker-compose.yml

第三个文件是 docker-compose.yml

老苏基于官方的示例文件:https://github.com/tl-open-source/tl-rtc-file/blob/master/docker-compose.yml 做了微调,

version: '3'

services:
  api-http:
    profiles: ['http']
    image: iamtsm/tl-rtc-file-api
    container_name: tl-rtc-file-api
    env_file:
      - ./env.txt
    environment:
      - tl_rtc_file_env_mode=http
      - tl_rtc_file_db_open=true
    command: 
      - tlapi
    ports:
      - 9092:9092
    links:
      - mysql
    depends_on:
      - mysql
      - coturn
    volumes:
      - ./env.txt:/tlrtcfile/tlrtcfile.env

  #https模式启动api服务
  api-https:
    profiles: ['https']
    image: iamtsm/tl-rtc-file-api
    container_name: tl-rtc-file-api
    env_file:
      - ./env.txt
    environment:
      - tl_rtc_file_env_mode=https
      - tl_rtc_file_db_open=true
    command: 
      - tlapi
    ports:
      - 9092:9092
    links:
      - mysql
    depends_on:
      - mysql
      - coturn
    volumes:
      - ./env.txt:/tlrtcfile/tlrtcfile.env

  #http模式启动socket服务
  socket-http:
    profiles: ['http']
    image: iamtsm/tl-rtc-file-socket
    container_name: tl-rtc-file-socket
    command: 
      - tlsocket
    env_file:
      - ./env.txt
    environment:
      - tl_rtc_file_env_mode=http
      - tl_rtc_file_db_open=true
    ports:
      - 8444:8444
    links:
      - mysql
    depends_on:
      - mysql
      - coturn
    volumes:
      - ./env.txt:/tlrtcfile/tlrtcfile.env

  #https模式启动socket服务
  socket-https:
    profiles: ['https']
    image: iamtsm/tl-rtc-file-socket
    container_name: tl-rtc-file-socket
    command: 
      - tlsocket
    env_file:
      - ./env.txt
    environment:
      - tl_rtc_file_env_mode=https
      - tl_rtc_file_db_open=true
    ports:
      - 8444:8444
    links:
      - mysql
    depends_on:
      - mysql
      - coturn
    volumes:
      - ./env.txt:/tlrtcfile/tlrtcfile.env

  #mysql服务
  mysql:
    profiles: ['http','https']
    image: iamtsm/tl-rtc-file-mysql
    container_name: tl-rtc-file-mysql
    restart: always
    environment:
      #设置root密码
      - MYSQL_ROOT_PASSWORD=tlrtcfile
      #设置数据库
      - MYSQL_DATABASE=webchat
      #设置用户
      - MYSQL_USER=tlrtcfile
      #设置用户密码
      - MYSQL_PASSWORD=tlrtcfile
    #ports:
    #  - 3306:3306
    volumes:
      - ./data/db:/var/lib/mysql
      - ./data/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./data/log:/var/log/mysql
      - ./data/init.sql:/docker-entrypoint-initdb.d/init.sql

  #coturn服务
  coturn:
    profiles: ['http','https']
    image: iamtsm/tl-rtc-file-coturn
    container_name: tl-rtc-file-coturn
    ports:
      - "3478:3478/udp"
      - "3478:3478/tcp"
    volumes:
      - ./coturn/turnserver-with-secret-user.conf:/etc/turnserver.conf

env.txtdocker-compose.yml 放入根目录

一键启动

然后执行下面的命令

# 进入 tlrtcfile 目录
cd /volume1/docker/tlrtcfile

# 以 http 方式一键启动
docker-compose --profile=http up -d

# 以 https 方式一键启动
docker-compose --profile=https up -d

运行

如果是以 http 模式启动的,在浏览器中输入 http://群晖IP:9092 就能看到主界面

如果是 https 模式启动的,在浏览器中输入 https://群晖IP:9092 会看到提示

高级,选择继续前往

之后的操作和功能都是一样的

点左下角的 创建/加入房间

默认会生成一串数字,但是并不能用来做房间号

所以需要手动改为字母,然后再次点左下角的 创建/加入房间

加入成功

另一方输入同样的房间号,加入到同一个房间

双方可以聊天

也可发文件

选择需要传递的文件,点 一键发送

接收端会有提示

点开能看到详情

可惜其他功能不能用,可能需要 捐赠版 才行吧

遗留问题

刷新页面会显示 系统错误

但是似乎并不影响发消息和发文件,因此也就不去深究了,先这样吧

参考文档

tl-open-source/tl-rtc-file: WebRTC P2P online web media streaming tool (for files, video, screen, live streaming, text) with management and statistical monitoring capabilities.
地址:https://github.com/tl-open-source/tl-rtc-file

tl-rtc-file
地址:https://im.iamtsm.cn/

tl-rtc-file-使用手册 · tl-rtc-file
地址:https://im.iamtsm.cn/document/

tl-rtc-file-website
地址:https://im.iamtsm.cn/website/index.html

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 13:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 13:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 13:12:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 13:12:02       20 阅读

热门阅读

  1. AES加密、解密工具类

    2024-06-12 13:12:02       11 阅读
  2. Linux网络设置

    2024-06-12 13:12:02       10 阅读
  3. Android面试题汇总-Jetpack组件

    2024-06-12 13:12:02       12 阅读
  4. 前端的强缓存和协商缓存

    2024-06-12 13:12:02       8 阅读
  5. ffmpeg的部署踩坑及简单使用方式

    2024-06-12 13:12:02       8 阅读
  6. win10下 mysql8.0.37.0 msi版本安装时出现的问题

    2024-06-12 13:12:02       7 阅读
  7. windows下安装IntelliJIDEA

    2024-06-12 13:12:02       9 阅读
  8. 【实用技巧】Unity中的Scrollbar组件的实用技巧

    2024-06-12 13:12:02       7 阅读