jellyfin/jellyfin

GitHub: jellyfin/jellyfin

Jellyfin 是一个完全免费开源的自托管媒体系统,让你完全掌控并流式播放自己的影视、音乐和照片库,是 Plex 和 Emby 的自由替代方案。

Stars: 51407 | Forks: 4765

Jellyfin

自由软件媒体系统

Logo Banner

GPL 2.0 License Current Release Translation Status Docker Pull Count
Donate Submit Feature Requests Chat on Matrix Release RSS Feed Master Commits RSS Feed

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 及其子项目。
Detailed Translation Status ## 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:

JetBrains logo

标签:Docker, Emby替代, Jellyfin, NAS, Plex替代, Web API, 免费软件, 后端开发, 多人体追踪, 媒体中心, 媒体服务器, 媒体管理, 媒体系统, 安全监控, 安全防御评估, 家庭影院, 开源, 影视, 流媒体, 私人影库, 请求拦截, 调试插件, 转码