프로젝트 소개

Viboplr는 Tauri 2, React, Rust로 제작된 macOS 및 Windows용 플러그인 우선 데스크톱 음악 플레이어입니다. 로컬 폴더와 원격 음악 서비스에서 오디오와 비디오를 재생하며, 오케스트레이터 역할을 합니다. 플러그인 시스템이 스트리밍 제공자, 메타데이터 서비스, 가사 데이터베이스, 이미지 소스를 연결하고, 핵심 앱은 재생, 라이브러리 관리, UI를 담당합니다. 라이브러리 관리 로컬 폴더는 진행 상황 보고와 실시간 파일 감시를 통해 백그라운드에서 스캔됩니다. Subsonic/Navidrome 컬렉션은 동일한 라이브러리로 동기화되며, 원격 컬렉션은 플러그인을 통해 연결할 수 있습니다. 로컬 트랙은 자체 포함형 호스팅 가능 음악 소스(매니페스트와 파일)로 내보낼 수 있고, 게시된 매니페스트를 컬렉션으로 구독할 수 있습니다. 메타데이터는 lofty 태그 라이브러리로 읽고 파일명 파싱을 대체 수단으로 사용하며, 검색은 SQLite FTS5로 제목, 아티스트, 앨범, 장르, 파일명 전반에서 악센트와 대소문자를 구분하지 않고 수행됩니다. 장르 메타데이터는 다대다 트랙 관계를 가진 태그로 저장됩니다. 재생 기본 엔진은 번들된 libmpv를 기반으로 한 네이티브 mpv로, 네이티브 디코딩, 갭리스 재생, 전용(비트 퍼펙트) 오디오 출력을 제공하며 두 플랫폼 모두에서 네이티브 비디오 렌더링을 지원합니다. 시스템 웹뷰를 통한 HTML5 브라우저 엔진이 자동 대체 수단으로 사용됩니다. 다른 재생 기능으로는 10밴드 이퀄라이저, ReplayGain 정규화, 최대 10초까지 설정 가능한 크로스페이드, 턴테이블 스타일 속도 제어, 드래그 앤 드롭 대기열 관리, 자동 계속 규칙, 트랙·아티스트·태그에서 생성되는 무한 라디오 방송국, 삼상 좋아요, 컴팩트한 항상 위 미니 플레이어, 비디오용 스토리보드 미리보기가 있는 파형 탐색 바가 있습니다. 뷰와 스킨 뷰에는 홈(라디오 캐러셀과 선반), 동기화된 가사와 플러그인 시각화 도구가 있는 전체 화면 Now Playing 뷰, 아티스트·앨범·태그·트랙 상세 페이지, 탭이 있는 History 뷰, M3U8 및 .mixtape 내보내기/가져오기가 가능한 재생목록, Collections 관리자가 포함됩니다. 8개의 내장 스킨(Default, OLED Black, Arctic Light, Forest, Silver, Ocean Blue, Viboplr, Sunset)이 포함되어 있으며, 사용자 정의 JSON 스킨, 커뮤니티 갤러리, 19개 색상 토큰, 선택적 스킨별 정제된 CSS를 지원합니다. 플러그인과 통합 JavaScript 플러그인은 주요 확장 메커니즘으로, 스트리밍, 메타데이터, 가사, 이미지 해상도, 다운로드, 컨텍스트 메뉴 항목, 사이드바 뷰, 홈 선반, 현재 재생 정보 항목, 시각화 도구, 이벤트 훅, 설정 패널, 스케줄러 작업을 제공합니다. 내장 플러그인은 Last.fm 스크로블링과 메타데이터, LRCLIB와 Lyrics.ovh의 가사, TheAudioDB, Deezer, iTunes, MusicBrainz의 아트워크를 다룹니다. 갤러리 플러그인에는 Spotify, TIDAL, yt-dlp를 통한 YouTube, Genius, qBittorrent, 시각화 도구가 포함됩니다. 플러그인은 원시 HTML 주입이 아닌 구조화된 데이터 모델을 통해 렌더링되며, Extensions 뷰에서 활성화, 비활성화, 재정렬, 구성할 수 있습니다. 기타 기능 Chrome과 유사한 격리 프로필, 최초 실행 온보딩 마법사, 감지·설치·자동 업데이트되는 관리형 외부 종속성(ffmpeg, yt-dlp), 태그 합성 이미지가 있는 플러그인 기반 엔티티 아트워크, 네이티브 OS 컨텍스트 메뉴, 문제 보고를 위한 사용자 검토 진단 번들, 안정 및 베타 채널이 있는 내장 자동 업데이트가 있습니다. 기술과 형식 스택은 앱 셸용 Tauri 2, 스캔·데이터베이스·동기화·재생 엔진·API 클라이언트용 Rust, 프런트엔드용 TypeScript/React/Vite, 재생용 libmpv와 HTML5 대체, FTS5를 사용하는 rusqlite 기반 SQLite, 태그용 lofty, 파일 감시용 notify, 상태 지속용 tauri-plugin-store v2로 구성됩니다. 네이티브로 디코딩되는 오디오 형식에는 MP3, FLAC, AAC/M4A, ALAC, WAV, OPUS, WMA, OGG, AIFF, APE, WavPack, TTA, DSD 등이 있습니다. 비디오 지원은 두 플랫폼 모두에서 MP4/M4V/MOV(H.264)를, Windows에서는 브라우저 엔진을 통한 WebM을 포함합니다. 개발과 라이선스 개발에는 Node.js 18+와 Rust 1.70+ 및 플랫폼별 Tauri 필수 구성 요소가 필요합니다. README에는 개발 및 프로덕션 빌드 명령, 린팅 및 테스트 스크립트, GitHub Actions 워크플로를 포함한 문서 사이트용 VPS 배포 흐름이 설명되어 있습니다. 프로젝트는 GPL-3.0-or-later로 라이선스되며, 허용적 라이선스의 Rust 및 JavaScript 종속성과 별도 외부 구성 요소로 사용되는 libmpv, ffmpeg, yt-dlp를 포함합니다.