当前位置: 首页 > news >正文

用Jellyfin搭家庭照片服务器:3步建好私有云相册

用Jellyfin搭家庭照片服务器:3步建好私有云相册

【免费下载链接】jellyfinThe Free Software Media System - Server Backend & API项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin

周末把手机里4000张照片往NAS上拷,拷完了才发现:2019年露营那张合影,翻了三遍相册都没找着。照片数量一上来,"存进去了"和"找得到"之间隔着一条鸿沟。Jellyfin的照片管理正好补这个洞:它把散落的照片收进私有云相册,顺手读取出每张片子藏着的EXIF元数据,让查找从翻目录变成按条件筛选。

3步跑起来

  1. 安装Jellyfin服务器。NAS有官方套件直接装;空机器最快的一条路是Docker:
docker run -d -p 8096:8096 --name jellyfin -v /path/to/jf-data:/config -v /path/to/photos:/photos jellyfin/jellyfin
  1. 打开浏览器访问 http://localhost:8096,按向导建管理员账户,顺手把/photos指向刚才挂载的照片文件夹。

  2. 进 控制台 → 媒体库 → 添加媒体库,库类型选"照片",指向照片目录,等首次扫描完成。

效果立竿见影:照片按拍摄年份自动排好队,每张都带着日期和相机信息。

这些场景它都接得住

  • 如果你刚换了手机,想把旧机几年的照片搬进NAS:直接拷进照片库目录,扫描完就能在浏览器里按年份回看,不经过任何第三方云。
  • 如果家里好几台设备都想看:手机装Jellyfin客户端、电视装对应的播放应用,登录同一账号,全家共用一个入口,各自有各自的收藏和观看记录。
  • 如果照片文件夹里混着视频:库类型多选"照片+电影",按文件类型自动各归其位。

EXIF信息从哪来:PhotoProvider在做什么

照片库建好后的第一个"魔法",是EXIF元数据提取。每张照片里都藏着相机写入的"出厂信息"——光圈、快门、ISO、拍摄时间、经纬度,甚至你随手打的星星评分。服务端模块Emby.Photos/PhotoProvider.cs负责把这些数据从文件里读出来、挂到照片条目上:

item.CameraMake = image.ImageTag.Make; item.CameraModel = image.ImageTag.Model; item.Aperture = (double)apertureEntry.Value.Numerator / apertureEntry.Value.Denominator; item.DateCreated = dateTaken.Value.ToUniversalTime();

就8行左右的事:相机、型号、光圈、拍摄时间,直接从TagLib解析出的标签里赋值给照片条目。为什么这样设计?因为EXIF是相机直写的客观数据,比文件名可靠得多——它让照片变成可按年份排序、按相机筛选、按评分排序的结构化数据,而不是躺在目录里的一堆IMG_20190823.jpg。另外注意它只处理.jpg.png.cr2等受支持的格式,解析失败也只记日志、不中断整个扫描;宽高读不到时还会兜底用图片处理器补一次。

动手试试

试一试:用手机的图库应用给几张老照片打星、加关键词,然后触发一次库扫描。Jellyfin会把评分和标签同步进来,之后"按评分排序"就是你的精选照片墙。

再试一试:在媒体库视图里切到"按年份"分组。2019年那张露营合影,终于有了固定住址。

一句话收尾

Jellyfin的照片管理,就是把你散在几台设备上的回忆搬回NAS,再用EXIF元数据替你记住"哪张是哪年、谁拍的、拍得怎么样"。下一步:给家人开一个只读账户,把这个家庭相册共享出去。

【免费下载链接】jellyfinThe Free Software Media System - Server Backend & API项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4196252.html

相关文章:

  • 【计算机毕业设计单片机案例】集成 JQ8400 语音播报的病床无线呼叫硬件系统设计 基于 STM32/51 单片机的医患双向呼叫信号采集系统设计(020204)
  • 在树莓派上配置yolo
  • AI应用开发中的敏感信息泄漏:日志为何把手机号原样写进去
  • LLM-Cookbook 学习——搭建基于 ChatGPT 的问答系统>第十章 评估(下)——当不存在一个简单的正确答案时
  • 通俗搞懂 K8s CRD 和 CR:是什么、有什么用、怎么用
  • AI编程术语大全(二):Vibe Coding -AI 编程核心术语与实战指南
  • C语言问题之指针和数组定义和使用
  • 三维扫描一键变 CAD:Scan2CAD 把家具模型自动摆进真实房间
  • 软件测试面试核心考察维度与高频技术问题解析
  • 企业级Spring Boot库存管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 集合排序和流排序
  • 【C++ 面试真题】29. 聊聊 C++ 的线程管理(std::thread)
  • 单片机毕设项目:基于 STM32/51 单片机的4 通道无线病房呼叫液晶显示与语音报警系统设计 主从架构 NRF24L01 病床呼叫终端软硬件设计(020204)
  • 7个我自己常用的学习网站
  • 开源地理空间智能项目中的本体思想 4-2:影像篇——影像不进图谱,图谱给影像当索引
  • 【自适应滤波实战】归一化最小均方 (NLMS) 自适应噪声对消全解析:原理推导 + 数值实例 + Python 代码实现
  • c语言的纸币找零问题
  • 全球贸易进入“高关税时代”:企业必须重新学习如何做全球生意
  • DeepSeek Harness + GLM-5.3 超详细实战教程:我拼了套自己的AI 工位,还自己开发插件!
  • 扫描件加文本层:OCRmyPDF 离线使用完整指南
  • 溶血磷脂酰胆碱 (LPC):脂质代谢关键毒性分子,云克隆 ELISA 试剂盒助力脂质组与炎症损伤科研检测
  • 压电定位平台为什么要闭环?开环误差、传感器基准与Python测试
  • 大二学生用myBuilder两周搭出完整ERP,面试官直接让他演示了一遍
  • 如何获得更快更私密的浏览体验:开源浏览器 Thorium 完整指南
  • DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操
  • KeyboardChatterBlocker 实战教程:按键调阈值,修掉机械键盘连击
  • 【单片机课设毕设项目】基于 51/STM32 单片机的红外人体感应防盗报警环境监控系统设计 基于 51/STM32 单片机的 LCD1602 显示环境感知智能安防系统设计(017504)
  • Python Web后端框架FastAPI vs Flask
  • 网络安全等保合规文档整理
  • 【 C++ 】AVL树