搭建 Jamulus 服务器实现乐队在线排练

2024年9月25日 1609点热度 2人点赞 0条评论

最近和伙伴一起调研并试用了 Jamulus,体验丝滑。从此足不出户,就可以一起写段子、Jam 和排练了。

Jamulus 介绍

Jamulus 让您的朋友、乐队或您在网上找到的任何人一起演奏、排练或即兴演奏。用普通宽带连接上提供高品质、低延迟的声音,可以轻松地远程及时地一起演奏。

Jamulus 附带了一个类似 “大厅” 的目录服务器,甚至可以根据流派找到公共服务器,加入并和陌生人一起 jam。

最主要的是,Jamulus 是 GPL 许可的开放软件!怎么会有人不喜欢 self-hosted 的服务呢。

本文主要是介绍私有服务器的搭建方式和体验分享。

服务端搭建

Jamulus 提供了 Windows、Linux、MacOS 的支持。为了保证远距离的朋友每个人都能开心低延迟地 jam,笔者建议搭建公网服务器。

经过笔者试用,随意选择公有云的最低实例机器即可。最重要的是,服务器要距离每个乐手尽量近。

无 GUI 的安装过程主要主要参考 https://jamulus.io/zh-CN/wiki/Running-a-Server

本文以 Debian/Ubuntu 发行版为例

1 下载脚本

 curl https://raw.githubusercontent.com/jamulussoftware/jamulus/main/linux/setup_repo.sh > setup_repo.sh

2 给与可执行权限

 chmod +x setup_repo.sh

3 运行脚本安装服务器

 sudo ./setup_repo.sh && sudo apt install jamulus-headless

4 启用服务

 sudo systemctl enable jamulus-headless

5 编辑启动选项

 sudo systemctl edit --full jamulus-headless

完整的启动命令参考
Jamulus 启动参数

笔者的启动参数如下

root@iZbp16e6r7t8sikqsh1trpZ:~# cat /etc/systemd/system/jamulus-headless.service 
[Unit]
Description=Jamulus headless server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
User=jamulus
Group=nogroup
NoNewPrivileges=true
ProtectSystem=true
ProtectHome=true
Nice=-20
IOSchedulingClass=realtime
IOSchedulingPriority=0

#### Change this to publish this server, set genre, location and other parameters.
#### See https://jamulus.io/wiki/Command-Line-Options ####
ExecStart=/bin/sh -c 'exec /usr/bin/jamulus-headless -s -n -f -T'

Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=inherit
SyslogIdentifier=jamulus

[Install]
WantedBy=multi-user.target

备注: 在默认基础上增加了

  • -F 启动小型网络缓冲区
  • -T 启用多线程支持

有兴趣的读者可以研究下,甚至可以自动录音、配置 html 格式的欢迎公告等。

注意:如果你使用的是公有云,记得开放 UDP 端口 22124

6 重新加载 systemd 并启动服务器

 sudo systemctl daemon-reload && sudo systemctl restart jamulus-headless

接入设备

笔者使用的是 Windows 平台客户端。理论上本地的 asio 设备都可以接入。需要注意的是,笔者发现只能接入 48Khz 采样率的 asio 驱动。强行 44.1Khz48Khz 可能导致缓冲区变大,声音延迟。

如果你有附带 asio 驱动的声卡是最好不过的。否则可能需要 asio4all 或者 FlexASIO 等通用 asio 设备。

笔者使用的是 Focusrite 2i2 Gen3,是完全没有问题的。

Focusrite 的声卡在海鲜市场上保有量巨大,价格非常实惠。

实际体验

Jamulus 运行的非常丝滑。为了延迟,音质码率可能不会太高。笔者和服务器的 Ping 为 30ms,在 Jamulus 监听自己声音延迟为 50ms,是完全可以接受的,几乎感受不到延迟。

笔者的开放了位于杭州的公益服务器给大家使用,希望您和伙伴能一起玩得开心。

SPtuan

团子最大的愿望是度过平静的时光。 当前从事分布式存储研发工作。

0 0 votes
文章评分
Subscribe
提醒
guest

0 评论
最新
最旧 得票最多
Inline Feedbacks
View all comments