Guacamole远程连接与屏幕录制Docker版

拉取镜像

docker pull  guacamole/guacamole  
docker pull  guacamole/guacd
docker pull  mysql/mysql-server

初始化数据库

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
docker run --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:5.7
docker cp  initdb.sql mysql:/usr/local
docker exec -it mysql bash

mysql -u root -p123456
CREATE DATABASE guacamole; 
CREATE USER 'guacamole'@'%' IDENTIFIED BY 'guacamole';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guacamole'@'%';
use guacamole;
source /usr/local/initdb.sql;
FLUSH PRIVILEGES;
quit;
exit;

前期准备工作

# 创建程序主目录
mkdir -p /extdatas/guacamole
# 创建插件目录
mkdir -p /extdatas/guacamole/extensions
# 创建录像目录
mkdir -p /extdatas/guacamole/recordings
# 下载快速链接插件
curl -O https://archive.apache.org/dist/guacamole/1.5.1/binary/guacamole-auth-quickconnect-1.5.1.tar.gz
# 下载录像存储插件
curl -O https://archive.apache.org/dist/guacamole/1.5.1/binary/guacamole-history-recording-storage-1.5.1.tar.gz
# 解压插件
tar -zxvf guacamole-auth-quickconnect-1.5.1.tar.gz
tar -zxvf guacamole-history-recording-storage-1.5.1.tar.gz
# 移动插件至插件目录
mv guacamole-auth-quickconnect-1.5.1/guacamole-auth-quickconnect-1.5.1.jar /extdatas/guacamole/extensions/
mv guacamole-history-recording-storage-1.5.1/guacamole-history-recording-storage-1.5.1.jar /extdatas/guacamole/extensions/

创建路径后,必须修改其权限和所有权,以使_以下两项均成立_:

  • guacd 服务可以写入该目录。
  • Servlet 容器(通常是 Tomcat)可以从目录中读取数据,也可以读取放置在该目录中的任何文件。

最简单的方法是确保:

  1. 该目录由运行 guacd 服务的用户和 运行 Tomcat 服务的_组拥有。_
  2. 该目录具有用户的读/写/执行权限(以便 guacd 可以在此处写入),以及组的读/执行权限(以便 Tomcat 可以在此处读取,并且这样放置在此的任何文件都自动拥有Tomcat 用户组)。
# 配置插件目录所有者 1001为guacamole容器内的guacamole用户UID和GID
chown -R 1001.1001 /extdatas/guacamole/extensions
# 配置插件目录权限
chmod -R 644 /extdatas/guacamole/extensions
# 配置录像目录所有者
# 1000为guacd容器内的guacd用户UID
# 1001为guacamole容器内的guacamole用户组GID
chown 1000.1001 /extdatas/guacamole/recordings
# 配置插件目录权限
chmod 2750 /extdatas/guacamole/recordings

启动Guacd

docker run --name some-guacd \
 -p 4822:4822 --restart=always \
 -v /extdatas/guacamole/recordings:/var/lib/guacamole/recordings \
 -d guacamole/guacd

启动Guacamole

docker run --name some-guacamole -d \
	-p 38080:8080  \
	-e EXTENSION_PRIORITY=mysql -e MYSQL_HOSTNAME=mysql \
	-e MYSQL_DATABASE='guacamole' \
	-e MYSQL_USER='guacamole' -e MYSQL_PASSWORD='guacamole' \
	-v /extdatas/guacamole/recordings:/var/lib/guacamole/recordings \
	-v /extdatas/guacamole/extensions:/etc/guacamole/extensions \
	-e GUACAMOLE_HOME=/etc/guacamole \
	-e GUACD_HOSTNAME=some-guacd \
    -e GUACD_PORT=4822 \
	--user root \
	guacamole/guacamole

嵌入Springboot中的Guacamole调用录像功能

在WebSocketTunnel的createTunnel方法中加入

  String fileName = getNowTime()+ ".guac";//文件名
        String outputFilePath = "/var/lib/guacamole/recordings";
        //添加会话录制--录屏
        configuration.setParameter("recording-path", outputFilePath);
        configuration.setParameter("create-recording-path", "true");
        configuration.setParameter("recording-name", fileName);

上述代码中的outputFilePath编写的位置为Docker镜像中存储的位置,在宿主机中的位置对应的镜像创建时映射的位置。

录像文件文件转化为MP4文件

启动镜像

docker pull litios/guacenc
docker run -v /extdatas/guacamole/recordings/:/recordings -d -it --name guacenc litios/guacenc

.guac文件转换为.m4v

docker exec -it guacenc guacenc -f /recordings/20230831124552.guac

将.m4v转换为.mp4

docker exec -it guacenc ffmpeg -i /recordings/20230831124552.guac.m4v /recordings/20230831124552.guac.mp4

https://hub.docker.com/r/litios/guacenc
使用上述方法得到的mp4文件清晰度可能不够

对单一文件进行编码

docker exec -it guacenc guacenc -s 1280x720 -r 20000000 -f /recordings/20230831124552.guac

guacenc -s 1280x720 -r 20000000 -f 文件名称

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值