记录一次 Rclone挂载网盘,Emby播放视频出现连续跳集的原因分析以及解决

发布于:2025-09-07 ⋅ 阅读:(17) ⋅ 点赞:(0)

记录一次 Rclone挂载网盘为本地文件夹,Emby播放视频出现连续跳集的原因分析以及解决。

  1. Windows 客户端每次点播放都会瞬间触发「下一集」并立即调用 Playback/Stopped,播放时长为 0 ms。
  2. 服务端日志里大量 Bitrate exceeds DirectPlay / DirectStream limit → 强制转码。
  3. 转码进程被 SIGKILL(code 137),随后返回 HTTP 500 → 客户端收不到首片,于是立即跳到下一集。
  4. 根因:挂载在 /extdisk02/embyGallery/baiduLibs 的 rclone 云盘文件首次读取极慢(> 15 s),Emby 的 15 s 转码启动超时后被 systemd-oom 或者手动资源限制杀死 ffmpeg,导致首片 0.ts 生成失败。
  5. 最终表现:Windows 客户端“连环跳集”,而 Web 端因为等待时间更长或已缓存,能正常播放。

解决思路(按优先级)

  1. 把「云盘 → rclone → 本地」改成「云盘 → rclone cache / vfs-cache-mode writes」

    rclone mount baidu: /extdisk02/embyGallery/baiduLibs \
      --vfs-cache-mode full \
      --cache-dir /var/lib/emby/rclone-cache \
      --buffer-size 256M \
      --dir-cache-time 24h \
      --poll-interval 1h
    

    让 rclone 先把文件拉到本地 SSD,首片秒开,Emby 不再超时。

  2. 调大 Emby 转码启动超时
    Emby Server → 转码 → 「允许转码启动时间」改成 60 s 或更长;
    同时把 /var/lib/emby/transcoding-temp 指向本地 SSD,减少 IO 阻塞。

  3. 降低码率或关闭强制转码
    • 用户策略「最大码率」≥ 20 Mbps(高于原片 1.9 Mbps),让文件 Direct Play;
    • 或者把片源统一压成 3-5 Mbps H.264,减小首片读取量。

  4. 排除 OOM / 资源限制
    dmesg | egrep -i "killed process|oom" 确认是否内存不足;
    若确实被杀,给 Emby 和 ffmpeg 加 systemd slice,限制并发转码数或增大内存。

  5. 只读挂载导致 .nfo 无法写入
    日志中 Read-only file system 不影响播放,但会污染日志。
    把库设为「只读」或把 rclone 挂载改为 --vfs-cache-mode writes 即可。


一句话总结
把云盘文件用 rclone vfs-cache-mode full 缓存到本地 SSD,再适当放宽 Emby 的转码超时或提升客户端码率限制,即可彻底消除 Windows 客户端的「连环跳集」问题。


网站公告

今日签到

点亮在社区的每一天
去签到