From 0d121269d7001afcb54b4d33084bd924361cb6de Mon Sep 17 00:00:00 2001 From: Lucas Gelfond Date: Mon, 23 Dec 2024 21:21:19 -0800 Subject: [PATCH] Release - v12.11 | v0.12.7 --- apps/angular-app/src/app/app.component.ts | 25 +++---- apps/nextjs-app/app/Home.tsx | 66 +++++++++++-------- apps/react-vite-app/src/App.tsx | 15 +++-- .../src/components/FFmpegDemo.vue | 2 +- apps/website/docs/getting-started/usage.md | 22 ++++--- package-lock.json | 6 +- packages/core-mt/package.json | 2 +- packages/core/package.json | 2 +- packages/ffmpeg/package.json | 2 +- packages/ffmpeg/src/const.ts | 2 +- 10 files changed, 79 insertions(+), 65 deletions(-) diff --git a/apps/angular-app/src/app/app.component.ts b/apps/angular-app/src/app/app.component.ts index 3fae3e3b70..abcf8d71bf 100644 --- a/apps/angular-app/src/app/app.component.ts +++ b/apps/angular-app/src/app/app.component.ts @@ -4,7 +4,7 @@ import { RouterOutlet } from '@angular/router'; import { FFmpeg } from '@ffmpeg/ffmpeg'; import { fetchFile, toBlobURL } from '@ffmpeg/util'; -const baseURL = "https://unpkg.com/@ffmpeg/core-mt@0.12.6/dist/esm"; +const baseURL = 'https://unpkg.com/@ffmpeg/core-mt@0.12.7/dist/esm'; @Component({ selector: 'app-root', @@ -16,33 +16,34 @@ const baseURL = "https://unpkg.com/@ffmpeg/core-mt@0.12.6/dist/esm"; export class AppComponent { loaded = false; ffmpeg = new FFmpeg(); - videoURL = ""; - message = ""; + videoURL = ''; + message = ''; async load() { - this.ffmpeg.on("log", ({ message }) => { + this.ffmpeg.on('log', ({ message }) => { this.message = message; }); await this.ffmpeg.load({ - coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, "text/javascript"), + coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, 'text/javascript'), wasmURL: await toBlobURL( `${baseURL}/ffmpeg-core.wasm`, - "application/wasm" + 'application/wasm' ), workerURL: await toBlobURL( `${baseURL}/ffmpeg-core.worker.js`, - "text/javascript" + 'text/javascript' ), }); this.loaded = true; - }; + } async transcode() { - const videoURL = "https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi"; - await this.ffmpeg.writeFile("input.avi", await fetchFile(videoURL)); - await this.ffmpeg.exec(["-i", "input.avi", "output.mp4"]); + const videoURL = + 'https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi'; + await this.ffmpeg.writeFile('input.avi', await fetchFile(videoURL)); + await this.ffmpeg.exec(['-i', 'input.avi', 'output.mp4']); const fileData = await this.ffmpeg.readFile('output.mp4'); const data = new Uint8Array(fileData as ArrayBuffer); this.videoURL = URL.createObjectURL( new Blob([data.buffer], { type: 'video/mp4' }) ); - }; + } } diff --git a/apps/nextjs-app/app/Home.tsx b/apps/nextjs-app/app/Home.tsx index 0de8c9f394..17d560526d 100644 --- a/apps/nextjs-app/app/Home.tsx +++ b/apps/nextjs-app/app/Home.tsx @@ -1,42 +1,52 @@ -'use client' +"use client"; -import { FFmpeg } from '@ffmpeg/ffmpeg' -import { fetchFile, toBlobURL } from '@ffmpeg/util' -import { useRef, useState } from 'react' +import { FFmpeg } from "@ffmpeg/ffmpeg"; +import { fetchFile, toBlobURL } from "@ffmpeg/util"; +import { useRef, useState } from "react"; export default function Home() { - const [loaded, setLoaded] = useState(false) - const [isLoading, setIsLoading] = useState(false) - const ffmpegRef = useRef(new FFmpeg()) - const videoRef = useRef(null) - const messageRef = useRef(null) + const [loaded, setLoaded] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const ffmpegRef = useRef(new FFmpeg()); + const videoRef = useRef(null); + const messageRef = useRef(null); const load = async () => { - setIsLoading(true) - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' - const ffmpeg = ffmpegRef.current - ffmpeg.on('log', ({ message }) => { - if (messageRef.current) messageRef.current.innerHTML = message - }) + setIsLoading(true); + const baseURL = "https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd"; + const ffmpeg = ffmpegRef.current; + ffmpeg.on("log", ({ message }) => { + if (messageRef.current) messageRef.current.innerHTML = message; + }); // toBlobURL is used to bypass CORS issue, urls with the same // domain can be used directly. await ffmpeg.load({ - coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, 'text/javascript'), - wasmURL: await toBlobURL(`${baseURL}/ffmpeg-core.wasm`, 'application/wasm') - }) - setLoaded(true) - setIsLoading(false) - } + coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, "text/javascript"), + wasmURL: await toBlobURL( + `${baseURL}/ffmpeg-core.wasm`, + "application/wasm" + ), + }); + setLoaded(true); + setIsLoading(false); + }; const transcode = async () => { - const ffmpeg = ffmpegRef.current + const ffmpeg = ffmpegRef.current; // u can use 'https://ffmpegwasm.netlify.app/video/video-15s.avi' to download the video to public folder for testing - await ffmpeg.writeFile('input.avi', await fetchFile('https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi')) - await ffmpeg.exec(['-i', 'input.avi', 'output.mp4']) - const data = (await ffmpeg.readFile('output.mp4')) as any + await ffmpeg.writeFile( + "input.avi", + await fetchFile( + "https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi" + ) + ); + await ffmpeg.exec(["-i", "input.avi", "output.mp4"]); + const data = (await ffmpeg.readFile("output.mp4")) as any; if (videoRef.current) - videoRef.current.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })) - } + videoRef.current.src = URL.createObjectURL( + new Blob([data.buffer], { type: "video/mp4" }) + ); + }; return loaded ? (
@@ -72,5 +82,5 @@ export default function Home() { )} - ) + ); } diff --git a/apps/react-vite-app/src/App.tsx b/apps/react-vite-app/src/App.tsx index ba76eda2fc..2a71db0385 100644 --- a/apps/react-vite-app/src/App.tsx +++ b/apps/react-vite-app/src/App.tsx @@ -5,11 +5,11 @@ import { toBlobURL, fetchFile } from "@ffmpeg/util"; function App() { const [loaded, setLoaded] = useState(false); const ffmpegRef = useRef(new FFmpeg()); - const videoRef = useRef(null) - const messageRef = useRef(null) + const videoRef = useRef(null); + const messageRef = useRef(null); const load = async () => { - const baseURL = "https://unpkg.com/@ffmpeg/core-mt@0.12.6/dist/esm"; + const baseURL = "https://unpkg.com/@ffmpeg/core-mt@0.12.7/dist/esm"; const ffmpeg = ffmpegRef.current; ffmpeg.on("log", ({ message }) => { if (messageRef.current) messageRef.current.innerHTML = message; @@ -31,16 +31,17 @@ function App() { }; const transcode = async () => { - const videoURL = "https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi"; + const videoURL = + "https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi"; const ffmpeg = ffmpegRef.current; await ffmpeg.writeFile("input.avi", await fetchFile(videoURL)); await ffmpeg.exec(["-i", "input.avi", "output.mp4"]); - const fileData = await ffmpeg.readFile('output.mp4'); + const fileData = await ffmpeg.readFile("output.mp4"); const data = new Uint8Array(fileData as ArrayBuffer); if (videoRef.current) { videoRef.current.src = URL.createObjectURL( - new Blob([data.buffer], { type: 'video/mp4' }) - ) + new Blob([data.buffer], { type: "video/mp4" }) + ); } }; diff --git a/apps/vue-vite-app/src/components/FFmpegDemo.vue b/apps/vue-vite-app/src/components/FFmpegDemo.vue index 34916710ff..ee56308993 100644 --- a/apps/vue-vite-app/src/components/FFmpegDemo.vue +++ b/apps/vue-vite-app/src/components/FFmpegDemo.vue @@ -11,7 +11,7 @@ import type { LogEvent } from '@ffmpeg/ffmpeg/dist/esm/types' import { fetchFile, toBlobURL } from '@ffmpeg/util' import { defineComponent, ref } from 'vue' -const baseURL = 'https://unpkg.com/@ffmpeg/core-mt@0.12.6/dist/esm' +const baseURL = 'https://unpkg.com/@ffmpeg/core-mt@0.12.7/dist/esm' const videoURL = 'https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi' export default defineComponent({ diff --git a/apps/website/docs/getting-started/usage.md b/apps/website/docs/getting-started/usage.md index bb7f665efc..7bb74484dc 100644 --- a/apps/website/docs/getting-started/usage.md +++ b/apps/website/docs/getting-started/usage.md @@ -11,7 +11,7 @@ It is recommended to read [Overview](/docs/overview) first. :::caution If you are a [vite](https://vitejs.dev/) user, use `esm` in **baseURL** instead of `umd`: -~~https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd~~ => https://unpkg.com/@ffmpeg/core@0.12.6/dist/esm +~~https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd~~ => https://unpkg.com/@ffmpeg/core@0.12.7/dist/esm ::: ```jsx live @@ -24,7 +24,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; ffmpeg.on('log', ({ message }) => { messageRef.current.innerHTML = message; @@ -81,7 +81,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core-mt@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core-mt@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; ffmpeg.on('log', ({ message }) => { messageRef.current.innerHTML = message; @@ -134,7 +134,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; ffmpeg.on('log', ({ message }) => { messageRef.current.innerHTML = message; @@ -192,7 +192,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; // Listen to progress event instead of log. ffmpeg.on('progress', ({ progress, time }) => { @@ -243,7 +243,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; ffmpeg.on('log', ({ message }) => { messageRef.current.innerHTML = message; @@ -313,7 +313,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; ffmpeg.on('log', ({ message }) => { messageRef.current.innerHTML = message; @@ -372,7 +372,7 @@ function() { const messageRef = useRef(null); const load = async () => { - const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd' + const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd' const ffmpeg = ffmpegRef.current; ffmpeg.on('log', ({ message }) => { messageRef.current.innerHTML = message; @@ -425,9 +425,10 @@ function() { :::note Required: + - @ffmpeg/ffmpeg@0.12.7+ - @ffmpeg/core@0.12.4+ -::: + ::: Please Check this PR: [Add WORKERFS support](https://github.com/ffmpegwasm/ffmpeg.wasm/pull/581) @@ -435,8 +436,9 @@ Please Check this PR: [Add WORKERFS support](https://github.com/ffmpegwasm/ffmpe :::note Required: + - @ffmpeg/ffmpeg@0.12.7+ - @ffmpeg/core@0.12.4+ -::: + ::: Please check this PR: [abort signal](https://github.com/ffmpegwasm/ffmpeg.wasm/pull/573) diff --git a/package-lock.json b/package-lock.json index be36a36e5b..6610b41b47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28702,7 +28702,7 @@ }, "packages/core": { "name": "@ffmpeg/core", - "version": "0.12.6", + "version": "0.12.7", "license": "GPL-2.0-or-later", "engines": { "node": ">=16.x" @@ -28710,7 +28710,7 @@ }, "packages/core-mt": { "name": "@ffmpeg/core-mt", - "version": "0.12.6", + "version": "0.12.7", "license": "GPL-2.0-or-later", "engines": { "node": ">=16.x" @@ -28718,7 +28718,7 @@ }, "packages/ffmpeg": { "name": "@ffmpeg/ffmpeg", - "version": "0.12.10", + "version": "0.12.11", "license": "MIT", "dependencies": { "@ffmpeg/types": "^0.12.2" diff --git a/packages/core-mt/package.json b/packages/core-mt/package.json index 7ebdc543a1..6de2e88b9c 100644 --- a/packages/core-mt/package.json +++ b/packages/core-mt/package.json @@ -1,6 +1,6 @@ { "name": "@ffmpeg/core-mt", - "version": "0.12.6", + "version": "0.12.7", "description": "FFmpeg WebAssembly version (multi thread)", "main": "./dist/umd/ffmpeg-core.js", "exports": { diff --git a/packages/core/package.json b/packages/core/package.json index f4c1323691..e6835c2ae0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ffmpeg/core", - "version": "0.12.6", + "version": "0.12.7", "description": "FFmpeg WebAssembly version (single thread)", "main": "./dist/umd/ffmpeg-core.js", "exports": { diff --git a/packages/ffmpeg/package.json b/packages/ffmpeg/package.json index 8dbc8c0deb..5c2d127ef8 100644 --- a/packages/ffmpeg/package.json +++ b/packages/ffmpeg/package.json @@ -1,6 +1,6 @@ { "name": "@ffmpeg/ffmpeg", - "version": "0.12.10", + "version": "0.12.11", "description": "FFmpeg WebAssembly version for browser", "main": "./dist/umd/ffmpeg.js", "types": "./dist/esm/index.d.ts", diff --git a/packages/ffmpeg/src/const.ts b/packages/ffmpeg/src/const.ts index 5dfe4ab8d0..8e4b34e498 100644 --- a/packages/ffmpeg/src/const.ts +++ b/packages/ffmpeg/src/const.ts @@ -1,7 +1,7 @@ export const MIME_TYPE_JAVASCRIPT = "text/javascript"; export const MIME_TYPE_WASM = "application/wasm"; -export const CORE_VERSION = "0.12.6"; +export const CORE_VERSION = "0.12.7"; export const CORE_URL = `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`; export enum FFMessageType {