프로젝트 소개

FMP는 Android와 Windows용 크로스 플랫폼 음악 플레이어로, 세 가지 주요 오디오 소스인 Bilibili, YouTube, NetEase Cloud Music을 하나의 경험으로 통합합니다. 여러 앱을 따로 오갈 필요 없이, 사용자는 세 플랫폼 모두에서 하나의 검색창, 하나의 대기열, 하나의 라이브러리, 하나의 청취 기록을 사용할 수 있습니다. **핵심 기능** - **통합 검색 및 재생**: Bilibili(영상 오디오, 다중 파트 컬렉션, 라이브 방송 오디오, 즐겨찾기 가져오기), YouTube(영상, 재생목록, Mix/Radio 동적 대기열, Opus/AAC 우선), NetEase(곡, 재생목록, VIP 및 이용 가능 여부 플래그)를 검색할 수 있습니다. URL을 붙여넣으면 바로 재생됩니다. - **라이브러리 및 재생목록**: 사용자 지정 커버로 재생목록을 만들거나 세 소스 중 어디서든 가져올 수 있으며, QQ Music 및 Spotify 내보내기에서 퍼지 매칭으로 가져오기도 지원합니다. - **재생 제어**: 대기열 재정렬, 반복 및 셔플 모드, 속도 제어, 이전 위치로 돌아가는 "이것을 시도" 모드가 있습니다. 대기열은 재시작 후에도 유지됩니다. - **가사**: NetEase, QQ Music, lrclib에서 가져오며 소스 우선순위를 설정할 수 있고, 동기화 스크롤, 번역 및 로마자 표기, Windows의 별도 데스크톱 가사 창을 지원합니다. - **오프라인 다운로드**: 단일 트랙 또는 전체 재생목록을 다운로드할 수 있으며, 다운로드는 로컬 라이브러리의 일부가 됩니다. - **라디오로서의 라이브 방송**: 라이브 방송을 위한 전용 재생 페이지입니다. - **기록 및 통계**: 통계가 포함된 타임라인, 로컬 백업 및 복원, GitHub Releases를 통한 인앱 업데이트 확인을 제공합니다. **플랫폼 지원** - Android: 백그라운드 재생, 알림 제어, 시스템 미디어 키. - Windows: 시스템 미디어 키, SMTC(System Media Transport Controls), 시스템 트레이, 전역 단축키, 데스크톱 가사 창. **기술 스택** - 앱: Flutter, Dart, Material 3 - 상태: Riverpod - 로컬 데이터: Isar - 라우팅: go_router - 오디오: just_audio (Android), media_kit (Windows) - 네트워크: Dio, youtube_explode_dart, 플랫폼별 어댑터 - i18n: slang UI는 창 너비에 따라 하단 내비게이션, 사이드 레일, 데스크톱 상세 창 사이에서 적응합니다. **개인정보 보호** FMP는 음악을 호스팅하지 않습니다. 이미 계정이 있는 플랫폼의 공개 인터페이스를 읽습니다. 기록, 재생목록, 설정, 자격 증명, 다운로드는 기기에 남아 있습니다. 광고나 분석 SDK는 없습니다. 이 프로젝트는 학습 및 개인 사용을 위한 것이며, 멤버십 전용, 제한, 이용 불가 콘텐츠는 소스 플랫폼 규칙을 따르고, 잦거나 비정상적인 요청은 계정 제한 위험이 있을 수 있습니다. **빌드** Flutter SDK가 필요합니다. Windows 데스크톱 빌드에는 추가로 NuGet CLI와 Rust 툴체인이 필요합니다. 생성된 코드는 커밋되지 않으므로 분석 전에 `dart run build_runner build`와 `dart run slang`을 실행해야 합니다. 심층 문서는 번체 중국어로 작성되어 있으며 아키텍처, 빌드, 개발, 릴리스 프로세스, 문제 해결을 다룹니다. **라이선스**: MIT이며, 서드파티 구성 요소(Windows 빌드의 LGPL 라이선스 libmpv/FFmpeg 포함)는 THIRD_PARTY_LICENSES.md에 기록되어 있습니다.