Koel 一个基于 Web 的个人音频流服务

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Koel是一个基于 Web 的个人音频流服务,客户端用 Vue 编写,服务器端用 Laravel 编写。

针对 Web 开发人员,Koel 采用了一些更现代的 Web 技术来完成其工作。

要求

Koel 有两个组件,每个组件都有自己的一组要求:

服务器

  • Laravel 的所有要求——PHP、OpenSSL 等。如果您有一个大库,请考虑将 PHP 设置memory_limit为一个合适的值(512M 或更高)。
  • MySQL、MariaDB、PostgresSQL 或 SQLite。实际上,Laravel 支持的任何 DBMS 都应该可以工作。
  • 如果你从源代码构建 Koel,请确保Composer、Git 和 NodeJS 具有最新的稳定版本。yarn

客户

任何常青浏览器都可以——Koel 已经在 Chrome 47、Firefox 42、Safari 8、Opera 34 和 Edge 上进行了测试。

安装

安装和开始使用 Koel 的方法有以下三种:

使用预编译的存档

从 v5.0.0 开始,Koel 支持从预编译存档安装,无需手动编译前端资产。

首先,转到GitHub 上的Releases 页面.tar.gz,下载“Assets”下的或.zip文件,然后将其解压缩到目标 Web 根目录。从那里,运行以下两个命令:

php artisan koel:init --no-assets # Populate necessary configurations during the processphp artisan serve

从源头构建

在您的控制台中,运行以下命令:

cd git clone https://github.com/koel/koel.git .git checkout latest # Check out the latest version at https://github.com/koel/koel/releasescomposer installphp artisan koel:init # Populate necessary configurations during the processphp artisan serve

在这两种情况下,您现在应该可以在浏览器中访问http://localhost:8000并开始使用 Koel。

如果您想要更多控制权,请编辑.env文件。那里有很多设置可以根据您的需要调整 Koel。

使用 Docker

Koel 有一个官方的 Docker 镜像:koel/docker。还提供社区支持的图像,例如0xcaff/koel和binhex/arch-koel。

配置和使用

音乐发现

Koel 有多种方法可以发现您的媒体文件。您可以手动扫描歌曲、配置观察程序、使用 Amazon S3 托管文件或直接使用 Web 界面上传文件。

使用网络界面扫描

将您的歌曲上传到您服务器上的可读目录中——最好是在您的 web 根目录之外——并通过在管理 ▸ 设置下设置“媒体路径”来配置 Koel 以扫描和同步它。

使用 CLI 扫描

koel:sync您还可以使用 artisan命令从 CLI 进行扫描——速度更快,没有时间限制,并提供有用的反馈:

$ php artisan koel:sync   INFO  Scanning /Users/an/Personal/koel/media. 1189/1189 [============================] 100%   INFO  Scanning completed!  ⇂ 0 new or updated song(s)  ⇂ 1189 unchanged song(s)  ⇂ 0 invalid file(s)

使用标志为命令添加后缀以-v获取更多详细信息,例如同步错误。

可以将此命令添加为 cron 作业,例如在每个午夜运行:

0 0 * * * cd /home/user/webapps/koel/ && /usr/local/bin/php artisan koel:sync >/dev/null 2>&1

截至目前,Koel 可以识别以下音频扩展:.mp3、.ogg、.aac、.m4a、.opus、 和.flac(实验性但有一些限制)。将来可能会添加其他内容。

流媒体音乐

Koel 支持三种流式传输方法,可以通过文件中的STREAMING_METHOD设置进行配置.env:

  • php: 使用原生 PHP readfile()。这是默认方法,也是最慢和最不稳定的方法。仅当您不能使用此方法时才使用此方法。
  • x-accel-redirect: 使用 nginx 的X-Accel模块。请参阅示例 nginx 配置文件。nginx.conf.example
  • x-sendfile: 使用 Apache 的mod_xsendfile模块。您需要手动安装和配置模块。示例配置如下:
LoadModule xsendfile_module   libexec/apache2/mod_xsendfile.so# These configuration can be put in the VirtualHost directive as well  XSendFile on  XSendFilePath /mnt/media

使用网络界面

