ffmpeg.wasm
ffmpeg.wasm copied to clipboard
Cant get output files when running on web worker
Describe the bug I'm using a web worker to extract video frames into images. when i'm trying to load the output files no files are found. it's working great when using in default browser context, maybe the FS methods works differently when running on web worker?
sample code:
export const exportFrames = async (video, fps) => {
let name = "to_extract_" + Date.now()
let frames = []
if(!ffmpeg.isLoaded()){
await init()
}
console.log("ffmpeg loaded")
let file = await fetchFile(video);
let filename = name;
ffmpeg.FS('writeFile', filename, file);
console.log("file downloaded")
await ffmpeg.run('-i', filename, '-vf', `fps='${fps}'`,'-vsync', '0', '%d.png');
console.log("frames extracted")
const exportedFrames = ffmpeg.FS('readdir', '/tmp').filter((f) => f.endsWith('.png'));
console.log("frames exported", exportedFrames)
for(let i=1;i<=exportedFrames.length;i++) {
let data = ffmpeg.FS('readFile', exportedFrames[i-1]);
let f = new Blob([data.buffer], { type: 'image/png' })
frames.push({blob: f, name: exportedFrames[i-1]})
};
return frames;
}
and the log output:
ffmpeg loaded
createFFmpeg.js:41 [info] run FS.writeFile /tmp/to_extract_1660572244186 <24038689 bytes binary file>
ffmpeg.js:23 file downloaded
createFFmpeg.js:41 [info] run ffmpeg command: -i /tmp/to_extract_1660572244186 -vf fps='5' -vsync 0 %d.png
createFFmpeg.js:41 [fferr] ffmpeg version 9e96b1c Copyright (c) 2000-2020 the FFmpeg developers
createFFmpeg.js:41 [fferr] built with emcc (Emscripten gcc/clang-like replacement) 2.0.8 (d059fd603d0b45b584f634dc2365bc9e9a6ec1dd)
createFFmpeg.js:41 [fferr] configuration: --target-os=none --arch=x86_32 --enable-cross-compile --disable-x86asm --disable-inline-asm --disable-stripping --disable-programs --disable-doc --disable-debug --disable-runtime-cpudetect --disable-autodetect --extra-cflags='-O3 --closure 1 -I/src/build/include -s USE_PTHREADS=1' --extra-cxxflags='-O3 --closure 1 -I/src/build/include -s USE_PTHREADS=1' --extra-ldflags='-O3 --closure 1 -I/src/build/include -s USE_PTHREADS=1 -L/src/build/lib' --pkg-config-flags=--static --nm=llvm-nm --ar=emar --ranlib=emranlib --cc=emcc --cxx=em++ --objcc=emcc --dep-cc=emcc --enable-gpl --enable-nonfree --enable-zlib --enable-libx264 --enable-libx265 --enable-libvpx --enable-libwavpack --enable-libmp3lame --enable-libfdk-aac --enable-libtheora --enable-libvorbis --enable-libfreetype --enable-libopus --enable-libwebp --enable-libass --enable-libfribidi
createFFmpeg.js:41 [fferr] libavutil 56. 51.100 / 56. 51.100
createFFmpeg.js:41 [fferr] libavcodec 58. 91.100 / 58. 91.100
createFFmpeg.js:41 [fferr] libavformat 58. 45.100 / 58. 45.100
createFFmpeg.js:41 [fferr] libavdevice 58. 10.100 / 58. 10.100
createFFmpeg.js:41 [fferr] libavfilter 7. 85.100 / 7. 85.100
createFFmpeg.js:41 [fferr] libswscale 5. 7.100 / 5. 7.100
createFFmpeg.js:41 [fferr] libswresample 3. 7.100 / 3. 7.100
createFFmpeg.js:41 [fferr] libpostproc 55. 7.100 / 55. 7.100
createFFmpeg.js:41 [fferr] Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'to_extract_1660572244186':
createFFmpeg.js:41 [fferr] Metadata:
createFFmpeg.js:41 [fferr] major_brand : mp42
createFFmpeg.js:41 [info] ffmpeg-core loaded
createFFmpeg.js:41 [fferr] minor_version : 1
createFFmpeg.js:41 [fferr] compatible_brands: isommp41mp42
createFFmpeg.js:41 [fferr] creation_time : 2022-08-01T10:19:25.000000Z
createFFmpeg.js:41 [fferr] Duration: 00:00:21.52, start: 0.000000, bitrate: 8935 kb/s
createFFmpeg.js:41 [fferr] Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
createFFmpeg.js:41 [fferr] Metadata:
createFFmpeg.js:41 [fferr] creation_time : 2022-08-01T10:19:25.000000Z
createFFmpeg.js:41 [fferr] handler_name : Core Media Audio
createFFmpeg.js:41 [fferr] Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720, 8759 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 48k tbc (default)
createFFmpeg.js:41 [fferr] Metadata:
createFFmpeg.js:41 [fferr] creation_time : 2022-08-01T10:19:25.000000Z
createFFmpeg.js:41 [fferr] handler_name : Core Media Video
createFFmpeg.js:41 [fferr] Stream mapping:
createFFmpeg.js:41 [fferr] Stream #0:1 -> #0:0 (h264 (native) -> png (native))
createFFmpeg.js:41 [fferr] [swscaler @ 0x560e200] No accelerated colorspace conversion found from yuv420p to rgb24.
createFFmpeg.js:41 [fferr] Output #0, image2, to '%d.png':
createFFmpeg.js:41 [fferr] Metadata:
createFFmpeg.js:41 [fferr] major_brand : mp42
createFFmpeg.js:41 [fferr] minor_version : 1
createFFmpeg.js:41 [fferr] compatible_brands: isommp41mp42
createFFmpeg.js:41 [fferr] encoder : Lavf58.45.100
createFFmpeg.js:41 [fferr] Stream #0:0(und): Video: png, rgb24, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 5 fps, 5 tbn, 5 tbc (default)
createFFmpeg.js:41 [fferr] Metadata:
createFFmpeg.js:41 [fferr] creation_time : 2022-08-01T10:19:25.000000Z
createFFmpeg.js:41 [fferr] handler_name : Core Media Video
createFFmpeg.js:41 [fferr] encoder : Lavc58.91.100 png
createFFmpeg.js:41 [fferr] frame= 13 fps=0.0 q=-0.0 size=N/A time=00:00:01.00 bitrate=N/A speed=1.93x
createFFmpeg.js:41 [fferr] frame= 28 fps= 27 q=-0.0 size=N/A time=00:00:04.00 bitrate=N/A speed=3.89x
createFFmpeg.js:41 [fferr] frame= 43 fps= 28 q=-0.0 size=N/A time=00:00:07.00 bitrate=N/A speed=4.57x
createFFmpeg.js:41 [fferr] frame= 56 fps= 27 q=-0.0 size=N/A time=00:00:09.60 bitrate=N/A speed= 4.6x
createFFmpeg.js:41 [fferr] frame= 70 fps= 27 q=-0.0 size=N/A time=00:00:12.40 bitrate=N/A speed=4.79x
createFFmpeg.js:41 [fferr] frame= 85 fps= 27 q=-0.0 size=N/A time=00:00:15.40 bitrate=N/A speed=4.92x
createFFmpeg.js:41 [fferr] frame= 101 fps= 27 q=-0.0 size=N/A time=00:00:18.60 bitrate=N/A speed=4.99x
createFFmpeg.js:41 [fferr] frame= 108 fps= 27 q=-0.0 Lsize=N/A time=00:00:21.60 bitrate=N/A speed= 5.3x
createFFmpeg.js:41 [fferr] video:94140kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
createFFmpeg.js:41 [ffout] FFMPEG_END
ffmpeg.js:25 frames extracted
createFFmpeg.js:41 [info] run FS.readdir /
ffmpeg.js:27 frames exported (0) []
- OS: mac os m1
- Browser: chrome
- Version latest
same issue here
Same issue here, did you manage to fix it?
Any update on this issue, not able to get output frames
Same issue here