livekit 简单上手教程

什么是livekit?

livekit是一个开源的webrtc项目,基于pion实现了SFU架构的go程序。
它主要有以下几个特性:

  1. 可以水平扩展的sfu架构。
  2. 有完整的sdk程序接口供开发人员使用。
  3. 基于JWT进行身份验证,可与大部分系统进行权限集成。
  4. 内置Turn可给予tcp与udp进行数据传输通信。
  5. 一个单独的二进制文件,非常容易进行部署。
  6. 实时扬声器检测
  7. 联播、选择性订阅和其他自动带宽管理优化
  8. 用于流导出的通用出口和记录系统
  9. 元数据、审查和数据消息 API

怎么去使用?

提示:以下所有安装均在docker中进行,由于webrtc限制必须使用安全链接(https)但localhost可作为调试使用,因此以下安装环境在本地进行。

安装livekit

docker 安装请参考官方网站
第一步:生成配置文件

docker run --rm -v$PWD:/output livekit/generate --local (会在当前目录生成livekit.yaml)该文件用于配置livekit-server相关表现。

第二步:通过配置文件运行 livekit

docker run -d -p 7880:7880 -p 7881:7881 -p 7882:7882/udp -v $PWD/livekit.yaml:/livekit.yaml livekit/livekit-server --config /livekit.yaml --node-ip=127.0.0.1

第三步:验证是否成功
livekit自带了一个事例程序供本地调试使用 测试地址
在这里插入图片描述默认情况下在第二步时候会生成这个token,但是为了更好的理解livekit,我们使用它提供的服务端sdk进行token生成,由于livekit是由go开发而来,所以这里我使用go-sdk进行token生成。
提示:livekit创建房间有两种,第一个用户直接加入默认创建房间,也可以使用sdk先创建房间在加入,以下使用加入房间默认创建的方式。

  1. 代码如下
func main() {//用于连接livekit服务器的认证密钥,livekit.yaml中获取apiKey := "APISejyM9X7wYzw"apiSecret := "HjY2MvB2yGSCues28GnuhjGN4c02JtSiREL8btGwclQ"canPublish := truecanSubscribe := true//生成认证实体grant := auth.NewAccessToken(apiKey, apiSecret).AddGrant(&auth.VideoGrant{RoomJoin:     true,Room:         "测试房间",CanPublish:   &canPublish,CanSubscribe: &canSubscribe,})//设置实体对象jwt, err := grant.SetIdentity("张三").SetValidFor(time.Hour).ToJWT()if err != nil {}fmt.Println(jwt)
}

将生成的token填入测试程序如出现如下画面则livekit启动成功。
在这里插入图片描述

通过go-sdk作为会议发布者可以将(文件、流)作为数据传递到房间中。

//将文件作为发布者发布到房间host := "ws://localhost:7880"apiKey := "APISejyM9X7wYzw"apiSecret := "HjY2MvB2yGSCues28GnuhjGN4c02JtSiREL8btGwclQ"roomName := "测试房间"identity := "0012"name := "王五"roomCB := &lksdk.RoomCallback{ParticipantCallback: lksdk.ParticipantCallback{OnTrackSubscribed: trackSubscribed,},}room, err := lksdk.ConnectToRoom(host, lksdk.ConnectInfo{APIKey:              apiKey,APISecret:           apiSecret,RoomName:            roomName,ParticipantIdentity: identity,ParticipantName:     name,}, roomCB)if err != nil {fmt.Println("012", err.Error())}file := "demo1.h264"videoWidth := 960videoHeight := 720videoTrack, err2 := lksdk.NewLocalFileTrack(file,lksdk.ReaderTrackWithOnWriteComplete(func() {fmt.Println("track finished")}),)audioTrack, _ := lksdk.NewLocalFileTrack("output.ogg")if err2 != nil {fmt.Println("123", err2.Error())}_, err1 := room.LocalParticipant.PublishTrack(videoTrack, &lksdk.TrackPublicationOptions{Name:        file,VideoWidth:  videoWidth,VideoHeight: videoHeight,})room.LocalParticipant.PublishTrack(audioTrack, &lksdk.TrackPublicationOptions{Name: file,})if err1 != nil {fmt.Println("456", err1.Error())}//这里必须阻塞一下,否则无法将数据推送出去select {}
}
func trackSubscribed(track *webrtc.TrackRemote, publication *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) {fmt.Println(track.ID())
}

注意: 需要通过阻塞使流能持续推送到流媒体服务器
成功如下图:
在这里插入图片描述

通过livekit-cli客户端程序模拟会议参与者进行会议测试

第一步:docker pull livekit-cli 镜像
第二步执行以下命令

docker run -d livekit/livekit-cli load-test --url ws://172.17.0.3:7880 --api-key APISejyM9X7wYzw --api-secret HjY2MvB2yGSCues28GnuhjGN4c02JtSiREL8btGwclQ -room 测试房间 --video-publishers 50

在这里插入图片描述
注意:--url 参数来自流媒体服务容器的内网ip

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

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

相关文章

【Supervisor】Supervisor使用教程

在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式是: Copy $ nohup php cli.php & 这样能保证当前终端被关闭或者按CRTLC后,脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用Py…

learnOpenGL_07_摄像机

1、 摄像机/观察空间 以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。…

AWS助理架构师认证培训实操练习 | How to SSH using Windows

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

supervisord初体验

