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

2024年9月25日 2585点热度 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.1Khz 转 48Khz 可能导致缓冲区变大,声音延迟。

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

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

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

实际体验

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

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

SPtuan

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

0 0 votes
文章评分
Subscribe
提醒
guest

0 评论
最新
最旧 得票最多