jellyfin/jellyfin
GitHub: jellyfin/jellyfin
Jellyfin 是一个完全免费开源的自托管媒体系统,让你完全掌控并流式播放自己的影视、音乐和照片库,是 Plex 和 Emby 的自由替代方案。
Stars: 51407 | Forks: 4765
Jellyfin
自由软件媒体系统
Jellyfin 是一个自由软件媒体系统,让您完全掌控管理和流式传输自己的媒体。它是专有软件 Emby 和 Plex 的替代品,可通过多个应用程序将专用服务器上的媒体提供给终端用户设备。Jellyfin 源自 Emby 的 3.5.2 版本,并被移植到 .NET 平台以实现完全的跨平台支持。
没有任何附加条件,没有高级许可证或付费功能,也没有隐藏的目的:只是一支想要构建更好的东西并共同努力实现这一目标的团队。我们欢迎任何有兴趣加入我们并共同探索的人!
了解更多详情,请参阅[我们的文档页面](https://jellyfin.org/docs/)。要获取最新更新、获得 Jellyfin 的帮助并加入社区,请访问[我们的交流渠道之一](https://jellyfin.org/docs/general/getting-help)。有关项目的更多信息,请参阅我们的[关于页面](https://jellyfin.org/docs/general/about)。
准备开始使用?
查看我们的
下载页面或
安装指南,然后阅读我们的
快速入门指南。您也可以直接
从源代码构建。
遇到了问题?
在 GitHub 上提交一个
Issue。
想要贡献?
查看我们的
贡献互动指南 以了解您可以在哪里提供帮助,然后阅读我们的
贡献指南和
社区标准。
有新想法或改进建议?
查看我们的
功能请求中心。
没有看到您语言的 Jellyfin?
前往我们的
Weblate 实例 帮助翻译 Jellyfin 及其子项目。
## Jellyfin 服务器
本代码仓库包含 Jellyfin 后端服务器的代码。请注意,这只是 GitHub 上 Jellyfin [组织](https://github.com/jellyfin/)下的众多项目之一。如果您想做出贡献,可以从查看我们的[文档](https://jellyfin.org/docs/general/contributing/index.html)开始,了解可以进行的工作。
## 服务器开发
以下说明将帮助您搭建本地开发环境,以便为本代码仓库做出贡献。在开始之前,请务必仔细阅读我们的[开发贡献指南](https://jellyfin.org/docs/general/contributing/development.html)。请注意,该项目支持所有主流操作系统,但不包括仍不兼容的 FreeBSD。
### 前置条件
在构建项目之前,您必须先在系统上安装 [.NET 9.0 SDK](https://dotnet.microsoft.com/download/dotnet)。
此处包含了从命令行运行该项目的说明,但如果您想在服务器运行时进行调试,则还需要安装一个 IDE。任何支持 .NET 6 开发的 IDE 都可以,其中两个选项是最新版本的 [Visual Studio](https://visualstudio.microsoft.com/downloads/)(至少为 2022 版本)和 [Visual Studio Code](https://code.visualstudio.com/Download)。
此外还需要安装 [ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg)。
### 克隆代码仓库
安装依赖项后,您需要克隆本代码仓库的本地副本。如果您只想从源代码运行服务器,可以直接克隆本代码仓库;但如果您打算为项目贡献代码,您应该[设置您自己的 fork](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo)。以下示例展示了如何通过 HTTPS 直接克隆该代码仓库。
```
git clone https://github.com/jellyfin/jellyfin.git
```
### 安装 Web 客户端
服务器在默认提供后端服务的同时,还配置为托管 [web 客户端](https://github.com/jellyfin/jellyfin-web)所需的静态文件。在运行服务器之前,您需要获取 Web 客户端的副本,因为它们并不直接包含在本代码仓库中。
请注意,对于开发环境,建议通过一些额外配置将 Web 客户端与 Web 服务器[分开托管](#hosting-the-web-client-separately),这种情况下您可以跳过此步骤。
获取 Web 客户端文件有两种选项。
1. 按照 [jellyfin-web 代码仓库](https://github.com/jellyfin/jellyfin-web)上的说明从源代码构建
2. 从现有的服务器安装中获取预构建文件。例如,在 Windows 服务器安装中,客户端文件位于 `C:\Program Files\Jellyfin\Server\jellyfin-web`
### 运行服务器
以下说明将帮助您通过命令行或您首选的 IDE 启动并运行项目。
#### 使用 Visual Studio 运行
要使用 Visual Studio 运行项目,您可以打开解决方案(`.sln`)文件,然后按 `F5` 运行服务器。
#### 使用 Visual Studio Code 运行
要使用 Visual Studio Code 运行项目,您首先需要使用 `Open Folder...`(打开文件夹...)选项在 Visual Studio Code 中打开代码仓库目录。
其次,您需要[为工作区安装推荐的扩展](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions)。请注意,扩展推荐被分类为“Workspace Recommendations”(工作区推荐)或“Other Recommendations”(其他推荐),但只有“Workspace Recommendations”是必需的。
安装所需的扩展后,您可以按 `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` 标志以列出所有支持的命令行选项的详细信息。
1. 构建项目
```
dotnet build # Build the project
cd Jellyfin.Server/bin/Debug/net10.0 # Change into the build output directory
```
2. 执行构建输出。在 Linux、Mac 等系统上使用 `./jellyfin`,在 Windows 上使用 `jellyfin.exe`。
#### 访问托管的 Web 客户端
如果服务器配置为托管 Web 客户端,并且服务器正在运行,默认情况下可以通过 `http://localhost:8096` 访问 Web 客户端。
API 文档可以在 `http://localhost:8096/api-docs/swagger/index.html` 查看。
### 从 GitHub Codespaces 运行
由于 Jellyfin 将在 GitHub 托管服务器上的容器中运行,因此需要以不同方式处理某些事项。
**注意:** 根据所选的配置(如果您直接点击“create codespace”,它将创建一个默认配置),在 VS Code 已经打开的情况下,可能需要 20-30 秒才能加载所有扩展并准备环境。请耐心等待,直到您在输出选项卡中看到 `Downloading .NET version(s) 7.0.15~x64 ...... Done!`。
**注意:** 如果您想从外部访问 JF 实例,例如通过另一台 PC 上的 WebClient 访问,请记住将 VS Code 底部窗口中的“ports”(端口)设置为 public。
**注意:** 首次使用任何 WebUI 打开服务器实例时,您将被引导至登录页面而不是设置页面。刷新一次登录页面,您就会被重定向到设置页面。
有两种配置供您选择。
#### 默认 - 开发版 Jellyfin 服务器
这会创建一个包含运行和调试 Jellyfin 媒体服务器所需一切的容器,但不会设置其他任何内容。每次创建新容器时,您都必须重新完成整个设置过程。此外,没有预装 ffmpeg、Web 客户端或媒体。使用 `.NET Launch (nowebclient)` 启动配置来启动服务器。
#### 开发版 Jellyfin 服务器 ffmpeg
这通过此处描述的方式扩展了默认服务器并默认安装了 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 流水线的一部分以验证功能。有几种方法可以运行这些测试。
1. 使用 `dotnet test` 从命令行运行测试
2. 使用 [Test Explorer](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer) 在 Visual Studio 中运行测试
3. 使用相关的 [CodeLens annotation](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests) 在 Visual Studio Code 中运行单个测试
### 高级配置
以下部分描述了在标准说明基础上,从源代码运行服务器的一些更高级的场景。
#### 单独托管 Web 客户端
不需要将前端 Web 客户端作为后端服务器的一部分进行托管。将这两个组件分开托管对于前端开发人员可能很有用,他们更倾向于将客户端托管在单独的 webpack 开发服务器中,以实现更紧凑的开发循环。有关如何执行此操作的说明,请参阅 [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) 代码仓库。
要指示服务器不托管 Web 内容,必须设置一个 `nowebclient` 配置标志。可以使用命令行开关 `--nowebclient` 或环境变量 `JELLYFIN_NOWEBCONTENT=true` 来指定。
由于这是一个常见场景,因此还为 Visual Studio 定义了一个单独的启动配置文件,名为 `Jellyfin.Server (nowebcontent)`,可以从主工具栏的“Start Debugging”(开始调试)下拉菜单中选择。
**注意:** 如果 Web 客户端是分开托管的,则无法运行设置向导。
This project is supported by:
标签:Docker, Emby替代, Jellyfin, NAS, Plex替代, Web API, 免费软件, 后端开发, 多人体追踪, 媒体中心, 媒体服务器, 媒体管理, 媒体系统, 安全监控, 安全防御评估, 家庭影院, 开源, 影视, 流媒体, 私人影库, 请求拦截, 调试插件, 转码