Supervisor是一个客户端/服务器系统,允许其用户监视和控制类似UNIX的操作系统上的许多进程。 安装 1.supervisord是python的一个库可以直接用过pip来进行安装 pip install supervisor2.如果没有pip可以在PyPi[https://pypi.org/project/supervisor/]上下载supervi…

AWS助理架构师认证培训实操练习 | IAM Policies Hands on

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS助理架构师认证培训实操练习 | IAM MFA Hands On

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS SageMaker Studio Lab免费的机器福利利用起来~

国内无法访问Google Colab,所以有时候跑Python notebook比较麻烦,得倒腾到本地,如果自己的机器(比如笔记本)性能不行的话跑起来也很痛苦 现在有了免费的羊毛,AWS SageMaker Studio Lab,国内可用…

AWS助理架构师认证培训实操练习 | IAM Roles Hands On

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

【笔记】MySQL行转列函数

GROUP_CONCAT()函数 创建表person_info,并插入数据 CREATE TABLE person_info (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) DEFAULT NULL,family varchar(100) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8;…

谷粒商城环境搭建二:开发环境统一

开发环境配置统一 Maven配置 查看maven信息 修改配置文件&#xff1a;apache-maven-3.3.9\conf\settings.xml# 配置阿里云镜像 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name&…

htc hd2连上wifi却显示无法连接服务器,HTC HD2线刷官方ROM疑难问题解答

HTC HD2线刷官方ROM更新实用程序 (RUU)需要注意哪些问题呢&#xff1f;安致小编在这里为大家整理这篇 《HTC HD2线刷官方ROM疑难问题解答》&#xff0c;希望对大家线刷官方RUU有所帮助。 开始准备: 运行 ROM 更新实用程序 (RUU) 前&#xff0c;请确认下列事项&#xff1a; 1.An…

提取官方原生(RUU/.exe)ROM刷机文件

官方ROM提取刷机文件结构主要为&#xff1a; android-info.txt&#xff0c;boot.img&#xff0c;hboot_*.nb0&#xff0c;radio.img&#xff0c;rcdata.img&#xff0c;recovery.img&#xff0c;splash1.nb0&#xff0c;system.img&#xff0c;userdata.img 官方(.exe)ROM提取过…

HTC One V卡刷RUU准备工作 图文教程详解

为什么80%的码农都做不了架构师&#xff1f;>>> HTC One V卡刷RUU准备工作 图文教程详解 相对于线刷&#xff0c;HTC One V卡刷RUU更为方便快捷&#xff0c;不会和普通RUU那样这么容易出错&#xff0c;不必害怕刷机中发生断电等意外事故&#xff0c;也可以重启或者…

Elasticsearch-8.x.x安装启动后测试报错[WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU]

浏览器输入 IP:端口号后报错。&#xff08;*默认端口号9200&#xff0c;自定义端口号在elasticsearch.yml文件里http.port: 自定义端口&#xff09; [WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU] received plaintext http traffic on an https c…

HTC ONE X刷ruu的详细刷机教程

一&#xff1a;准备工作&#xff1a; 1&#xff1a;手机必须能用usb数据线电脑&#xff0c;因为是线刷&#xff0c;所以必须要有数据线 2&#xff1a;检查一下电脑&#xff0c;确保电脑上已经安装htc one m7的usb驱动了 2&#xff1a;下载ruu刷机包&#xff0c;下载适合一款…

测试基础|一文了解,这5种不同类别的软件测试工具都有啥用

介绍&#xff1a;对于任何希望确保其数字产品的质量和性能的企业来说&#xff0c;软件测试工具都是宝贵的资产。从桌面应用程序到Web平台&#xff0c;软件测试工具提供了一整套功能&#xff0c;可帮助开发人员在潜在问题成为代价高昂的问题之前识别并解决它们。彻底的测试变得至…

【机器人学】3-RUU-delta并联机器人正运动学、逆运动学和微分运动学

文章目录 串联和并联机器人对比delta机器人逆运动学正运动学微分运动学工作空间 串联和并联机器人对比 串联机器人和并联机器人各有优缺点。 串联机器人 优点 工作空间大&#xff1b;可实现的姿态多&#xff1b; 缺点 能量效率低&#xff0c;加速性差&#xff1b;末端负载小…

htc e9刷android6,HTC E9+刷机教程_HTC ONE E9+刷zip格式的ruu包的方法

说了有关HTC ONE E9的官方ruu包了&#xff0c;说的是卡刷形式了&#xff0c;那就是来说说咱们的这个卡刷形式的rom包怎么刷入手机吧&#xff0c;这个也不复杂&#xff0c;也不需要借助于第三方的刷机软件就可以操作了&#xff0c;是利用手机自带的升级系统来进行升级的&#xf…

htc x920e刷android7.0,HTC X920E (Butterfly) 刷回官方RUU固件教程

其实htc手机的线刷刷机是最容易的了&#xff0c;因为htc的官方包就是exe格式的&#xff0c;直接可以下载下来运行刷入就可以了&#xff0c;下面来说说HTC X920E/Droid DNA/Butterfly的具体的刷ruu的教程吧&#xff0c;这个教程也可以用来救砖用&#xff0c;如果你的手机刷机失败…

htc d826 android 6,HTC 826官方ruu固件rom包_HTC Desire 826刷机包和升级包

今天看到论坛里已经有机友分享过HTC Desire 826的固件包了,也就是大家常说ruu包,现在咱们的这个手机多数是通过ruu包来进行升级的,没有什么太复杂的,今天在这里先分享的卡刷格式的ruu包,因为线刷的ruu包还没出来,等以后出来了再给大家分享出来,在这里会一块儿更新的,不…