视频封面已经生成PNG文件为什么打开后还是空白我原本会把文件能够保存、图片能够打开当成第一轮验收的终点。这次海浪截帧试验让我把检查再往前推一步PNG里究竟有没有来自视频的画面。保存成功只能证明有一份图片结果。它不能替应用回答这份结果是否满足封面要求。我测的输入取自公开海浪素材。先准备6秒、640×360的无音轨版本再分别做成H.264的MP4和VP8的WebM。三个桌面浏览器内核各对每种格式加载10次首批共60次。这些数字来自同一个原片的两种编码。没有把两种格式算作两段独立拍摄素材也没有把固定矩阵称为真实用户成功率。在loadedmetadata事件后立即画到canvas60次结果都是全透明。alpha全部为0。绘制没有报错。视频尺寸已经能读取仍不代表当时有可画的视频像素图片文件自然也不能替代这个判断。我把这些实际输出保留下来后才更容易解释一张可以打开的PNG完全可能没有交付者想要的海浪。左侧棋盘格是页面底色透过透明区域显示出来的效果。它不在源视频里。右侧是同一HTTP试验等到loadeddata以后绘制的海浪首批60次都得到不透明画面。这张图来自独立复现页而非图映产品界面作用是让“文件有了”和“视频像素有了”各自有一份看得见的结果。再往下还要看选中了什么内容。我把1秒黑片头加到原来的6秒海浪前面得到7秒的受控文件。三个内核各试一次后都在数据就绪时画出不透明黑色alpha为255且RGB各通道低于8。这里确实有画面。若需求是取开场第一帧它可能符合要求若需求是展示海滩就不符合。这个区别不能让PNG是否存在替我们决定。我也用 图映 ImgIng 做了产品预览核对。在中文视频抠像Beta工作台里导入6秒海浪移到2.117秒并等寻址结束后执行当前帧预览。页面给出的结果是“当前帧没有识别到明显主体”。源视频已经显示出来。这里没有验封面导出更没有把“主体未识别”记成读取视频失败两条路径要分开看。给个人项目交付这类功能时我会把可打开文件、有效视频像素和符合选帧要求分别验收。第一项保留文件本身。第二项查看透明度以及画面。第三项回到需求指定的位置与内容必要时同时保存原视频和目标时间。只要三项分开记录就能避免用一个成功提示覆盖所有情况本轮也没有实现能够自动替人决定最佳封面的算法。保留透明版本有实际用途。本次另在Chromium里把同一空画布输出成PNG和JPEG重新读取时PNG仍透明而JPEG成了不透明黑色。这个补测只有一个内核。它提醒我诊断时别只留最终JPEG否则空画布这一条线索会丢掉。不能因此推断所有黑JPEG都来自空画布原片真正的黑场仍然需要单独检查。实验在macOS上使用Chromium 149、Firefox 151及WebKit 26.5测试构建。此处WebKit不等于正式Safari。自然素材出自Alexander Grebenkov的冰岛Lækjavik海滩视频按CC BY 3.0许可截取、缩放和转码黑片头是另加的受控条件。素材不是自拍也没有测手机和任意跨源输入。遇到已经有PNG却无法交付的封面我会先留下这个文件并检查alpha再在原加载路径等到当前帧数据后重试同一个位置。画面不透明却仍是黑的就回看原片这一刻。需要改换位置时把选帧要求讲清楚。这样下一次验收有明确对象文件存在、像素存在和内容合用就不会再被压成同一个勾。