PageSourceSearch

https://ffmpegwasm.netlify.app/assets/js/871a1a28.0be7662c.js

js ffmpegwasm.netlify.app collected 2026-10-03 10:45:20 UTC 6,300 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7227],{876:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>g});var n=r(2784);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),u=p(r),c=a,g=u["".concat(s,".").concat(c)]||u[c]||f[c]||o;return r?n.createElement(g,l(l({ref:t},m),{},{components:r})):n.createElement(g,l({ref:t},m))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:a,l[1]=i;for(var p=2;p<o;p++)l[p]=r[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}c.displayName="MDXCreateElement"},6404:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=r(7896),a=(r(2784),r(876));const o={slug:"release-ffmpeg.wasm-0.12.0",title:"Release ffmpeg.wasm 0.12.0",authors:["jeromewu"],tags:["ffmpeg.wasm"]},l=void 0,i={permalink:"/blog/release-ffmpeg.wasm-0.12.0",editUrl:"https://github.com/ffmpegwasm/ffmpeg.wasm/tree/main/apps/website/blog/2023-07-26-release-ffmpeg.wasm-0.12.0.mdx",source:"@site/blog/2023-07-26-release-ffmpeg.wasm-0.12.0.mdx",title:"Release ffmpeg.wasm 0.12.0",description:"Finally, a new start.",date:"2023-07-26T00:00:00.000Z",formattedDate:"July 26, 2023",tags:[{label:"ffmpeg.wasm",permalink:"/blog/tags/ffmpeg-wasm"}],readingTime:1.665,hasTruncateMarker:!0,authors:[{name:"Jerome Wu",title:"Maintainer of ffmpeg.wasm",url:"https://github.com/jeromewu",imageURL:"/img/jeromewu.png",key:"jeromewu"}],frontMatter:{slug:"release-ffmpeg.wasm-0.12.0",title:"Release ffmpeg.wasm 0.12.0",authors:["jeromewu"],tags:["ffmpeg.wasm"]}},s={authorsImageUrls:[void 0]},p=[],m={toc:p},u="wrapper";function f({components:e,...t}){return(0,a.kt)(u,(0,n.Z)({},m,t,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Finally, a new start. \ud83c\udf89"),(0,a.kt)("p",null,"I started to work on ffmpeg.wasm around Oct. 2019, it was the time\nWebAssembly is still in very early stage and transpiling FFmpeg to ffmpeg.wasm\nwas very challenging. (but possible as there was a pioneer project\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Kagami/ffmpeg.js/"},"ffmpeg.js"),") Over these years, I\nhave been trying to make ffmpeg.wasm to be production-grade, but failed\nas FFmpeg is such a powerful framework and WebAssembly is still evolving.\nIt wasn't easy to support even one requirements (ex. RTSP) from the community\nand I found it really hard to continue sometimes. But with almost ",(0,a.kt)("strong",{parentName:"p"},"11k stars"),",\n",(0,a.kt)("strong",{parentName:"p"},"600 forks"),", ",(0,a.kt)("strong",{parentName:"p"},"4.1k used-by projects")," and ",(0,a.kt)("strong",{parentName:"p"},"2.3M downloads")," in total,\nI still believe ffmpeg.wasm is a meaningful project to continue.\nThat's why I decided to pause a little while and rethink what\nshould be done in the next stage."),(0,a.kt)("p",null,"As the result, I started to work on ffmpeg.wasm 0.12.0, it is a major version and\nnot backward compatible with 0.11.0. Massive issues are fixed in this version,\nincluding:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Upgrade Emscripten to 3.1.40"),(0,a.kt)("li",{parentName:"ul"},"Upgrade FFmpeg to n5.1.3"),(0,a.kt)("li",{parentName:"ul"},"Docker build with cache (reduce time to build a new version)"),(0,a.kt)("li",{parentName:"ul"},"Support timeout(), terminate() and other fundamental operations"),(0,a.kt)("li",{parentName:"ul"},"Split libraries to multiple small libraries"),(0,a.kt)("li",{parentName:"ul"},"Rewrite the whole library with TypeScript"),(0,a.kt)("li",{parentName:"ul"},"Merge multiple repositories into one monorepo"),(0,a.kt)("li",{parentName:"ul"},"Offical Web Worker support"),(0,a.kt)("li",{parentName:"ul"},"Offical single thread and multi thread version support"),(0,a.kt)("li",{parentName:"ul"}
1,"Enhanced documentation"),(0,a.kt)("li",{parentName:"ul"},"Official domain name")),(0,a.kt)("p",null,"Lots of features are still in the backlog and it requires lots effort to\neven just compelete one of them, such as:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Speed up ffmpeg.wasm using WebAssembly intrinsic"),(0,a.kt)("li",{parentName:"ul"},"Support RTSP protocol"),(0,a.kt)("li",{parentName:"ul"},"Support more popular libraries")),(0,a.kt)("p",null,"I believe there is still a long way to go for ffmpeg.wasm to really become\na production-grade library, but it is defintely a gamechanger and a chance\nto see the potential of WebAssembly and web technologies in general. That's\nwhy I am working on it and welcome to join us."),(0,a.kt)("p",null,"Hope you enjoy this release \ud83d\ude04"),(0,a.kt)("p",null,"-"," Jerome"))}f.isMDXComponent=!0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.