프로젝트 소개
Audioserve는 Rust로 작성된 개인용 오디오 서버로, 디렉토리 구조에서 오디오 파일을 직접 제공합니다. 주로 오디오북을 대상으로 하지만, 잘 정리된 폴더 모음이라면 무엇이든 작동합니다. 설계는 단순성과 미니멀리즘 접근 방식을 강조합니다.
미디어 라이브러리: Audioserve는 오디오 태그에 의존하지 않고 파일 시스템을 탐색하므로, 사용자가 만든 폴더 구조가 그대로 표시됩니다. 권장 레이아웃은 저자/책 또는 저자/시리즈/책입니다. 파일은 자연스럽게 정렬될 수 있어 숫자 패딩은 선택 사항입니다. 폴더에 배치된 표지 이미지와 설명 파일은 표시에 사용되며, 검색은 폴더 이름을 대상으로 합니다. 여러 컬렉션은 별도의 명령줄 인수로 전달할 수 있습니다.
캐싱: 컬렉션 데이터는 내장 키-값 데이터베이스(sled)에 캐시되어 많은 파일이 있는 폴더의 검색 및 로딩 속도를 높입니다. 대규모 컬렉션의 경우 첫 스캔에 시간이 걸릴 수 있습니다. 변경 사항은 기본적으로 inotify를 통해 감시되며, 신호 또는 --force-cache-update 인수를 사용하여 전체 재스캔을 강제할 수 있습니다. 개별 컬렉션은 :no-cache로 옵트아웃할 수 있지만, 검색 속도가 느려지고 위치 공유가 비활성화됩니다.
단일 파일 오디오북: .m4b 및 챕터 메타데이터가 있는 유사 파일은 가상 챕터 파일을 포함하는 폴더로 표시됩니다. 챕터는 기간에서 생성하거나 .chapters CSV 파일로 제공할 수도 있습니다. CD 하위 폴더는 선택적으로 상위 폴더로 병합할 수 있습니다.
재생 위치: 동일한 기기 그룹의 클라이언트는 WebSocket 연결을 통해 재생 위치를 공유할 수 있어 다른 기기에서 이어서 들을 수 있습니다. 위치는 JSON으로 백업하고 복원할 수 있습니다. 완료된 폴더는 마지막 청취 위치를 기준으로 표시됩니다.
보안: 접근은 공유 비밀번호로 제어되며 명명된 사용자는 없습니다. 비밀번호는 솔티드 해시로 전송되고, 서버는 이후 요청에 대한 토큰을 발급합니다. TLS는 직접 또는 리버스 프록시를 통해 지원되며, 속도 제한도 사용할 수 있습니다. 숨김 파일은 API에서 차단됩니다.
트랜스코딩 및 성능: Audioserve는 선택적 트랜스코딩 캐시와 함께 오디오를 더 낮은 비트레이트로 트랜스코딩할 수 있습니다. 응답 압축과 HTTP/2를 지원합니다.
클라이언트 및 API: 최신 PWA 웹 클라이언트(TypeScript/Svelte)가 포함되어 있으며, 이전 웹 클라이언트와 Android 클라이언트도 있습니다. 문서화된 HTTP API를 통해 사용자 정의 클라이언트를 만들 수 있습니다.
설치: Docker 이미지, 정적 Linux 빌드, 로컬 빌드, 그리고 collation, tags-encoding, shared-positions, transcoding-cache, behind-proxy와 같은 선택적 기능을 포함한 컴파일 옵션이 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.