H.264 codec
H.265 codec
VP8/VP9 codec
OGV codec
WAV/WV codec
MP3 codec
AAC codec
OGG codec
OPUS codec
Font file renderer
subtitle renderer
WEBP codec
# Use npm$ npm install @ffmpeg/ffmpeg @ffmpeg/core# Use yarn$ yarn add @ffmpeg/ffmpeg @ffmpeg/core
<body><video id="player" controls></video><input type="file" id="uploader"><script src="ffmpeg.min.js"></script><script>const { createFFmpeg, fetchFile } = FFmpeg;const ffmpeg = createFFmpeg({ log: true });const transcode = async ({ target: { files } }) => {const { name } = files[0];await ffmpeg.load();ffmpeg.FS('writeFile', name, await fetchFile(files[0]));await ffmpeg.run('-i', name, 'output.mp4');const data = ffmpeg.FS('readFile', 'output.mp4');const video = document.getElementById('player');video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));}document.getElementById('uploader').addEventListener('change', transcode);</script></body>
const fs = require('fs');const { createFFmpeg, fetchFile } = require('@ffmpeg/ffmpeg');const ffmpeg = createFFmpeg({ log: true });(async () => {await ffmpeg.load();ffmpeg.FS('writeFile', 'test.avi', await fetchFile('./test.avi'));await ffmpeg.run('-i', 'test.avi', 'test.mp4');await fs.promises.writeFile('./test.mp4', ffmpeg.FS('readFile', 'test.mp4'));process.exit(0);})();
$ ffmpeg -i video.avi -c:v libx264 video.mp4
Edit the code block below to test your scenario (Download Sample Video/Audio):
Introduction to ffmpeg.wasm and technical details behind
A series of tutorials of using Emscripten to build ffmpeg
A series of tutorials of using Emscripten to build ffmpeg
A series of tutorials of using Emscripten to build ffmpeg
A series of tutorials of using Emscripten to build ffmpeg