mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-25 16:11:20 -08:00
fix(canvas): [PKG-CANVAS-SUBTITLE-01] attach native subtitle tracks
This commit is contained in:
1 parent
d89728c0a6
commit
c3967bcbf4
23 files changed
+1459
-11
No files matched your search
@@ -5,6 +5,7 @@ import { hasDimensions, resizeCanvas } from './geometry'
|
||||
import { ownMedia } from './media'
|
||||
import { createRenderer } from './renderer'
|
||||
import { createFrameScheduler } from './scheduler'
|
||||
import { forwardSubtitleTrack } from './subtitles'
|
||||
|
||||
function artplayerProxyCanvas(callback?: DrawCallback) {
|
||||
return (art: Artplayer): HTMLCanvasElement => {
|
||||
@@ -67,6 +68,7 @@ function artplayerProxyCanvas(callback?: DrawCallback) {
|
||||
}
|
||||
|
||||
try {
|
||||
forwardSubtitleTrack(canvas, video, constructor.utils.createElement('track'), active)
|
||||
listen('destroy', destroy)
|
||||
listen('video:loadedmetadata', () => {
|
||||
if (hasDimensions(video)) {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
export function forwardSubtitleTrack(canvas: HTMLCanvasElement, video: HTMLVideoElement, initialTrack: HTMLTrackElement, active: () => boolean): void {
|
||||
if (!active())
|
||||
return
|
||||
const append = canvas.appendChild
|
||||
initialTrack.kind = 'metadata'
|
||||
initialTrack.default = true
|
||||
video.appendChild(initialTrack)
|
||||
canvas.appendChild = <T extends Node>(node: T): T => {
|
||||
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) as T
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user