Add Worker.trim

This commit is contained in:
Jerome Wu
2019-11-18 22:46:39 +08:00
parent 7a380f529b
commit e06c9bd19a
5 changed files with 137 additions and 26 deletions

View File

@@ -0,0 +1,47 @@
<html>
<head>
<script src="/dist/ffmpeg.dev.js"></script>
<style>
html, body {
margin: 0;
width: 100%;
height: 100%
}
body {
display: flex;
flex-direction: column;
align-items: center;
}
</style>
</head>
<body>
<h3>Upload a mp4 (x264) video and trim its first 2 seconds and play!</h3>
<video id="output-video" controls></video><br/>
<input type="file" id="uploader">
<p id="message"></p>
<script>
const { createWorker } = FFmpeg;
const worker = createWorker({
corePath: '../../node_modules/@ffmpeg/core/ffmpeg-core.js',
logger: ({ message }) => console.log(message),
});
const transcode = async ({ target: { files } }) => {
const message = document.getElementById('message');
const { name } = files[0];
message.innerHTML = 'Loading ffmpeg-core.js';
await worker.load();
message.innerHTML = 'Start trimming';
await worker.write(name, files[0]);
await worker.trim(name, 'output.mp4', 0, 2);
message.innerHTML = 'Complete trimming';
const { data } = await worker.read('output.mp4');
const video = document.getElementById('output-video');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
}
const elm = document.getElementById('uploader');
elm.addEventListener('change', transcode);
</script>
</body>
</html>

17
examples/node/trim.js Executable file
View File

@@ -0,0 +1,17 @@
const fs = require('fs');
const { createWorker } = require('../../src');
const worker = createWorker({
logger: ({ message }) => console.log(message),
});
(async () => {
await worker.load();
console.log('Start trimming');
await worker.write('flame.avi', '../../tests/assets/flame.avi');
await worker.trim('flame.avi', 'flame_trim.avi', 1, 2);
const { data } = await worker.read('flame_trim.avi');
console.log('Complete trimming');
fs.writeFileSync('flame_trim.avi', Buffer.from(data));
process.exit(0);
})();