ffmpeg.wasm icon indicating copy to clipboard operation
ffmpeg.wasm copied to clipboard

Cant get output files when running on web worker

Open 0xori opened this issue 2 years ago • 4 comments

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

0xori avatar Aug 16 '22 06:08 0xori

same issue here

losefor avatar Jul 16 '23 08:07 losefor

Same issue here, did you manage to fix it?

DaanKorver avatar Aug 08 '23 08:08 DaanKorver

Any update on this issue, not able to get output frames

pragyesh12 avatar Sep 13 '23 07:09 pragyesh12

Same issue here

nsitu avatar May 07 '24 18:05 nsitu