ZuodaoTech/everyone-can-use-english

Failed to decode waveform from mp4 file for the dev build

chrox opened this issue · 10 comments

But the same video worked on the 0.3.4 release build.

This screenshot was running on the dev build on macOS 14.3.1 M1 chip with command yarn enjoy:start with the latest commit :
image

And this screenshot was running on the 0.3.4 release build on the same mac:
image

The downloaded files are the same: enjoy://library/videos/f2e69d7a31f789f253b63ac49aa1cdc1.mp4. It seems the enjoy scheme is failed to be translated to a blob content on the dev build like in the release blob:file:///c318e03c-b867-4925-8f74-7af80c3f06ff.

What is even more weird is that when the same video file is successfully decoded once on the release build then it can be decoded on the dev build. But the blob content is different from that on the release build like this: blob:http://localhost:5173/a9e0cbe1-46d3-47d9-9741-97dc26438396.
image

Is there anything I missed to config on the dev build?

Decoding mp3 audio files works fine though on the dev build.
image

That's weird. I'll look into it.

I've tested it, but I can't replicate your result. I think the video might be corrupted when you added it in the dev build.

Try removing it and adding it again. Does the error still persist?

The video files were downloaded twice in the dev build and once in the release build and they shared the same checksum.
image

But still the dev build could not decode the waveform. It feels like a security policy problem on specific version of electron on macOS. I'll also check this on my Linux box.

Have you tried other videos? Does the error occur in all of them?

Have you tried other videos? Does the error occur in all of them?

Yes, including videos from the @TED and the @CNN youtube channels and from custom video files. It also affects local video files w/wo additional ffmpeg transcode.

This is the package info on my macOS.

