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

news2024/12/24 1:01:11

在这里插入图片描述

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


本文软件是朋友 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Anconda安装

参考: centos7篇---安装anaconda_centos7安装anaconda-CSDN博客 CentOS 7 上安装 Anaconda_centos安装conda-CSDN博客 CentOS7 安装Anaconda 的步骤_centos7安装anaconda-CSDN博客 centos7 如何安装与使用 Anaconda - 码农教程 下载 wget命令 wget https://repo.anaconda…

Flutter鸿蒙终端一体化-天下一统

在前面的文章中,我们了解了如何使用FlutterPage来创建Flutter容器。 Flutter鸿蒙终端一体化-混沌初开 Flutter鸿蒙终端一体化-珠联璧合 语雀 但更多的时候,我们需要的是一种类似FlutterFragment的方式来进行引用,可喜的是,鸿蒙…

稳定性测试要点+性能监控关键指标分析

前言 1、稳定性测试的要点 1)长时间的以正常的业务负载进行运行(最低为用户实际使用时的负载量,如果用户实际负载量低于最优负载量,也可以使用最优负载量) 2)稳定性的测试数据(用户实际使用负…

文献解读-农业系列-第八期|《有害突变在多倍体棉花中积累速度快于二倍体棉花,且在亚基因组间不平衡》

关键词:基因组变异检测;全基因组测序;基因组多倍体化; 文献简介 标题(英文):Deleterious Mutations Accumulate Faster in Allopolyploid Than Diploid Cotton (Gossypium) and Unequally betw…

【笔记】深度学习入门

神经网络基础 计算机视觉 1.1 人工智能的本质——线性模型 ykxb k为权重,b为偏置 像素点有323233072个任务点 所以权重有3072个,假设有10组类别,注意权重是一个矩阵 1.2 模型更新方法 权重一开始是随机的 权重和损失值,尝试…

进口电动对夹式硬密封蝶阀的特点-美国品牌

进口电动对夹式硬密封蝶阀的特点可以归纳如下: 一、结构特点 对夹式设计:采用对夹式连接,无需法兰和螺栓,安装简便快捷,降低了安装成本和空间占用。三偏心结构:阀座与蝶板之间采用三偏心设计,…

外汇天眼:Equals集团发布战略评估通知:MDP不再考虑收购提议

Equals Group plc (LON)今天发布了一份关于其战略评估的通知。 Equals公司不再与Madison Dearborn Partners, LLC (MDP)就公司的收购提议进行讨论。MDP因此发布了一份声明,确认其不打算为公司提出收购提议。 然而,MDP与其投资组合公司MoneyGram Interna…

Codeforces Round 950 (Div. 3) A~F

A.Problem Generator(遍历) 题意: 弗拉德计划在下个月举行 m m m轮比赛。每轮比赛应包含一个难度为"A"、“B”、“C”、“D”、“E”、"F"和"G"的问题。 弗拉德已经有了一个 n n n个问题的问题库&#xff0…

开发文档 RAG 的 GPTs 如何更高效地帮你 AI 编程?

(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费) 某些看似门槛很高的专业技能,在 AI 冲击下居然那么脆弱。 需求 自从有了ChatGPT,我拿它编程很久了。今年春季学期的《深度学习》…

计算机信息安全技术课后习题答案

计算机信息安全技术课后习题答案 计算机信息安全技术(第2版)付永刚 部分习题答案 第一章 计算机信息安全技术概述 选择题 关于访问控制服务的描述中,正确的是( A ) A. 可控制用户访问网络资源 B.可识别发送方的真实身…

STM32无法烧写程序的故障排除

如果你在使用STM32微控制器时遇到无法烧写程序的问题,可以按以下步骤进行故障排除: 1. 确认硬件连接 检查电源:确保STM32板子正确供电。调试器连接:确认ST-LINK调试器或其他编程工具与STM32开发板的连接无误,尤其是S…

将web项目打包成electron桌面端教程(二)vue3+vite+ts

说明:我用的demo项目是vue3vitets,如果是vue2/cli就不用往下看啦,建议找找其他教程哦~下依赖npm下载不下来的,基本换成cnpm/pnpm/yarn就可以了 一、项目准备 1、自己新创建一个,这里就不过多赘述了 2、将需要打包成…

windows上修改Podman的镜像配置源加速

目录 前言解决办法1. 打开window的Powershell 2. 修改registries.conf3. 重启podman即可 扩展内容1. 国内镜像源地址2. 阿里加速地址 前言 今天在电脑上准备通过podman安装mysql,结果执行安装命令后,网络不通没法下载镜像。 解决办法 将默认镜像源修改…

AI 大模型训练中,通常会采用哪些方法?(输入篇)

大家好 某种程度来说大模型训练的核心算法就是300到400行代码,如果真正理解了并不难。下面我将带大家分析常规大模型训练有几个阶段以及在训练中一般会用到哪些方法。 由上图可以看出,大模型训练主要有四个阶段:预训练、有监督微调、奖励建模…

C++11:可变参数模板 emplace_back

可变参数模板 基本概念&#xff1a;C 的参数模板是 C11 引入的特性&#xff0c;它允许模板接受可变数量的参数 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args... args&#xff0c;这个参数包中可以包含0到N个模板参数。 template <…

Vue21-列表排序

一、需求 二、解决方式 <body><div id"root"><h2>人员列表</h2><input type"text" placeholder"请输入" v-model"keyword"><button click"sortType 1">年龄升序</button><b…

uniapp地图导航

我们只需要给图标加一个点击事件 我这里的数据都是动态的&#xff0c;想测试的朋友可以写固定值 然后跳转之后首先会调到选择软件导航 点击导航之后会显示使用哪个app 最后我们选择之后将会直接跳转到app进行导航

spring boot3登录开发-邮件验证码接口实现

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 上文衔接 接口设计与实现 1.接口分析 2.实现思路 3.代码实现 1.定义验证码短信HTML模板枚举类 2.定义验证码业务接口 3. 验证码业务接口实现 4.控制层代码 4.测试 写…

带你走进信息安全软件架构

汽车行业网联化以及网络安全风险日益突出&#xff0c;汽车网络攻击&#xff0c;漏洞日益增加&#xff0c;危害防不胜防。汽车信息安全逐步受到重视&#xff0c;网络安全相关法律法规陆续颁布。在这样的背景下&#xff0c;AUTOSAR 组织也发布了有关信息安全模块和 Crypto Stack(…

【ARM Coresight Debug 系列 -- ARMv8/v9 软件实现断点地址设置】

请阅读【嵌入式开发学习必备专栏 】 文章目录 ARMv8/v9 软件设置断点地址断点地址软件配置流程代码实现 ARMv8/v9 软件设置断点地址 在ARMv8/9架构中&#xff0c;可以通过寄存器 DBGBVR0_EL1 设置断点。这个寄存器是一系列调试断点值寄存器中的第一个DBGBVRn_EL1&#xff0c;其…