文章

2024-03-14-使用LiveKit搭建多人视频语音服务器

最近看到一个开源的库livekit,使用Golang编写,在WebRTC上面进行封装,包括了TURN等相关组件,无需另起服务了。于是试了一试,记录下来。

一、下载服务端并启动

服务端的代码其实包括了各种pc平台,我这边使用的是win平台,可以在这个下载地址自己选择对应的平台。本文最新版本号为: 1.5.3

二、启动服务端

由于本地测试启动和生产环境启动的方式大不一样,这里只是调研,所以在本地测试启动。

1
2
# cmd进入到根目录,运行下面命令启动服务端
livekit-server.exe --dev --bind 0.0.0.0

注意点:

  • 上述启动的只是一个dev模式,本模式默认自动设置了key=devkeysecret=secret,这两个参数在后面客户端要使用,可以先记录下来。
  • 对应的bind参数表示所有局域网内的设备都可以访问该服务器,如果不加,就会造成你用其它ip设备访问本服务器会失败。

启动成功日志输出如下:

1
2
3
4
5
6
7
C:\dev\livekit_1.5.3_windows_amd64>livekit-server.exe --dev --bind 0.0.0.0
2024-03-14T10:47:24.812+0800    INFO    livekit server/main.go:208      starting in development mode
2024-03-14T10:47:24.840+0800    INFO    livekit server/main.go:211      no keys provided, using placeholder keys       {"API Key": "devkey", "API Secret": "secret"}
2024-03-14T10:47:24.840+0800    INFO    livekit routing/interfaces.go:110       using single-node routing
2024-03-14T10:47:25.013+0800    INFO    livekit service/server.go:242   starting LiveKit server {"portHttp": 7880, "nodeID": "ND_9YBeMzP8WM78", "nodeIP": "169.254.221.182", "version": "1.5.3", "bindAddresses": ["0.0.0.0"], "rtc.portTCP": 7881, "rtc.portUDP": {"Start":7882,"End":0}}
2024-03-14T10:47:25.013+0800    INFO    livekit service/server.go:244   Windows detected, capacity management is unavailable
2024-03-14T10:47:25.013+0800    DEBUG   livekit service/signal.go:122   starting relay signal server    {"topic": "ND_9YBeMzP8WM78"}

三、准备客户端token

这一步其实包含了好几个步骤:

  • 1、创建用户信息并生成对应的token
  • 2、创建视频房间,该房间可以加n个人。

这里需要使用livekit-cli这个客户端工具来进行操作,我们可以直接去下载地址进行下载。下载成功后使用如下命令进行生成:

1
2
3
4
5
# 这里用到了key和secret,另外room是房间名字,identity是用户唯一标识符
livekit-cli.exe create-token \
    --api-key devkey --api-secret secret \
    --join --room my-first-room --identity user1 \
    --valid-for 24h

执行后可以获得对应的access token:

1
2
3
4
5
6
7
8
9
C:\Users\13043\Downloads\livekit-cli_1.4.0_windows_amd64>livekit-cli create-token --api-key devkey --api-secret secret --join --room my-first-room --identity user2 --valid-for 24h
valid for (mins):  1440
token grants
{
  "roomJoin": true,
  "room": "my-first-room"
}

access token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTA0MTIxODcsImlzcyI6ImRldmtleSIsIm5hbWUiOiJ1c2VyMiIsIm5iZiI6MTcxMDMyNTc4Nywic3ViIjoidXNlcjIiLCJ2aWRlbyI6eyJyb29tIjoibXktZmlyc3Qtcm9vbSIsInJvb21Kb2luIjp0cnVlfX0.JqzzGr28Bqu5sJma5n5HjH0O734InotTOTGpDLARuEQ

四、使用对应的客户端进行验证

可以去下载Flutter编写的Demo包,安装后直接输入上面的token和secret即可进入到对应的房间,也可以使用官方提供的webDemo进行验证。输入对应的ws地址,如本机访问的话就输入:ws://127.0.0.1:7880,然后输入上面生成的Token即可。需要注意的是没有摄像头的时候不能出现视频。

五、总结

项目其实配置还算简单,体验也比较好,但是比较占用带宽,如果要部署云服务器需要单独的做特别处理,如wss证书,代理等等,具体操作可以看看他们的官方文档

本文由作者按照 CC BY 4.0 进行授权