livekit 简单上手教程
创始人
2024-02-03 14:23:01
0

什么是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

相关内容

热门资讯

升入五年级所想的作文300字... 升入五年级所想的作文300字 篇一升入五年级所想的作文升入五年级是一个新的开始,我对即将到来的学习生...
我的心爱之物五年级作文400... 我的心爱之物五年级作文400字 篇一:我的小狗我有一只非常可爱的小狗,它是我最心爱的宠物。我给它取名...
五年级下册第三单元作文500... 五年级下册第三单元作文500字 篇一:我喜欢的动物我喜欢的动物是狗。它们是我们人类最忠诚的朋友,也是...
五年级三好作文11篇【推荐3... 五年级三好作文11篇 篇一勇敢做自己在我身边有一个同学,他是我们班的一匹黑马,他就是小明。小明是一个...
未来的车五年级作文(通用6篇... 未来的车五年级作文 篇一未来的车五年级作文随着科技的不断发展,未来的车辆将会有许多令人兴奋的变化。在...
五年级多彩的春天作文500字... 五年级多彩的春天作文500字 篇一春天的脚步悄然来临,五年级的同学们迎来了一个多彩的春天。在这个季节...
无言五年级作文(优选6篇) 无言五年级作文 篇一如今的社会,信息爆炸,人们每天都被各种各样的信息所包围。我们通过电视、手机、平板...
日出即景五年级作文500字(... 日出即景五年级作文500字 篇一日出即景每天早上,当第一缕阳光洒在大地上,我总是迫不及待地跑到窗前,...
小学生五年级作文700字(优... 小学生五年级作文700字 篇一我喜欢的动物——熊猫熊猫是我最喜欢的动物之一。它们圆圆的脸上有两个黑黑...
五年级写人作文:我的爸爸【推... 五年级写人作文:我的爸爸 篇一我的爸爸是一个非常了不起的人。他有着一双睿智的眼睛,一头乌黑的头发和一...
小学五年级作文刺激的漂流【精... 小学五年级作文刺激的漂流 篇一在一个阳光明媚的夏天,我和爸爸妈妈一起去参加了一次刺激的漂流活动。这是...
那一次,我成功了作文600字... 篇一:那一次,我成功了那一次,我成功了。这是一次让我终身难忘的经历,它让我明白了成功的含义和背后的辛...
我的补习班小学作文【最新3篇... 我的补习班小学作文 篇一:我的补习班经历我是一个小学生,在上小学四年级的时候,我开始辅导班的学习。我...
我要当奥运小冠军五年级作文(... 我要当奥运小冠军五年级作文 篇一我要当奥运小冠军我是一个五年级的学生,我有一个梦想,那就是成为一名奥...
我是小小推销员作文600字五... 篇一:我是小小推销员我是小小推销员,我喜欢帮助别人解决问题,我喜欢和别人交流,我喜欢给别人推荐好的产...
观《安源儿童团》有感(优质3... 观《安源儿童团》有感 篇一安源儿童团是一部非常温暖而感人的电视剧,通过描绘一群可爱的儿童在困境中团结...
五年级下册第五单元作文500... 五年级下册第五单元作文500字 篇一我的暑假计划暑假即将来临,我已经制定好了一个丰富多彩的暑假计划。...
心中的小英雄五年级作文(实用... 心中的小英雄五年级作文 篇一我心中的小英雄是我的爸爸。虽然他不是一个超级英雄,但他在我的生活中扮演着...
寻根作文五年级【优选6篇】 寻根作文五年级 篇一探寻祖先的足迹我是一名五年级的学生,最近在学校里进行了一次寻根活动。这是一次非常...
游上海迪士尼作文 游上海迪士尼作文(精选26篇)  在平平淡淡的学习、工作、生活中,大家都经常看到作文的身影吧,作文是...