使用 Koel 的客户端组件应该很简单。如果您曾经使用过 Spotify,那么您应该有宾至如归的感觉。事实上,Koel 的客户端界面是对 Spotify 的无耻抄袭。您可以搜索,可以排序,可以按艺术家或专辑查看,可以创建播放列表,可以喜欢/不喜欢歌曲,还可以创建其他用户来分享氛围。书呆子也有几个快捷键:

  • F将焦点放在搜索框中
  • Enter播放一首歌。如果选择了多首歌曲,Enter将它们添加到队列的底部,Shift+Enter将它们排在顶部。将Cmd或添加Ctrl到组合中会立即播放第一首选定的歌曲。
  • Space切换播放
  • J播放队列中的下一首歌曲
  • K播放队列中的上一首歌曲
  • Ctrl/Cmd+A选择当前视图中的所有歌曲
  • Delete从当前队列/播放列表中删除选定的歌曲

使用支持MediaSession的浏览器,您可以使用硬件媒体密钥控制 Koel,甚至无需关注 Koel或浏览器

即时搜索

从 v5.0.0 开始,Koel 提供了即时搜索功能,可以对您的歌曲、专辑和艺术家数据库执行全文、模糊搜索。默认情况下,Koel 使用不需要配置的TNTSearch 引擎。您还可以通过将这些详细信息填充到以下内容中来使用Algolia.env:

SCOUT_DRIVER=algoliaALGOLIA_APP_ID=ALGOLIA_SECRET=

同样,您可以通过以下配置使用Meilisearch :

SCOUT_DRIVER=meilisearchMEILISEARCH_HOST=MEILISEARCH_KEY=

如果您从旧版本升级 Koel,您还必须通过运行以下命令手动创建搜索索引:

php artisan koel:search:import

对音乐数据库的所有后续更新都将自动同步。

主题

Koel 支持多种主题。您可以预览并从“个人资料和首选项”屏幕中选择一项。请注意,主题不会跨设备保留,因为它们使用浏览器的本地存储。

上传艺术家和专辑图片

您可以通过将图像拖放到艺术家/专辑卡中的当前图像中来更改艺术家和专辑图像。

用户管理

Koel 支持多个用户。用户可以是具有管理权限(用户和媒体管理)的管理员,也可以是标准管理员。截至目前,所有用户共享同一个库(尽管播放列表、收藏夹和其他统计数据都是私有的)。将来可能会考虑全面的多租户支持。

遥控器

从 v3.7.0 开始,Koel 有一个(移动)遥控器,可让您控制桌面实例——播放/暂停、导航、调高/调低音量以及从收藏夹中添加/删除。

为了使用该功能:

  1. 注册 Pusher 账号并创建应用
  2. 将应用程序的凭据填充到.env(以 开头PUSHER_)
  3. 重新加载桌面 Koel 实例
  4. 在移动设备上访问 http:///remote 以开始远程控制。您可能还希望将 URL 添加到主屏幕以便以后更快地访问。

本地开发

运行本地网络服务器

一次性启动 PHP 服务器和客户端应用程序yarn dev,用于管理vite和 Laravel:start-server-and-test

$ yarn dev  vite v2.9.13 dev server running at:  > Local: http://localhost:3000/  > Network: use `--host` to expose  ready in 761ms.  Laravel v9.22.1  > APP_URL: http://localhost

Koel 的开发版本现在应该可以在http://localhost:8000完全支持 HMR 的情况下使用。

测试、代码检查、静态分析和其他东西

# PHP-related code quality tasks# Basically, take a look at the "scripts" section in composer.jsoncomposer test        # Run the PHP test suitecomposer cs          # Run code style checkercomposer cs:fix      # Run code style fixercomposer analyze     # Run PHP static analysisyarn build # Build a production version of the client application# Client/E2E code quality tasks# You may want to run `yarn build` first.yarn test:e2e        # Run the Cypress test suite interactivelyyarn test:e2e:ci     # Run the Cypress test suite non-interactively (CI mode)# These commands need to be run from within the submodule (resources/assets)yarn lint            # Lintyarn type-check      # TypeScript type checkingyarn test            # Unit testing


—END—

开源协议:MIT License

开源地址:https://github.com/koel/koel

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章