➜  enjoy git:(main) node --version
v22.5.1
➜  enjoy git:(main) yarn info --name-only
├─ @andrkrn/ffprobe-static@npm:5.2.0
├─ @electron-forge/cli@npm:7.4.0
├─ @electron-forge/maker-deb@npm:7.4.0
├─ @electron-forge/maker-dmg@npm:7.4.0
├─ @electron-forge/maker-rpm@npm:7.4.0
├─ @electron-forge/maker-squirrel@npm:7.4.0
├─ @electron-forge/maker-zip@npm:7.4.0
├─ @electron-forge/plugin-auto-unpack-natives@npm:7.4.0
├─ @electron-forge/plugin-fuses@npm:7.4.0
├─ @electron-forge/plugin-vite@npm:7.4.0
├─ @electron-forge/publisher-github@npm:7.4.0
├─ @electron-forge/publisher-s3@npm:7.4.0
├─ @electron/fuses@npm:1.8.0
├─ @hookform/resolvers@npm:3.9.0
├─ @langchain/community@npm:0.2.22
├─ @mozilla/readability@npm:0.5.0
├─ @playwright/test@npm:1.45.3
├─ @radix-ui/react-accordion@npm:1.2.0
├─ @radix-ui/react-alert-dialog@npm:1.1.1
├─ @radix-ui/react-aspect-ratio@npm:1.1.0
├─ @radix-ui/react-avatar@npm:1.1.0
├─ @radix-ui/react-collapsible@npm:1.1.0
├─ @radix-ui/react-dropdown-menu@npm:2.1.1
├─ @radix-ui/react-hover-card@npm:1.1.1
├─ @radix-ui/react-icons@npm:1.3.0
├─ @radix-ui/react-label@npm:2.1.0
├─ @radix-ui/react-menubar@npm:1.1.1
├─ @radix-ui/react-popover@npm:1.1.1
├─ @radix-ui/react-progress@npm:1.1.0
├─ @radix-ui/react-radio-group@npm:1.2.0
├─ @radix-ui/react-scroll-area@npm:1.1.0
├─ @radix-ui/react-select@npm:2.1.1
├─ @radix-ui/react-separator@npm:1.1.0
├─ @radix-ui/react-slider@npm:1.2.0
├─ @radix-ui/react-slot@npm:1.1.0
├─ @radix-ui/react-switch@npm:1.1.0
├─ @radix-ui/react-tabs@npm:1.1.0
├─ @radix-ui/react-toast@npm:1.2.1
├─ @radix-ui/react-toggle@npm:1.1.0
├─ @radix-ui/react-tooltip@npm:1.1.2
├─ @rails/actioncable@npm:7.1.3
├─ @sentry/electron@npm:5.3.0
├─ @tailwindcss/typography@npm:0.5.13
├─ @types/ahoy.js@npm:0.4.2
├─ @types/autosize@npm:4.0.3
├─ @types/command-exists@npm:1.2.3
├─ @types/electron-squirrel-startup@npm:1.0.2
├─ @types/fluent-ffmpeg@npm:2.1.25
├─ @types/html-to-text@npm:9.0.4
├─ @types/intl-tel-input@npm:18.1.4
├─ @types/lodash@npm:4.17.7
├─ @types/mark.js@npm:8.11.12
├─ @types/node@npm:22.1.0
├─ @types/rails__actioncable@npm:6.1.11
├─ @types/react-dom@npm:18.3.0
├─ @types/react@npm:18.3.3
├─ @types/validator@npm:13.12.0
├─ @types/wavesurfer.js@npm:6.0.12
├─ @typescript-eslint/eslint-plugin@npm:8.0.0
├─ @typescript-eslint/parser@npm:8.0.0
├─ @uidotdev/usehooks@npm:2.4.1
├─ @vidstack/react@npm:1.11.30
├─ @vitejs/plugin-react@npm:4.3.1
├─ ahoy.js@npm:0.4.4
├─ autoprefixer@npm:10.4.20
├─ autosize@npm:6.0.1
├─ axios@npm:1.7.3
├─ camelcase-keys@npm:9.1.3
├─ camelcase@npm:8.0.0
├─ chart.js@npm:4.4.3
├─ cheerio@npm:1.0.0-rc.12
├─ class-variance-authority@npm:0.7.0
├─ clsx@npm:2.1.1
├─ cmdk@npm:1.0.0
├─ command-exists@npm:1.2.9
├─ compromise-paragraphs@npm:0.1.0
├─ compromise-stats@npm:0.1.0
├─ compromise@npm:14.14.0
├─ dayjs@npm:1.11.12
├─ decamelize-keys@npm:2.0.1
├─ decamelize@npm:6.0.0
├─ echogarden@npm:1.5.0
├─ electron-context-menu@npm:4.0.1
├─ electron-devtools-installer@npm:3.2.0
├─ electron-log@npm:5.1.7
├─ electron-playwright-helpers@npm:1.7.1
├─ electron-settings@npm:4.0.4
├─ electron-squirrel-startup@npm:1.0.1
├─ electron@npm:31.3.1
├─ enjoy@workspace:enjoy
├─ eslint-import-resolver-typescript@npm:3.6.1
├─ eslint-plugin-import@npm:2.29.1
├─ eslint@npm:9.8.0
├─ ffmpeg-static@npm:5.2.0
├─ flora-colossus@npm:2.0.0
├─ fluent-ffmpeg@npm:2.1.3
├─ fs-extra@npm:11.2.0
├─ html-to-text@npm:9.0.5
├─ https-proxy-agent@npm:7.0.5
├─ i18next@npm:23.12.2
├─ intl-tel-input@npm:23.8.0
├─ js-md5@npm:0.8.3
├─ langchain@npm:0.2.12
├─ lodash@npm:4.17.21
├─ lucide-react@npm:0.424.0
├─ mark.js@npm:8.11.1
├─ microsoft-cognitiveservices-speech-sdk@npm:1.38.0
├─ next-themes@npm:0.3.0
├─ octokit@npm:4.0.2
├─ openai@npm:4.53.2
├─ pitchfinder@npm:2.3.2
├─ postcss@npm:8.4.40
├─ progress@npm:2.0.3
├─ proxy-agent@npm:6.4.0
├─ react-activity-calendar@npm:2.3.1
├─ react-dom@npm:18.3.1
├─ react-hook-form@npm:7.52.2
├─ react-hotkeys-hook@npm:4.5.0
├─ react-i18next@npm:15.0.0
├─ react-markdown@npm:9.0.1
├─ react-resizable-panels@npm:2.0.22
├─ react-router-dom@npm:6.26.0
├─ react-tooltip@npm:5.28.0
├─ react@npm:18.3.1
├─ reflect-metadata@npm:0.2.2
├─ rimraf@npm:6.0.1
├─ sequelize-typescript@npm:2.1.6
├─ sequelize@npm:6.37.3
├─ sonner@npm:1.5.0
├─ sqlite3@npm:5.1.7
├─ tailwind-merge@npm:2.4.0
├─ tailwind-scrollbar-hide@npm:1.1.7
├─ tailwind-scrollbar@npm:3.1.0
├─ tailwindcss-animate@npm:1.0.7
├─ tailwindcss@npm:3.4.7
├─ ts-node@npm:10.9.2
├─ tslib@npm:2.6.3
├─ typescript@patch:typescript@npm%3A5.5.4#optional!builtin<compat/typescript>::version=5.5.4&hash=379a07
├─ umzug@npm:3.8.1
├─ update-electron-app@npm:3.0.0
├─ vite-plugin-static-copy@npm:1.0.6
├─ vite@npm:5.3.5
├─ wavesurfer.js@npm:7.8.2
├─ zod-to-json-schema@npm:3.23.2
├─ zod@npm:3.23.8
└─ zx@npm:8.1.4

