Upon running my code, the audio successfully gets converted into a video and saved in the bucket, however, the video size is just 9 bytes.
Here’s my utility.
import { FFmpeg } from '@ffmpeg/ffmpeg';
import { fetchFile } from '@ffmpeg/util';
import { ref, uploadBytes, getDownloadURL } from 'firebase/storage';
import { storage } from '../firebase';
export async function generateAndStoreVideo(audioPath, imagePath, userId) {
try {
const ffmpeg = new FFmpeg({ log: true });
await ffmpeg.load();
console.log('Fetching audio and image...');
ffmpeg.writeFile( 'input.mp3', await fetchFile(audioPath));
ffmpeg.writeFile('input.jpg', await fetchFile(imagePath));
console.log('Running FFmpeg...');
await ffmpeg.exec(['-i', 'sound.mp3', '-i', 'image.png', 'output.mp4']
);
console.log('FFmpeg completed!');
const data = ffmpeg.readFile( 'output.mp4');
const videoBlob = new Blob([data.buffer], { type: 'video/mp4' });
console.log('Uploading video to Firebase...');
const videoRef = ref(storage, `videos/${userId}/${Date.now()}_generated_video.mp4`);
const uploadSnapshot = await uploadBytes(videoRef, videoBlob);
const videoURL = await getDownloadURL(uploadSnapshot.ref);
console.log('Video uploaded successfully! URL:', videoURL);
return videoURL;
} catch (error) {
console.error('Error generating or uploading video:', error);
throw new Error('Video generation or upload failed.');
}
}
After uploading, I also got this error:
ErrnoError: FS error
at handleError (http://localhost:3000/static/js/bundle.js:98427:58)
at http://localhost:3000/static/js/bundle.js:98450:7
I’ve made sure I’m using the new FFMPEG version and syntax, but the issues persist.