Jellyfin 是一个自由软件媒体系统,可让你控制管理和流式传输你的媒体。它是专有的 Emby 和 Plex 的替代品,通过多个应用程序将媒体从专用服务器提供给最终用户设备。Jellyfin 是 Emby 的 3.5.2 版本的后代,并移植到 .NET Core 框架以实现完全的跨平台支持。没有任何附加条件,没有高级许可证或功能,也没有隐藏的议程:只是一个想要构建更好的东西并共同努力实现它的团队。我们欢迎任何有兴趣加入我们的人!
有关更多详细信息,请参阅我们的文档页面。要接收最新更新、获得 Jellyfin 帮助并加入社区,请访问我们的通信渠道之一。有关该项目的更多信息,请参阅我们的关于页面。
想开始吗?
请查看我们的下载页面或安装指南,然后查看我们的快速入门指南。你也可以从源代码构建。
有什么不对劲的地方?
在 GitHub 上提出问题。
想贡献吗?
查看我们的贡献选择你自己的冒险,看看你能在哪些方面提供帮助,然后查看我们的贡献指南和我们的社区标准。
新想法还是改进?
查看我们的功能请求中心。
没有看到你的语言的 Jellyfin?
查看我们的 Weblate 实例,以帮助翻译 Jellyfin 及其子项目。
此存储库包含 Jellyfin 后端服务器的代码。请注意,这只是 GitHub 上 Jellyfin GitHub 组织下的众多项目之一。如果你想做出贡献,你可以先查看我们的文档,看看要做什么。
这些说明将帮助你设置本地开发环境,以便为此存储库做出贡献。在开始之前,请务必完整阅读我们的开发贡献指南。请注意,除了 FreeBSD 之外,所有主流操作系统都支持此项目,FreeBSD 仍然不兼容。
在生成项目之前,必须先在系统上安装 .NET 8.0 SDK。
此处包含从命令行运行此项目的说明,但如果要在服务器运行时调试 IDE,则还需要安装 IDE。任何支持 .NET 6 开发的 IDE 都可以使用,但有两个选项是最新版本的 Visual Studio(至少 2022 年)和 Visual Studio Code。
安装依赖项后,你需要克隆此存储库的本地副本。如果你只想从源代码运行服务器,你可以直接克隆这个仓库,但如果你打算为项目贡献代码更改,你应该设置你自己的仓库分支。以下示例演示如何直接通过 HTTPS 克隆存储库。
git clone https://github.com/jellyfin/jellyfin.git
默认情况下,服务器配置为除了为后端提供服务外,还托管 Web 客户端所需的静态文件。在运行服务器之前,你需要获取 Web 客户端的副本,因为它们不直接包含在此存储库中。
请注意,也可以通过一些额外的配置将 Web 客户端与 Web 服务器分开托管,在这种情况下,你可以跳过此步骤。
有三个选项可以获取 Web 客户端的文件。
C:\Program Files\Jellyfin\Server\jellyfin-web
以下说明将帮助你通过命令行或首选 IDE 启动并运行项目。
若要使用 Visual Studio 运行项目,可以打开解决方案 () 文件,然后按 运行服务器。
.sln
F5
若要使用 Visual Studio Code 运行项目,首先需要使用该选项使用 Visual Studio Code 打开存储库目录。
Open Folder...
其次,你需要为工作区安装建议的扩展。请注意,扩展建议分为“工作区建议”或“其他建议”,但只有“工作区建议”是必需的。
安装所需的扩展后,可以通过按 来运行服务器。
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/net8.0 # Change into the build output directory
./jellyfin
jellyfin.exe
如果服务器配置为托管 Web 客户端,并且服务器正在运行,则默认情况下可以访问 Web 客户端。
http://localhost:8096
API 文档可在以下位置查看
http://localhost:8096/api-docs/swagger/index.html
由于 Jellyfin 将在 github 托管服务器上的容器上运行,因此 JF 需要以不同的方式处理一些事情。
注意:根据所选的配置(如果只是单击“创建代码空间”,它将创建一个默认配置),可能需要 20-30 个时间来加载所有扩展并在 vscode 已经打开时准备环境。只需给它一些时间,然后等到你在输出选项卡中看到。
Downloading .NET version(s) 7.0.15~x64 ...... Done!
注意:如果要从外部访问 JF 实例,例如使用另一台 PC 上的 WebClient,请记住将下方 VsCode 窗口中的“端口”设置为公共。
注意:首次使用任何 WebUI 打开服务器实例时,你将被发送到登录名而不是设置页面。刷新登录页面一次,你应该会被重定向到安装程序。
有两种配置供你选择。
这将创建一个容器,该容器包含运行和调试 Jellyfin Media 服务器的所有内容,但不设置任何其他内容。每次创建新容器时,都必须再次运行整个设置。也没有预加载 ffmpeg、webclient 或媒体。使用 lunch 配置启动服务器。
.NET Launch (nowebclient)
请记住,由于它没有 Web 客户端,因此你必须通过外部客户端连接到它。这可以只是另一个运行 WebUI 的代码空间容器。Vuejs 无法从 getgo 开始工作,因为它不支持设置步骤。
这将通过此处描述的方法扩展默认服务器,默认安装 ffmpeg6: https://jellyfin.org/docs/general/installation/linux#repository-manual 如果要安装特定的 ffmpeg 版本,请按照文件中嵌入的注释进行操作。
.devcontainer/Dev - Server Ffmpeg/install.ffmpeg.sh
使用启动配置在启用 jellyfin-ffmpeg 的情况下运行。
ghcs .NET Launch (nowebclient, ffmpeg)
此存储库还包括单元测试,这些测试用于验证作为 Azure 上 CI 管道的一部分的功能。有几种方法可以运行这些测试。
dotnet test
以下各节介绍一些基于上述标准说明构建的从源代码运行服务器的更高级方案。
没有必要将前端 Web 客户端作为后端服务器的一部分进行托管。对于希望将客户端托管在单独的 webpack 开发服务器中以实现更紧密的开发循环的前端开发人员来说,单独托管这两个组件可能很有用。有关如何执行此操作的说明,请参阅 jellyfin-web 存储库。
若要指示服务器不承载 Web 内容,必须设置配置标志。这可以使用命令行指定 switch 或环境变量 。
nowebclient
--nowebclient
JELLYFIN_NOWEBCONTENT=true
由于这是一种常见方案,因此还为 Visual Studio 定义了一个单独的启动配置文件,该配置文件可以从主工具栏的“开始调试”下拉列表中进行选择。
Jellyfin.Server (nowebcontent)
注意:如果 Web 客户端是单独托管的,则无法运行安装向导。