zhaohappy / libmedia

一个 TypeScript 实现的高性能媒体库,支持 WebCodecs 和 Wasm。 A high-performance media library implemented in TypeScript, support WebCodecs and Wasm.
https://zhaohappy.github.io/libmedia/product/player/player.html
GNU Lesser General Public License v3.0
82 stars 13 forks source link

AVPlayer 字幕错误 #9

Open imzlh opened 2 weeks ago

imzlh commented 2 weeks ago

TypeError: Failed to execute 'decode' on 'TextDecoder': The provided ArrayBufferView value must not be shared.

function n(t) {
            if (t instanceof Uint8Array && s && !("function" == typeof SharedArrayBuffer && t.buffer instanceof SharedArrayBuffer))
                return s.decode(t); // <- ERROR
            let e = "";
            for (let i = 0; i < t.length; ) {
                let r = t[i++ >>> 0];
                if (!(128 & r)) {
                    e += String.fromCharCode(r);
                    continue
                }
                let s = 63 & t[i++ >>> 0];
....
imzlh commented 2 weeks ago

说实在的我觉得莫名其妙,多试了几次又莫名其妙又好了 但是还有一个BUG 当当前时间内有ASS字幕内容时回退10s时字幕没有更新

zhaohappy commented 2 weeks ago

有稳定复现步骤吗,两个我这都无法复现

imzlh commented 1 week ago

有稳定复现步骤吗,两个我这都无法复现

https://github.com/user-attachments/assets/db74c8cf-86fb-472c-bef2-ae0878e7bc41

zhaohappy commented 1 week ago

把你这个字幕文件发上来看看

imzlh commented 1 week ago

video: http://175.42.241.21:7297/001.mkv ass: http://175.42.241.21:7297/001.ass

zhaohappy commented 1 week ago

还是没有复现,你用线上的那个在线播放器能复现吗

imzlh commented 1 week ago

还是没有复现,你用线上的那个在线播放器能复现吗

https://github.com/user-attachments/assets/f90631b5-c5a7-4f09-af04-0ac024ac64a3

zhaohappy commented 1 week ago

发一下 seek 前后的控制台日志

imzlh commented 1 week ago

[src/avplayer/AVPlayer.ts][line 1859] [info] call seek, timestamp: 10400, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 1d305da1-9f44-4d78-aa3a-61cdcd14d167:173 [src/avpipeline/AudioRenderPipeline.ts][line 609] [debug] wait current pull front frame before seek, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 863] [debug] before seek end, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 1d305da1-9f44-4d78-aa3a-61cdcd14d167:173 [src/avpipeline/AudioRenderPipeline.ts][line 640] [debug] before seek end, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 47e6b816-abc2-4f06-80fe-ae4db30791b7:173 [src/avformat/demux.ts][line 547] [debug] seek in video stream, streamIndex: 0, timestamp: 10400, flags: 8 avplayer.js:1 [src/avplayer/AVPlayer.ts][line 1778] [debug] seeked to packet timestamp: 7591, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 47e6b816-abc2-4f06-80fe-ae4db30791b7:173 [src/avformat/demux.ts][line 547] [debug] seek in audio stream, streamIndex: 0, timestamp: 10400, flags: 8 47e6b816-abc2-4f06-80fe-ae4db30791b7:173 [src/avformat/formats/IAssFormat.ts][line 217] [debug] seek in cues, found index: 3, pts: 12083, pos: 8300 86b91abd-8d73-4a26-9e95-3ea6844082ab:173 [src/avpipeline/AudioDecodePipeline.ts][line 300] [info] reset audio decoder, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 86a2c364-7307-44bb-bf0a-bf6d0feec451:173 [src/avpipeline/VideoDecodePipeline.ts][line 665] [info] reset video decoder, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 1d305da1-9f44-4d78-aa3a-61cdcd14d167:173 [src/avpipeline/AudioRenderPipeline.ts][line 701] [debug] sync seek time end, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 913] [debug] sync seek time end, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 1d305da1-9f44-4d78-aa3a-61cdcd14d167:173 [src/avpipeline/AudioRenderPipeline.ts][line 723] [debug] after seek end, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 948] [debug] got first video frame, pts: 10427(10427ms), taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 964] [debug] after seek end, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 234] [debug] video render sync pts accelerate, targetPTS: 12293, currentPTS: 11637, diff: 656, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 60ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 530] [debug] video render accelerate startTimestamp sub: 100, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 530] [debug] video render accelerate startTimestamp sub: 56, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 234] [debug] video render sync pts accelerate, targetPTS: 19376, currentPTS: 19186, diff: 190, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 530] [debug] video render accelerate startTimestamp sub: 100, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 530] [debug] video render accelerate startTimestamp sub: 90, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 234] [debug] video render sync pts accelerate, targetPTS: 20400, currentPTS: 20103, diff: 297, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 20ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 530] [debug] video render accelerate startTimestamp sub: 100, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e 0ecfcf51-45fc-45bf-bc52-16ea3e9e44b5:173 [src/avpipeline/VideoRenderPipeline.ts][line 530] [debug] video render accelerate startTimestamp sub: 97, taskId: 57a58b28-9eac-4a9c-aaa0-8796adb8ed6e

zhaohappy commented 1 week ago

真复现不了。。。同样的时间点 seek 也没出现,要不你在 src/avplayer/subtitle/SubtitleRender.ts 里面调试一下,看看是什么情况

zhaohappy commented 6 days ago

TypeError: Failed to execute 'decode' on 'TextDecoder': The provided ArrayBufferView value must not be shared.

好家伙,今天把 chrome 更新到 129,这个问题竟然偶现了。问题是已经判断是 ShareArraubuffer 不走进去,它又是怎么进去的 。。。

zhaohappy commented 5 days ago

你再用官网的播放器测试一下,改了一版