简体中文

视频和字幕·字幕工具包

如何在不离开设备的情况下编辑字幕文件:文件 API 到 Blob

· 工作原理

字幕 浏览器处理 隐私

进入浏览器选项卡的文件句柄,在内存中转换并作为下载写回,没有到服务器的路径
原始 ToolAcre 矢量图

ToolAcre 的文件工具在选项卡内读取和写入文件。这篇文章解释了浏览器 API,使字幕文件成为可能,从文件选择器到下载链接,以及如何确认没有上传任何内容。

成绩单是机密的,转换器希望您上传它 - 浏览器端处理解决的问题

证词笔录不是您提交给网络服务以查明转换是否有效的文件。大多数在线转换器都是上传并返回的:字节发送到服务器,发生一些事情,然后返回结果。对于属于泄露的机密材料,当您看到输出时,它已经发生了。

浏览器端处理消除了这个问题。文件由页面打开而不是发送给页面,每个转换都针对内存中的副本运行,并且结果从同一选项卡写回磁盘。该声明是可测试的,这比声明更重要,因为网络面板将显示任何请求是否携带该内容。

选择文件:文件对象 — 浏览器如何为页面提供字节句柄而不将它们发送到任何地方

通过文件输入选择文件不会传输任何内容。该页面接收一个 File 对象,它是一个句柄:名称、大小、类型和浏览器可以读取的引用。选择文件不是上传,并且保留该句柄不会导致请求。这些字节保留在原来的位置,直到代码需要它们为止。

这种区别是本地处理的整体基础,也是为什么隐私属性是代码的属性而不是浏览器的属性。持有 File 对象的页面完全能够将其发布到某个地方。工具的本地化之处在于它并非本地化。

本地读取文本 — File.text() 和 TextDecoder 将字节转换为内存中的提示

读取文本会调用 File API 文本方法,该方法解析为解码为 UTF-8 的字符串。该字符串被解析为内存中的提示,并且每个后续操作都对这些提示对象起作用:移位添加到整数毫秒时间戳,清理文本上的替换,验证在列表中查找排序和持续时间错误。它们都没有触及原始文件,而原始文件从未被写入。

由于解析会生成普通对象,因此即使在编辑过程中关闭选项卡,磁盘上的文件也不会受到影响。没有需要清理的临时副本,也没有部分写入的输出,因为写入仅在请求下载时发生。

为什么它在主线程而不是 Web Worker 中运行,以及大小上限实际上做了什么

工作簿大纲期望此阶段在 Web Worker 中运行,对于多个 ToolAcre 工具也是如此; CSV、图像和 PDF 应用程序均将繁重的工作从主线程中移出。字幕应用程序故意不这样做,原因记录在其自己的源代码中:工作人员会为不需要的工作添加第二个捆绑包和第二个故障模式,因为功能长度的字幕文件有几百千字节,解析时间为毫秒。

诚实的警告是尺寸上限。在工具页面上解析和命名之前,会强制执行 10 MB 的限制,但该工具记录了对于以字幕扩展名命名的任何内容都会跳过检查,因此超大的字幕文件会加载并阻止页面,而不是被拒绝。这是在主线程上运行的真实结果,并且它被记录而不是隐藏。

回写:Blob 和下载属性 — 编辑后的文件如何作为新下载到达您的磁盘

回写会根据序列化文本构建一个 Blob,并将其作为下载传递给浏览器。该文本使用带有 UTF-8 字符集的显式媒体类型进行包装,为该 Blob 创建一个对象 URL,单击带有下载属性的锚点,然后删除该锚点。该文件作为新文件到达下载文件夹;原来的没有修改。

撤销是故意推迟的,而不是立即撤销。点击后同步撤销对象URL可以在某些浏览器中取消下载,因此安排在稍后的一个宏任务中,既安全又快捷。这种细节仅在下载间歇性无法启动时才会显示。

工作示例:在完整转换和重新定时期间观看网络面板 - 从文件打开到文件保存的安静面板

对象 URL 是如果没有人观看就会泄漏的部分。这个教训被写入存储库助手中:一个经过审核的项目在多个位置创建了对象 URL,并以精确的零撤销它们,因此每个预览在选项卡的生命周期内都保留其整个 blob。在手机上,少量的光栅化页面就足以让浏览器杀死该选项卡。

补救措施是结构性的,而不是纪律性的。没有什么直接调用浏览器 API;作用域助手使用 URL 运行您的代码,并在代码成功、抛出和拒绝时撤销它,并且托管句柄为超出单个函数寿命的情况提供幂等撤销。正确的清理是默认的,而不是每个调用站点都必须记住的事情。

这不包括什么 - 该工具无法保护您稍后上传到其他地方的文件;当您的工作流程离开选项卡时,隐私就结束了

要验证而不是信任,请在选择文件之前打开网络面板,并在整个作业中保持打开状态。选择文件,转换它,重新计时,下载结果。页面加载时会出现对页面及其脚本的请求;不应该出现的是任何负载为文件的请求。在整个会话中保留日志,这样步骤之间就不会遗漏任何内容。

两项诚实的资格。页面可以加载来自其他来源的分析或广告脚本,这些脚本在同一面板中可见,并且与您的文件是否已发送是一个单独的问题。该属性在选项卡处结束:本地处理的工具无法保护您随后通过电子邮件发送、同步到云存储或粘贴到其他服务的文件。本地处理减少了对您自己机器的暴露;之后它不会跟随该文件。

要点:您的文件、您的选项卡、您的磁盘 — Subtitle Toolkit 如何在本地完成整个工作并让您验证它

路径是文件句柄、内存中文本、内存中提示、Blob、下载,并且该序列中的任何内容都不需要服务器。文件由页面读取而不是发送给页面,转换为对象,并作为新文件写回,原始文件始终保持不变。

对于机密材料更喜欢这种方式的原因不是做出了承诺,而是声明可以在大约一分钟内检查。首先打开网络面板,完成整个工作,并读取日志。本地处理的工具将向您显示一个面板,无需携带您的成绩单,这比任何隐私政策都有更强的保证。