跳转至

媒体健康

某个影片跳转很慢、在某处卡住,或者声音逐渐与画面不同步:管理 → 媒体健康会读取您各个媒体库里的每个 MKV/WebM 文件,并为每个文件给出一个结论。目标是让这个页面逐渐清空:Evey 能修复的问题由它修复(全部修复);其余的只提示一次,您可以把它标记为已看过。

扫描后的管理 → 媒体健康:一个待修复的文件,一条提示
一次扫描的结果:一个 Evey 能修复的文件(缺少跳转索引),以及一条提示(文件结尾之后有多余字节,没有危害)(界面为英文)。

两种结论

不是健康的文件(健康是指索引、容器、大小和音频时间都检查无误),会得到两种结论之一,而且有意只设两种:

结论 意思 Evey 会做什么
可修复 Evey 能在这台服务器上修复的缺陷。 全部修复会在后台处理它们;按钮上的数字正好就是这类文件的数量。
信息 对文件测量到的某种情况,Evey 不会自己去改写。 什么都不做。把它标记为已看过即可。

两种结论都不需要您手动处理。Evey 无法处理的测量结果只是一条提示,而且测量也可能出错:如果文件播放正常,就不需要做任何处理。

可修复

  • 缺少跳转索引,或者索引无法使用。症状是跳转或继续播放很慢。索引会在一个临时副本里重建,副本经过完整检查(轨道、时长、索引)后,再替换原文件。
  • 容器错误:这个 .mkv 实际上是 MP4 或 MOV 文件。它会被重命名为 .mp4,媒体库也会跟着更新;不改写任何内容。
  • 损坏片段:文件中间有一段数据损坏了。修复会跳过这一段,并重新同步后面的内容,所以这些字节会永久丢失。修复对话框会明确询问您(同时重新同步 N 个损坏文件);不勾选的话,损坏的文件不会被改动。有些文件的损坏只在改写时才暴露出来(修复时发现损坏),也是一样:扫描只读取文件头,看不到这种损坏。
  • 轨道按块存放:先是几分钟的视频,再是几分钟的音频,而不是交错排列在一起。任何播放器都无法播放到第一块之后。重新交错轨道会把轨道重新交错写入,不重新编码,并在替换文件之前检查每个数据包都已写入。

信息

  • 下载不完整:文件的结尾一直没有下载下来。它能播放到中断的位置。任何工具都无法找回缺少的部分,只能从片源重新获取。
  • 跳转粗糙:重建的索引里仍然有一处空洞,多半是片尾字幕。跳转到空洞里时,会落在空洞的边缘;在其他任何地方,跳转都是精确的。
  • 音轨从 +N 秒开始:某条音轨比画面开始得晚。配音就是这样和剪辑版本对齐的,所有播放器都会照此播放。Evey 从不改写它。
  • 音轨相差 N 秒:文件自己的几条音轨彼此对不上,说明其中一条的位置不对。任何测量都判断不出是哪一条。
  • 声音与画面相差 N 秒:某条音轨的位置,和字幕(字幕是按画面对齐的)标出的对白位置不一致。
  • 音轨被拉到 0:这是早先的某次修复留下的痕迹,那次修复把一条音轨按它声明的延迟往前拉了回来。如果现在配音播得太早,被去掉的那段延迟已经不在文件里了。
  • 音频 -N 秒:某条音轨比画面先结束。播放时会用静音补上这段空缺。
  • 尾部多余字节:文件内容结束之后还有多余的字节。播放没有问题。
  • 无法读取:扫描读不了这个文件(文件不存在、无法读取,或者解析器不接受这种容器)。请检查挂载或片源。

目视检查同步

对于上面三种和音频有关的提示,在文件那一行点击检查同步,服务器会生成一小段片段:选一个时刻、一条音轨和一个要试的偏移量,然后观看,需要时可以放慢。比较几条音轨只能说明它们彼此是否一致,无法说明哪一条与画面同步;只有观看才能确定。

对该音轨应用 N 秒会把这条音轨移动选定的偏移量。这个改动会被记录为您的判断,而不是测量结果,并且可以在历史里撤销。

标记为已看过

已看过,不再提示(一个文件)和全部标记为已看过(一组文件)会把一条信息类提示从待处理视图中移走。只有提示可以标记:可修复的缺陷应当修复。这个标记只对文件当前的样子有效:如果文件的大小或日期变了,下次扫描会重新诊断它。重新提示可以取消这个标记。

表格上方的各个视图(待处理、可修复、信息、已看过、备份、全部)和搜索框,是您处理大型媒体库的工具:待处理就是待办清单。

扫描

一次扫描会读取每个文件的三小块区域(开头、靠近末尾的索引和结尾),对于没有变化的文件,沿用上一次的结论。磁盘占用决定扫描的快慢:

  • 轻量:一次一个文件,然后暂停,暂停的时间和读取花的时间一样长。磁盘大约有一半时间是空闲的,所以有人可以继续观看。
  • 快速:同时处理多个文件,不暂停。对于分布在多块磁盘上的媒体库,明显更快,但扫描期间播放可能会卡顿。

有两种情况会让扫描把所有文件重新诊断一遍:文件有了变化,以及新版本的 Evey 改变了检查项目。所以在这样的更新之后,大型媒体库的第一次扫描耗时较长;之后的扫描会恢复为较快。

备份、历史和撤销

保留备份默认是开启的:每个被改写的文件,都会在旁边把原文件保留为一个 .mkvgobak。还原恢复一个文件,全部还原恢复所选范围内的文件,删除备份会把备份永久删除。关闭这个选项后,运行期间只存在最近的几份副本,并在运行结束时删除;此时每次修复在替换文件之前都会进行更深入的校验。如果给每个文件都保留一份副本会占满存储卷,页面会在运行之前提醒您。

修复日志列出了修复对整个媒体库中文件字节所做的每一处改动;历史显示单个文件的改动。有些改动可以在那里撤销,不需要任何副本:

改动 撤销
已移动音轨 应用一个完全相反的偏移。
已重命名为 .mp4 改回原来的名字。
已重建索引 不需要撤销:画面和声音都没有被动过。
已跳过损坏片段 只有备份能找回丢失的字节,所以这种修复总是会保留备份。
全部修复之后的管理 → 媒体健康,修复日志已打开
全部修复之后:索引已重建,日志记录了这一操作,文件离开了待处理队列;那条提示仍然保留。这个索引是直接在原文件里修补的,这种方式不保留副本:只有需要整个改写的文件才会保留备份(界面为英文)。

修复会写入您的媒体文件夹。这些文件夹必须以读写方式挂载到容器里(卷上不要加 :ro);如果某次运行遇到了只读的卷,页面会告诉您。扫描则不受影响,两种方式都可以。

通过命令行

同样的功能也可以通过运维命令行使用,见命令行:

  • evey admin reindex-no-cue --root <dir> [--apply] [--resync] 重建缺失的索引;如果不加 --apply,就只是试运行;
  • evey admin validate-streaming --root <dir> 输出只读的流式播放就绪报告。