From b8314a96e3f6c106f57185c34917156a8b4cb0df Mon Sep 17 00:00:00 2001 From: Jerome Wu Date: Wed, 5 Oct 2022 17:51:09 +0800 Subject: [PATCH] Update website and send total=-1 when no content-type --- apps/website/README.md | 10 +- apps/website/docs/api/classes/FFmpeg.md | 44 ++++---- apps/website/docusaurus.config.js | 5 +- apps/website/package.json | 1 + apps/website/sidebars.js | 13 +-- .../components/ExternalLibraries/index.tsx | 104 ++++++++++++++++++ .../ExternalLibraries/styles.module.css | 17 +++ .../src/components/Playground/index.tsx | 17 +++ apps/website/src/pages/index.tsx | 6 +- apps/website/src/pages/markdown-page.md | 7 -- apps/website/src/pages/playground.md | 8 ++ apps/website/static/img/libs/freetype.png | Bin 0 -> 6978 bytes apps/website/static/img/libs/lame.gif | Bin 0 -> 3336 bytes apps/website/static/img/libs/libvpx.png | Bin 0 -> 16683 bytes apps/website/static/img/libs/opus.png | Bin 0 -> 8104 bytes apps/website/static/img/libs/theora.png | Bin 0 -> 12091 bytes apps/website/static/img/libs/vorbis.png | Bin 0 -> 6139 bytes apps/website/static/img/libs/webp.png | Bin 0 -> 4373 bytes apps/website/static/img/libs/x264.png | Bin 0 -> 9514 bytes apps/website/static/img/libs/x265.webp | Bin 0 -> 6160 bytes package-lock.json | 2 + packages/ffmpeg/package.json | 5 +- packages/ffmpeg/src/classes.ts | 2 +- packages/ffmpeg/src/errors.ts | 3 - packages/ffmpeg/src/utils.ts | 5 +- packages/ffmpeg/tsconfig.d.json | 10 -- 26 files changed, 193 insertions(+), 66 deletions(-) create mode 100644 apps/website/src/components/ExternalLibraries/index.tsx create mode 100644 apps/website/src/components/ExternalLibraries/styles.module.css create mode 100644 apps/website/src/components/Playground/index.tsx delete mode 100644 apps/website/src/pages/markdown-page.md create mode 100644 apps/website/src/pages/playground.md create mode 100644 apps/website/static/img/libs/freetype.png create mode 100644 apps/website/static/img/libs/lame.gif create mode 100644 apps/website/static/img/libs/libvpx.png create mode 100644 apps/website/static/img/libs/opus.png create mode 100644 apps/website/static/img/libs/theora.png create mode 100644 apps/website/static/img/libs/vorbis.png create mode 100644 apps/website/static/img/libs/webp.png create mode 100644 apps/website/static/img/libs/x264.png create mode 100644 apps/website/static/img/libs/x265.webp delete mode 100644 packages/ffmpeg/tsconfig.d.json diff --git a/apps/website/README.md b/apps/website/README.md index aaba2fa..a6f05e1 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -5,13 +5,13 @@ This website is built using [Docusaurus 2](https://docusaurus.io/), a modern sta ### Installation ``` -$ yarn +$ lerna bootstrap ``` ### Local Development ``` -$ yarn start +$ npm start ``` This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. @@ -19,7 +19,7 @@ This command starts a local development server and opens up a browser window. Mo ### Build ``` -$ yarn build +$ npm run build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. @@ -29,13 +29,13 @@ This command generates static content into the `build` directory and can be serv Using SSH: ``` -$ USE_SSH=true yarn deploy +$ USE_SSH=true npm run deploy ``` Not using SSH: ``` -$ GIT_USER= yarn deploy +$ GIT_USER= npm run deploy ``` If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/apps/website/docs/api/classes/FFmpeg.md b/apps/website/docs/api/classes/FFmpeg.md index bf78b4b..0732787 100644 --- a/apps/website/docs/api/classes/FFmpeg.md +++ b/apps/website/docs/api/classes/FFmpeg.md @@ -28,7 +28,7 @@ const ffmpeg = new FFmpeg(); #### Defined in -[packages/ffmpeg/src/classes.ts:97](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L97) +[packages/ffmpeg/src/classes.ts:97](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L97) ## Properties @@ -38,7 +38,7 @@ const ffmpeg = new FFmpeg(); #### Defined in -[packages/ffmpeg/src/classes.ts:95](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L95) +[packages/ffmpeg/src/classes.ts:95](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L95) ___ @@ -51,7 +51,7 @@ be called when we receive message from web worker. #### Defined in -[packages/ffmpeg/src/classes.ts:94](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L94) +[packages/ffmpeg/src/classes.ts:94](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L94) ___ @@ -61,7 +61,7 @@ ___ #### Defined in -[packages/ffmpeg/src/classes.ts:88](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L88) +[packages/ffmpeg/src/classes.ts:88](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L88) ___ @@ -121,7 +121,7 @@ node_modules/@types/node/events.d.ts:290 #### Defined in -[packages/ffmpeg/src/classes.ts:84](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L84) +[packages/ffmpeg/src/classes.ts:84](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L84) ___ @@ -131,7 +131,7 @@ ___ #### Defined in -[packages/ffmpeg/src/classes.ts:85](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L85) +[packages/ffmpeg/src/classes.ts:85](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L85) ___ @@ -141,7 +141,7 @@ ___ #### Defined in -[packages/ffmpeg/src/classes.ts:86](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L86) +[packages/ffmpeg/src/classes.ts:86](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L86) ## Event Methods @@ -172,7 +172,7 @@ ffmpeg.on(FFmpeg.DOWNLOAD, ({ url, total, received, delta, done }) => { #### Defined in -[packages/ffmpeg/src/classes.ts:33](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L33) +[packages/ffmpeg/src/classes.ts:33](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L33) ▸ **on**(`event`, `listener`): [`FFmpeg`](FFmpeg.md) @@ -203,7 +203,7 @@ log includes output to stdout and stderr. #### Defined in -[packages/ffmpeg/src/classes.ts:52](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L52) +[packages/ffmpeg/src/classes.ts:52](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L52) ▸ **on**(`event`, `listener`): [`FFmpeg`](FFmpeg.md) @@ -235,7 +235,7 @@ input and output video/audio file are the same. #### Defined in -[packages/ffmpeg/src/classes.ts:69](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L69) +[packages/ffmpeg/src/classes.ts:69](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L69) ___ @@ -278,7 +278,7 @@ const data = ffmpeg.readFile("video.mp4"); #### Defined in -[packages/ffmpeg/src/classes.ts:197](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L197) +[packages/ffmpeg/src/classes.ts:197](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L197) ___ @@ -303,7 +303,7 @@ as it initializes WebAssembly and other essential variables. #### Defined in -[packages/ffmpeg/src/classes.ts:166](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L166) +[packages/ffmpeg/src/classes.ts:166](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L166) ___ @@ -320,7 +320,7 @@ Terminate all ongoing API calls and terminate web worker. #### Defined in -[packages/ffmpeg/src/classes.ts:218](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L218) +[packages/ffmpeg/src/classes.ts:218](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L218) ___ @@ -344,7 +344,7 @@ Create a directory. #### Defined in -[packages/ffmpeg/src/classes.ts:315](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L315) +[packages/ffmpeg/src/classes.ts:315](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L315) ___ @@ -366,7 +366,7 @@ Delete an empty directory. #### Defined in -[packages/ffmpeg/src/classes.ts:337](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L337) +[packages/ffmpeg/src/classes.ts:337](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L337) ___ @@ -388,7 +388,7 @@ Delete a file. #### Defined in -[packages/ffmpeg/src/classes.ts:293](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L293) +[packages/ffmpeg/src/classes.ts:293](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L293) ___ @@ -410,7 +410,7 @@ List directory contents. #### Defined in -[packages/ffmpeg/src/classes.ts:326](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L326) +[packages/ffmpeg/src/classes.ts:326](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L326) ___ @@ -441,7 +441,7 @@ const data = await ffmpeg.readFile("video.mp4"); #### Defined in -[packages/ffmpeg/src/classes.ts:272](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L272) +[packages/ffmpeg/src/classes.ts:272](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L272) ___ @@ -464,7 +464,7 @@ Rename a file or directory. #### Defined in -[packages/ffmpeg/src/classes.ts:304](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L304) +[packages/ffmpeg/src/classes.ts:304](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L304) ___ @@ -496,7 +496,7 @@ await ffmpeg.writeFile("text.txt", "hello world"); #### Defined in -[packages/ffmpeg/src/classes.ts:246](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L246) +[packages/ffmpeg/src/classes.ts:246](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L246) ___ @@ -514,7 +514,7 @@ register worker message event handlers. #### Defined in -[packages/ffmpeg/src/classes.ts:104](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L104) +[packages/ffmpeg/src/classes.ts:104](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L104) ___ @@ -537,7 +537,7 @@ Generic function to send messages to web worker. #### Defined in -[packages/ffmpeg/src/classes.ts:143](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/6060815/packages/ffmpeg/src/classes.ts#L143) +[packages/ffmpeg/src/classes.ts:143](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/44115b1/packages/ffmpeg/src/classes.ts#L143) ___ diff --git a/apps/website/docusaurus.config.js b/apps/website/docusaurus.config.js index 7008b3e..07d63b6 100644 --- a/apps/website/docusaurus.config.js +++ b/apps/website/docusaurus.config.js @@ -8,7 +8,7 @@ const darkCodeTheme = require("prism-react-renderer/themes/dracula"); const config = { title: "ffmpeg.wasm", tagline: - "ffmpeg.wasm is pure WebAssembly / JavaScript port of FFmpeg enabling video & audio record, convert and stream right inside browsers!", + "ffmpeg.wasm is a pure WebAssembly / JavaScript port of FFmpeg enabling video & audio record, convert and stream right inside browsers!", url: "https://ffmpegwasm.netlify.app", baseUrl: "/", onBrokenLinks: "throw", @@ -68,9 +68,10 @@ const config = { type: "doc", docId: "intro", position: "left", - label: "Tutorial", + label: "Docs", }, { to: "/blog", label: "Blog", position: "left" }, + { to: "/playground", label: "Playground", position: "left" }, { href: "https://github.com/ffmpegwasm/ffmpeg.wasm", label: "GitHub", diff --git a/apps/website/package.json b/apps/website/package.json index c90e7d3..d183138 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -18,6 +18,7 @@ "dependencies": { "@docusaurus/core": "2.1.0", "@docusaurus/preset-classic": "2.1.0", + "@ffmpeg/ffmpeg": "^0.11.5", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", "prism-react-renderer": "^1.3.5", diff --git a/apps/website/sidebars.js b/apps/website/sidebars.js index 9ab54c2..6a96ed4 100644 --- a/apps/website/sidebars.js +++ b/apps/website/sidebars.js @@ -14,20 +14,17 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], // But you can create a sidebar manually - /* tutorialSidebar: [ - 'intro', - 'hello', + "intro", { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], + type: "category", + label: "API", + items: ["api/classes/FFmpeg"], }, ], - */ }; module.exports = sidebars; diff --git a/apps/website/src/components/ExternalLibraries/index.tsx b/apps/website/src/components/ExternalLibraries/index.tsx new file mode 100644 index 0000000..20d4c25 --- /dev/null +++ b/apps/website/src/components/ExternalLibraries/index.tsx @@ -0,0 +1,104 @@ +import React from "react"; +import clsx from "clsx"; +import styles from "./styles.module.css"; + +interface LibraryItem { + title: string; + desc: string; + img: string; + isBlackBackground?: boolean; +} + +const libs: LibraryItem[] = [ + { + title: "x264", + desc: "H.264 Codec", + img: require("@site/static/img/libs/x264.png").default, + isBlackBackground: true, + }, + { + title: "x265", + desc: "H.265 codec", + img: require("@site/static/img/libs/x265.webp").default, + }, + { + title: "libvpx", + desc: "VP8/VP9 codec", + img: require("@site/static/img/libs/libvpx.png").default, + }, + { + title: "theora", + desc: "OGV codec", + img: require("@site/static/img/libs/theora.png").default, + }, + { + title: "lame", + desc: "MP3 codec", + img: require("@site/static/img/libs/lame.gif").default, + }, + { + title: "vorbis", + desc: "OGG codec", + img: require("@site/static/img/libs/vorbis.png").default, + }, + { + title: "opus", + desc: "OPUS codec", + img: require("@site/static/img/libs/opus.png").default, + }, + { + title: "freetype2", + desc: "Font file renderer", + img: require("@site/static/img/libs/freetype.png").default, + }, + { + title: "libass", + desc: "subtitle renderer", + img: require("@site/static/img/libs/freetype.png").default, + }, + { + title: "libwebp", + desc: "WEBP codec", + img: require("@site/static/img/libs/webp.png").default, + }, +]; + +function Library({ title, desc, img, isBlackBackground = false }: LibraryItem) { + return ( +
+
+ +
+
+

{title}

+

{desc}

+
+
+ ); +} + +export default function ExternalLibraries(): JSX.Element { + return ( +
+
+

External Libraries

+

+ {" "} + ffmpeg.wasm is built with common external libraries, and more of + libraries to be added! +

+
+ {libs.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/apps/website/src/components/ExternalLibraries/styles.module.css b/apps/website/src/components/ExternalLibraries/styles.module.css new file mode 100644 index 0000000..1868af0 --- /dev/null +++ b/apps/website/src/components/ExternalLibraries/styles.module.css @@ -0,0 +1,17 @@ +.libraries { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; + background-color: rgba(229,231,235, 1); + color: #1b1b1d; +} + +.libraryImg { + height: 96px; + padding: 16px; +} + +.blackBackground { + background-color: #1b1b1d; +} diff --git a/apps/website/src/components/Playground/index.tsx b/apps/website/src/components/Playground/index.tsx new file mode 100644 index 0000000..09ab0a0 --- /dev/null +++ b/apps/website/src/components/Playground/index.tsx @@ -0,0 +1,17 @@ +import React, { useState } from "react"; +import { FFmpeg } from "@ffmpeg/ffmpeg"; + +export default function Playground() { + const [loaded, setLoaded] = useState(false); + const ffmpeg = new FFmpeg(); + const load = async () => { + ffmpeg.on(FFmpeg.DOWNLOAD, ({ url, total, received, done }) => { + console.log(url, total, received, done); + }); + await ffmpeg.load({ + coreURL: "http://localhost:8080/packages/core/dist/umd/ffmpeg-core.js", + }); + setLoaded(true); + }; + return loaded ? <> : ; +} diff --git a/apps/website/src/pages/index.tsx b/apps/website/src/pages/index.tsx index 3efd98b..ca626ad 100644 --- a/apps/website/src/pages/index.tsx +++ b/apps/website/src/pages/index.tsx @@ -4,6 +4,7 @@ import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import Layout from "@theme/Layout"; import HomepageFeatures from "@site/src/components/HomepageFeatures"; +import ExternalLibraries from "@site/src/components/ExternalLibraries"; import styles from "./index.module.css"; @@ -31,12 +32,13 @@ export default function Home(): JSX.Element { const { siteConfig } = useDocusaurusContext(); return (
+
); diff --git a/apps/website/src/pages/markdown-page.md b/apps/website/src/pages/markdown-page.md deleted file mode 100644 index 9756c5b..0000000 --- a/apps/website/src/pages/markdown-page.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Markdown page example ---- - -# Markdown page example - -You don't need React to write simple standalone pages. diff --git a/apps/website/src/pages/playground.md b/apps/website/src/pages/playground.md new file mode 100644 index 0000000..92b8bf8 --- /dev/null +++ b/apps/website/src/pages/playground.md @@ -0,0 +1,8 @@ +import Playground from "@site/src/components/Playground"; + +# Playground + +Hi! Welcome to ffmpeg.wasm playground! Here you can try and test ffmpeg.wasm +with ease. :smile: + + diff --git a/apps/website/static/img/libs/freetype.png b/apps/website/static/img/libs/freetype.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8aa92414e10350e188907dc585b1f7fc4d3f24 GIT binary patch literal 6978 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 J%QM*6{{h9V*)jkC literal 0 HcmV?d00001 diff --git a/apps/website/static/img/libs/lame.gif b/apps/website/static/img/libs/lame.gif new file mode 100644 index 0000000000000000000000000000000000000000..20d2a5a08c606cf83ff6439e11c1ec470f61fde2 GIT binary patch literal 3336 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 S4&n2d!8s8u1DvE80RTHx{ANJ_ literal 0 HcmV?d00001 diff --git a/apps/website/static/img/libs/libvpx.png b/apps/website/static/img/libs/libvpx.png new file mode 100644 index 0000000000000000000000000000000000000000..40ae36bc03168b6fcd1bdbc2a37e3d8d1ac6ee63 GIT binary patch literal 16683 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 literal 0 HcmV?d00001 diff --git a/apps/website/static/img/libs/webp.png b/apps/website/static/img/libs/webp.png new file mode 100644 index 0000000000000000000000000000000000000000..23c9483a484f849d9e83c740d1b56e5a1441a102 GIT binary patch literal 4373 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 z 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�!;+EC%= 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 => { if (!this.#worker) { - this.#worker = new Worker(new URL("./worker.ts", import.meta.url)); + this.#worker = new Worker(new URL("./worker", import.meta.url)); this.#registerHandlers(); } return this.#send({ diff --git a/packages/ffmpeg/src/errors.ts b/packages/ffmpeg/src/errors.ts index afac3e2..424d4b3 100644 --- a/packages/ffmpeg/src/errors.ts +++ b/packages/ffmpeg/src/errors.ts @@ -1,9 +1,6 @@ export const ERROR_RESPONSE_BODY_READER = new Error( "failed to get response body reader" ); -export const ERROR_ZERO_CONTENT_LENGTH = new Error( - "failed to get Content-Length" -); export const ERROR_UNKNOWN_MESSAGE_TYPE = new Error("unknown message type"); export const ERROR_NOT_LOADED = new Error( "ffmpeg is not loaded, call `await ffmpeg.load()` first" diff --git a/packages/ffmpeg/src/utils.ts b/packages/ffmpeg/src/utils.ts index d18a75e..de13046 100644 --- a/packages/ffmpeg/src/utils.ts +++ b/packages/ffmpeg/src/utils.ts @@ -1,6 +1,5 @@ import { ERROR_RESPONSE_BODY_READER, - ERROR_ZERO_CONTENT_LENGTH, ERROR_INCOMPLETED_DOWNLOAD, } from "./errors"; import { HeaderContentLength } from "./const"; @@ -28,8 +27,8 @@ export const downloadWithProgress = async ( let buf; try { - const total = parseInt(resp.headers.get(HeaderContentLength) || "0"); - if (total === 0) throw ERROR_ZERO_CONTENT_LENGTH; + // Set total to -1 to indicate that there is not Content-Type Header. + const total = parseInt(resp.headers.get(HeaderContentLength) || "-1"); const reader = resp.body?.getReader(); if (!reader) throw ERROR_RESPONSE_BODY_READER; diff --git a/packages/ffmpeg/tsconfig.d.json b/packages/ffmpeg/tsconfig.d.json deleted file mode 100644 index 6fae147..0000000 --- a/packages/ffmpeg/tsconfig.d.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "rootDir": "src", - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "outFile": "dist/umd/ffmpeg.d.ts" - } -}