Show HN:Beatsync – 多设备完美音频同步
Show HN: Beatsync – perfect audio sync across multiple devices

原始链接: https://github.com/freeman-jiang/beatsync

Beatsync是一款专注于多设备同步播放的网页音频播放器。它旨在使用受NTP启发的时序机制实现毫秒级的精确同步,支持现代浏览器(推荐使用Chrome)。其功能包括通过虚拟收听源进行空间音频控制,以及具有流畅加载和状态指示器的精致用户界面。它可以使用基于Bun的服务器和Next.js前端进行自托管。 运行它需要在`apps/client`目录下配置一个`.env`文件,其中`NEXT_PUBLIC_API_URL=http://localhost:8080`和`NEXT_PUBLIC_WS_URL=ws://localhost:8080/ws`。使用`bun install`和`bun dev`启动客户端(端口3000)和服务器(端口8080)。 **警告:**Beatsync尚处于早期开发阶段,仅完全支持桌面版Chrome。移动设备同步功能尚处于实验阶段。该项目使用Turborepo,并通过`packages/shared`目录在客户端和服务器之间共享代码。

Freemanjiang 创建了 Beatsync,一款开源的、基于浏览器的音频播放器,可在多个设备之间实现毫秒级的音频同步。它无需额外硬件即可将任何设备集合变成环绕声系统。受 NTP 启发,它使用 WebSockets 进行时钟同步,并使用 Web Audio API 实现低延迟。用户可以将设备排列在虚拟网格上以模拟空间音频,并根据与虚拟声源的距离调整音量。 该项目主要设计用于具有空间音频控制功能的面对面群体收听,但它也可以在互联网上工作,允许远程用户之间进行同步收听。潜在应用包括具有共享收听室的网络广播。 其他用户讨论了局限性和未来的功能:网络延迟影响完美同步的保证,声速和网络延迟问题。建议包括支持静态配置,根据设备方向调整 5.1 声道,自动确定空间中的设备位置,一个点歌机前端,以及考虑电缆延迟。创建者打算与 Apple Music 和 Spotify 集成,并添加周期性重新同步以应对时钟漂移。

原文

Beatsync is a high-precision web audio player built for multi-device playback.

beatsync-demo.mov
  • Millisecond-accurate synchronization: Abstracts NTP-inspired time synchronization primitives to achieve a high degree of accuracy
  • Cross-platform: Works on any device with a modern browser (Chrome recommended for best performance)
  • Spatial audio: Allows controlling device volumes through a virtual listening source for interesting sonic effects
  • Polished interface: Smooth loading states, status indicators, and all UI elements come built-in
  • Self-hostable: Run your own instance with a few commands

Warning

Beatsync is in early development. Currently, only desktop Chrome browsers are fully supported.

Mobile device synchronization is experimental and may be unstable.

This project uses Turborepo.

Fill in the .env file in apps/client with the following:

NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_WS_URL=ws://localhost:8080/ws

Run the following commands to start the server and client:

bun install          # installs once for all workspaces
bun dev              # starts both client (:3000) and server (:8080)
Directory Purpose
apps/server Bun HTTP + WebSocket server
apps/client Next.js frontend with Tailwind & Shadcn/ui
packages/shared Type-safe schemas and functions shared between client & server
联系我们 contact @ memedata.com