fix(canvas): [PKG-CANVAS-SUBTITLE-01] attach native subtitle tracks

This commit is contained in:
Harvey Zhao committed 2026-09-14 18:51:57 +08:00
1 parent d89728c0a6
commit c3967bcbf4
23 files changed
+1459 -11

No files matched your search

+16
View File
@@ -204,6 +204,21 @@ function createFrameScheduler(draw, active) {
}
};
}
function forwardSubtitleTrack(canvas, video, initialTrack, active) {
if (!active())
return;
const append = canvas.appendChild;
initialTrack.kind = "metadata";
initialTrack.default = true;
video.appendChild(initialTrack);
canvas.appendChild = (node) => {
if (active() && node.nodeType === 1 && node.nodeName === "TRACK" && "namespaceURI" in node && node.namespaceURI === "http://www.w3.org/1999/xhtml") {
initialTrack.remove();
return video.appendChild(node);
}
return append.call(canvas, node);
};
}
function artplayerProxyCanvas(callback) {
return (art) => {
const constructor = art.constructor;
@@ -262,6 +277,7 @@ function artplayerProxyCanvas(callback) {
scheduler.request();
}
try {
forwardSubtitleTrack(canvas, video, constructor.utils.createElement("track"), active);
listen("destroy", destroy);
listen("video:loadedmetadata", () => {
if (hasDimensions(video)) {