关于LiveKit 。
关于LiveKit 是因为最近在做视频客服相关的功能,在去年使用过 kurento,后来因为一个模板录制的需求一直无法实现,在无意间发现了LiveKit 且官方自带模板录制功能,且支持自定义模板。但是LiveKit 技术先对来说比较新,资料先对来说比较少,在这里记录下我本地部署遇到的问题。
部署
参考官方文档: https://docs.livekit.io/home/self-hosting/local/
执行以下命令会自动安装完成
curl -sSL https://get.livekit.io | bash
安装完成之后就是启动
在这之前我我们先准备下配置文件 livekit.yaml
# 服务端口
port: 7880
rtc:
udp_port: 7882
tcp_port: 7881
# rtc 是使用内网 所以 用false
use_external_ip: false
# node_ip 部署服务器ip
node_ip: 10.63.15.1
enable_loopback_candidate: false
keys:
# apiKey: secret
2yJimTMFeF9h15PHEv: Mvi9ZgqGJ3LqwEAcTVvWse3conEyQt92FEKTVERzd
logging:
json: false
level: info
redis:
# reids 地址
address: 10.63.15.2:6379
db: 0
执行下面命令进行启动
livekit-server --config ./livekit.yaml --node-ip=10.63.15.1 --bind 0.0.0.0
验证部署情况
直接在浏览器直接 http://10.63.15.1:7880 返回ok 那么说明部署成功了。
开始使用
我用java 些一个例子,首先我们需要 token
<dependency>
<groupId>io.livekit</groupId>
<artifactId>livekit-server</artifactId>
<version>0.6.1</version>
</dependency>
生成token
public static String createToken(String userId,String userName) {
// 用户ID
String roomName = UUID.randomUUID().toString();
String apiKey = "2yJimTMFeF9h15PHEv";
String apiSecret = "Mvi9ZgqGJ3LqwEAcTVvWse3conEyQt92FEKTVERzd";
AccessToken token = new AccessToken(apiKey, apiSecret);
token.setName(userName);
token.setIdentity(userId);
token.setMetadata("metadata");
// 令牌的过期时间(可能)
token.setExpiration(new Date(System.currentTimeMillis() + 1000L * 60 * 60 * 24 * 365));
// token所拥有的权限
List<String> list = new ArrayList<>();
// 摄像头
list.add("camera");
// 麦克风
list.add("microphone");
list.add("screen_share"); //屏幕共享
list.add("screen_share_audio"); //屏幕共享音频
CanPublishSources canPublishSources = new CanPublishSources(list);
// 配置解释:https://docs.livekit.io/realtime/concepts/authentication/
token.addGrants(new RoomJoin(true), new RoomName(roomName), canPublishSources);
return token.toJwt();
}
接下来,我们进行会议:
在这之前,我们需要部署nginx,然后把livekit 的服务部署 https ,因为浏览器处于安全考虑,只有https 才能使用 摄像头和麦克风。,关于怎么部署和代理,请自行百度。
liveKitUrl : 就是我们使用nginx 配置好 https 后的地址,我的地址为 wss://10.63.15.1:7443
token: 就是我们用java生成的token : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0a2FuIiwibWV0YWRhdGEiOiJtZXRhZGF0YSIsImlzcyI6IjJ5SmltVE1GZUY5aDE1UEhFdiIsIm5hbWUiOiJ0a2FuIiwidmlkZW8iOnsicm9vbUpvaW4iOnRydWUsInJvb20iOiJmNWFlYWJjMy0xY2ZkLTRmODAtOTA0Mi1lYmI3YTAwMjMwZmUiLCJjYW5QdWJsaXNoU291cmNlcyI6WyJjYW1lcmEiLCJtaWNyb3Bob25lIiwic2NyZWVuX3NoYXJlIiwic2NyZWVuX3NoYXJlX2F1ZGlvIl19LCJleHAiOjE3NTM0MjUxNzIsImp0aSI6InRrYW4ifQ.9MVnknxHdfgUu2ZqQSehkjXzOlTnCxUzRP9kY40yJ4M
浏览器访问我们就可以进入会议啦 https://meet.livekit.io/custom?liveKitUrl=wss://10.63.15.1:7443&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0a2FuIiwibWV0YWRhdGEiOiJtZXRhZGF0YSIsImlzcyI6IjJ5SmltVE1GZUY5aDE1UEhFdiIsIm5hbWUiOiJ0a2FuIiwidmlkZW8iOnsicm9vbUpvaW4iOnRydWUsInJvb20iOiJmNWFlYWJjMy0xY2ZkLTRmODAtOTA0Mi1lYmI3YTAwMjMwZmUiLCJjYW5QdWJsaXNoU291cmNlcyI6WyJjYW1lcmEiLCJtaWNyb3Bob25lIiwic2NyZWVuX3NoYXJlIiwic2NyZWVuX3NoYXJlX2F1ZGlvIl19LCJleHAiOjE3NTM0MjUxNzIsImp0aSI6InRrYW4ifQ.9MVnknxHdfgUu2ZqQSehkjXzOlTnCxUzRP9kY40yJ4M
下一篇文章,我将写怎么实现通过模板进行视频录制。