Jellyfin 是一款免费软件媒体系统,让您可以掌控媒体的管理和流媒体播放。它是专有 Emby 和 Plex 的替代方案,可通过多个应用程序将媒体从专用服务器传输到最终用户设备。Jellyfin 源自 Emby 3.5.2 版本,并移植到 .NET Core 框架,以实现全面的跨平台支持。它没有任何附加条件,没有高级许可证或功能,也没有任何隐藏的意图:只有一个团队致力于构建更优秀的产品并共同努力实现目标。我们欢迎任何有兴趣加入我们的人!
更多详情,请参阅我们的文档页面。如需获取最新更新、获取 Jellyfin 帮助并加入社区,请访问我们的沟通渠道。有关该项目的更多信息,请参阅我们的关于页面。
想要开始使用吗?
请查看我们的下载页面或安装指南,然后参阅我们的快速入门指南。您也可以从源代码构建。
出现问题?
在 GitHub 上提交Issue。
想要贡献力量?
查看我们的贡献“选择你自己的冒险”,了解您可以提供帮助的地方,然后查看我们的贡献指南和我们的社区标准。
有新想法或改进?
查看我们的功能请求中心。
没有找到您语言版本的 Jellyfin?
查看我们的 Weblate 实例,以帮助翻译 Jellyfin 及其子项目。
此代码库包含 Jellyfin 后端服务器的代码。请注意,这只是 Jellyfin GitHub 组织 下众多项目之一。如果您想贡献代码,可以先查看我们的文档,了解具体工作内容。
这些说明将帮助您设置本地开发环境,以便为此代码库做出贡献。在开始之前,请务必完整阅读我们的开发贡献指南。请注意,除 FreeBSD 外,所有主流操作系统均支持此项目,但 FreeBSD 仍不兼容。
在构建项目之前,您必须先在系统上安装 .NET 9.0 SDK。
此处包含从命令行运行此项目的说明,但如果要在服务器运行时对其进行调试,则还需要安装 IDE。任何支持 .NET 6 开发的 IDE 都可以使用,但有两个选择:最新版本的 Visual Studio(至少 2022 版)和 Visual Studio Code。
还需要安装 ffmpeg。
安装依赖项后,您需要克隆此代码库的本地副本。如果您只想从源代码运行服务器,可以直接克隆此仓库;但如果您打算为项目贡献代码更改,则应该自行创建此仓库的分支。以下示例展示了如何通过 HTTPS 直接克隆此仓库。
git clone https://github.com/jellyfin/jellyfin.git
服务器已配置为托管 Web 客户端 所需的静态文件,并且默认提供后端服务。在运行服务器之前,您需要获取 Web 客户端的副本,因为它们不直接包含在此代码库中。
请注意,您也可以通过一些额外的配置,将 Web 客户端与 Web 服务器分开托管,在这种情况下,您可以跳过此步骤。
获取 Web 客户端文件有三种方式。
以下说明将帮助您通过命令行或您首选的 IDE 启动并运行项目。
要使用 Visual Studio 运行项目,您可以打开解决方案 (.sln) 文件,然后按“F5”运行服务器。
要使用 Visual Studio Code 运行项目,首先需要使用“打开文件夹...”选项打开 Visual Studio Code 的存储库目录。
其次,您需要安装工作区推荐的扩展。请注意,扩展推荐分为“工作区推荐”或“其他推荐”,但只有“工作区推荐”是必需的。
安装所需的扩展后,您可以按“F5”键运行服务器。
要从命令行运行服务器,您可以使用“dotnet run”命令。以下示例展示了如何在已将存储库克隆到名为“jellyfin”(默认目录名)的目录中,并且该目录应适用于所有操作系统的情况下执行此操作。
cd jellyfin # Move into the repository directory
dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project
第二种选择是构建项目,然后直接运行生成的可执行文件。直接运行可执行文件时,您可以轻松添加命令行选项。添加 --help
标志即可列出所有受支持的命令行选项的详细信息。
dotnet build # Build the project
cd Jellyfin.Server/bin/Debug/net9.0 # Change into the build output directory
./jellyfin
,在 Windows 系统上使用 jellyfin.exe
。如果服务器已配置为托管 Web 客户端,并且服务器正在运行,则默认可以通过 http://localhost:8096
访问 Web 客户端。
API 文档可在 http://localhost:8096/api-docs/swagger/index.html
查看。
由于 Jellyfin 将在 GitHub 托管服务器上的容器中运行,因此 JF 需要以不同的方式处理一些事情。
**注意:**根据所选配置(如果您直接点击“创建 Codespace”,它将创建一个默认配置),在 VS Code 已打开的情况下,加载所有扩展并准备环境可能需要 20-30 秒。请耐心等待,直到在“输出”选项卡中看到“正在下载 .NET 版本 7.0.15~x64……完成!”。
**注意:**如果您想从外部访问 JF 实例,例如使用另一台电脑上的 WebClient,请记住将下方 VS Code 窗口中的“端口”设置为公开。
**注意:**首次使用任何 WebUI 打开服务器实例时,您将被重定向到登录页面而不是设置页面。刷新登录页面一次,您应该会被重定向到设置页面。
有两种配置可供您选择。
这会创建一个容器,其中包含运行和调试 Jellyfin 媒体服务器所需的一切,但无需设置任何其他内容。每次创建新容器时,您都必须重新运行整个设置过程。此外,它不会预加载 ffmpeg、webclient 或媒体文件。请使用 .NET Launch (nowebclient)
启动配置来启动服务器。
请记住,由于它没有 Web 客户端,您必须通过外部客户端连接到它。这可以只是另一个运行 WebUI 的 Codespace 容器。Vuejs 从一开始就无法运行,因为它不支持设置步骤。
此代码扩展了默认服务器,默认安装了 ffmpeg6,具体方法如下:https://jellyfin.org/docs/general/installation/linux#repository-manual
如果您想安装特定版本的 ffmpeg,请按照 .devcontainer/Dev - Server Ffmpeg/install.ffmpeg.sh
文件中的注释操作。
使用 ghcs .NET Launch (nowebclient, ffmpeg)
启动配置,在启用 jellyfin-ffmpeg 的情况下运行。
此代码库还包含单元测试,用于在 Azure 上作为持续集成 (CI) 流水线的一部分验证功能。有几种方法可以运行这些测试。
dotnet test
从命令行运行测试以下部分介绍了一些基于上述标准说明从源代码运行服务器的更高级场景。
无需将前端 Web 客户端作为后端服务器的一部分托管。对于希望将客户端托管在单独的 Webpack 开发服务器中以实现更紧凑的开发循环的前端开发人员来说,单独托管这两个组件可能会有所帮助。有关如何操作的说明,请参阅 jellyfin-web 代码库。
要指示服务器不托管 Web 内容,必须设置 nowebclient
配置标志。您可以使用命令行开关 --nowebclient
或环境变量 JELLYFIN_NOWEBCONTENT=true
来指定。
由于这种情况很常见,Visual Studio 还定义了一个名为 Jellyfin.Server (nowebcontent)
的单独启动配置文件,您可以从主工具栏中的“开始调试”下拉菜单中选择。
**注意:**如果 Web 客户端单独托管,则无法运行安装向导。