After deleting the enjoy/node_modules and rerun yarn install, the problem disappears. Cheers!
And now the packages list is here:

➜  enjoy git:(main) yarn info --name-only
├─ @andrkrn/ffprobe-static@npm:5.2.0
├─ @electron-forge/cli@npm:7.4.0
├─ @electron-forge/maker-deb@npm:7.4.0
├─ @electron-forge/maker-dmg@npm:7.4.0
├─ @electron-forge/maker-rpm@npm:7.4.0
├─ @electron-forge/maker-squirrel@npm:7.4.0
├─ @electron-forge/maker-zip@npm:7.4.0
├─ @electron-forge/plugin-auto-unpack-natives@npm:7.4.0
├─ @electron-forge/plugin-fuses@npm:7.4.0
├─ @electron-forge/plugin-vite@npm:7.4.0
├─ @electron-forge/publisher-github@npm:7.4.0
├─ @electron-forge/publisher-s3@npm:7.4.0
├─ @electron/fuses@npm:1.8.0
├─ @hookform/resolvers@npm:3.9.0
├─ @langchain/community@npm:0.2.22
├─ @mozilla/readability@npm:0.5.0
├─ @playwright/test@npm:1.45.3
├─ @radix-ui/react-accordion@npm:1.2.0
├─ @radix-ui/react-alert-dialog@npm:1.1.1
├─ @radix-ui/react-aspect-ratio@npm:1.1.0
├─ @radix-ui/react-avatar@npm:1.1.0
├─ @radix-ui/react-collapsible@npm:1.1.0
├─ @radix-ui/react-dropdown-menu@npm:2.1.1
├─ @radix-ui/react-hover-card@npm:1.1.1
├─ @radix-ui/react-icons@npm:1.3.0
├─ @radix-ui/react-label@npm:2.1.0
├─ @radix-ui/react-menubar@npm:1.1.1
├─ @radix-ui/react-popover@npm:1.1.1
├─ @radix-ui/react-progress@npm:1.1.0
├─ @radix-ui/react-radio-group@npm:1.2.0
├─ @radix-ui/react-scroll-area@npm:1.1.0
├─ @radix-ui/react-select@npm:2.1.1
├─ @radix-ui/react-separator@npm:1.1.0
├─ @radix-ui/react-slider@npm:1.2.0
├─ @radix-ui/react-slot@npm:1.1.0
├─ @radix-ui/react-switch@npm:1.1.0
├─ @radix-ui/react-tabs@npm:1.1.0
├─ @radix-ui/react-toast@npm:1.2.1
├─ @radix-ui/react-toggle@npm:1.1.0
├─ @radix-ui/react-tooltip@npm:1.1.2
├─ @rails/actioncable@npm:7.1.3
├─ @sentry/electron@npm:5.3.0
├─ @tailwindcss/typography@npm:0.5.13
├─ @types/ahoy.js@npm:0.4.2
├─ @types/autosize@npm:4.0.3
├─ @types/command-exists@npm:1.2.3
├─ @types/electron-squirrel-startup@npm:1.0.2
├─ @types/fluent-ffmpeg@npm:2.1.25
├─ @types/html-to-text@npm:9.0.4
├─ @types/intl-tel-input@npm:18.1.4
├─ @types/lodash@npm:4.17.7
├─ @types/mark.js@npm:8.11.12
├─ @types/node@npm:22.1.0
├─ @types/rails__actioncable@npm:6.1.11
├─ @types/react-dom@npm:18.3.0
├─ @types/react@npm:18.3.3
├─ @types/validator@npm:13.12.0
├─ @types/wavesurfer.js@npm:6.0.12
├─ @typescript-eslint/eslint-plugin@npm:8.0.0
├─ @typescript-eslint/parser@npm:8.0.0
├─ @uidotdev/usehooks@npm:2.4.1
├─ @vidstack/react@npm:1.11.30
├─ @vitejs/plugin-react@npm:4.3.1
├─ ahoy.js@npm:0.4.4
├─ autoprefixer@npm:10.4.20
├─ autosize@npm:6.0.1
├─ axios@npm:1.7.3
├─ camelcase-keys@npm:9.1.3
├─ camelcase@npm:8.0.0
├─ chart.js@npm:4.4.3
├─ cheerio@npm:1.0.0-rc.12
├─ class-variance-authority@npm:0.7.0
├─ clsx@npm:2.1.1
├─ cmdk@npm:1.0.0
├─ command-exists@npm:1.2.9
├─ compromise-paragraphs@npm:0.1.0
├─ compromise-stats@npm:0.1.0
├─ compromise@npm:14.14.0
├─ dayjs@npm:1.11.12
├─ decamelize-keys@npm:2.0.1
├─ decamelize@npm:6.0.0
├─ echogarden@npm:1.5.0
├─ electron-context-menu@npm:4.0.1
├─ electron-devtools-installer@npm:3.2.0
├─ electron-log@npm:5.1.7
├─ electron-playwright-helpers@npm:1.7.1
├─ electron-settings@npm:4.0.4
├─ electron-squirrel-startup@npm:1.0.1
├─ electron@npm:31.3.1
├─ enjoy@workspace:enjoy
├─ eslint-import-resolver-typescript@npm:3.6.1
├─ eslint-plugin-import@npm:2.29.1
├─ eslint@npm:9.8.0
├─ ffmpeg-static@npm:5.2.0
├─ flora-colossus@npm:2.0.0
├─ fluent-ffmpeg@npm:2.1.3
├─ fs-extra@npm:11.2.0
├─ html-to-text@npm:9.0.5
├─ https-proxy-agent@npm:7.0.5
├─ i18next@npm:23.12.2
├─ intl-tel-input@npm:23.8.0
├─ js-md5@npm:0.8.3
├─ langchain@npm:0.2.12
├─ lodash@npm:4.17.21
├─ lucide-react@npm:0.424.0
├─ mark.js@npm:8.11.1
├─ microsoft-cognitiveservices-speech-sdk@npm:1.38.0
├─ next-themes@npm:0.3.0
├─ octokit@npm:4.0.2
├─ openai@npm:4.53.2
├─ pitchfinder@npm:2.3.2
├─ postcss@npm:8.4.40
├─ progress@npm:2.0.3
├─ proxy-agent@npm:6.4.0
├─ react-activity-calendar@npm:2.3.1
├─ react-dom@npm:18.3.1
├─ react-hook-form@npm:7.52.2
├─ react-hotkeys-hook@npm:4.5.0
├─ react-i18next@npm:15.0.0
├─ react-markdown@npm:9.0.1
├─ react-resizable-panels@npm:2.0.22
├─ react-router-dom@npm:6.26.0
├─ react-tooltip@npm:5.28.0
├─ react@npm:18.3.1
├─ reflect-metadata@npm:0.2.2
├─ rimraf@npm:6.0.1
├─ sequelize-typescript@npm:2.1.6
├─ sequelize@npm:6.37.3
├─ sonner@npm:1.5.0
├─ sqlite3@npm:5.1.7
├─ tailwind-merge@npm:2.4.0
├─ tailwind-scrollbar-hide@npm:1.1.7
├─ tailwind-scrollbar@npm:3.1.0
├─ tailwindcss-animate@npm:1.0.7
├─ tailwindcss@npm:3.4.7
├─ ts-node@npm:10.9.2
├─ tslib@npm:2.6.3
├─ typescript@patch:typescript@npm%3A5.5.4#optional!builtin<compat/typescript>::version=5.5.4&hash=379a07
├─ umzug@npm:3.8.1
├─ update-electron-app@npm:3.0.0
├─ vite-plugin-static-copy@npm:1.0.6
├─ vite@npm:5.3.5
├─ wavesurfer.js@npm:7.8.2
├─ zod-to-json-schema@npm:3.23.2
├─ zod@npm:3.23.8
└─ zx@npm:8.1.4

I diffed the packages lists of the old and the new dev build. And found no difference. But the problematic dev build might have some broken packages installed since the networking condition was poor and I manually interrupted the yarn install several times. And the yarn install for the working dev build goes smoothly. Anyway thank you for your help. I'm now using enjoy to learn German. And I'm still reading the enjoy codebase for now and would like to contribute to this project.

The problem disappears after a clean yarn install and is not replicable. Closing this now.