FROM emscripten/emsdk:5.0.1 AS build ARG BUILD_USER=1000 ARG FFMPEG_VERSION=8.0.1 ARG PREFIX=/tmp/ffmpeg-build ARG MAKEFLAGS="-j4" RUN wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc RUN echo "deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main\ndeb-src https://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main" > /etc/apt/sources.list.d/llvm.list RUN apt-get update RUN apt-get install -y libllvm-20-ocaml-dev libllvm20 llvm-20 llvm-20-dev llvm-20-runtime RUN apt-get install -y libclang-rt-20-dev-wasm32 libclang-rt-20-dev-wasm64 libc++-20-dev-wasm32 libc++abi-20-dev-wasm32 libclang-rt-20-dev-wasm32 libclang-rt-20-dev-wasm64 RUN apt-get update && apt-get install -y autoconf libtool build-essential pkgconf USER ${BUILD_USER} # Get ffmpeg source. WORKDIR /tmp/ RUN wget -O ffmpeg-${FFMPEG_VERSION}.tar.gz http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \ tar zxf ffmpeg-${FFMPEG_VERSION}.tar.gz && rm ffmpeg-${FFMPEG_VERSION}.tar.gz ARG CFLAGS="-s USE_PTHREADS=1 -O3 -I${PREFIX}/include" ARG LDFLAGS="$CFLAGS -L${PREFIX}/lib -s INITIAL_MEMORY=33554432" ENV EM_PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" # Compile ffmpeg. WORKDIR /tmp/ffmpeg-${FFMPEG_VERSION} RUN emconfigure ./configure \ --prefix=${PREFIX} \ --target-os=none \ --arch=x86_32 \ --enable-cross-compile \ --disable-debug \ --disable-x86asm \ --disable-inline-asm \ --disable-stripping \ --disable-programs \ --disable-doc \ --disable-all \ --enable-avcodec \ --enable-avformat \ --enable-avutil \ --enable-swresample \ --enable-swscale \ --enable-protocol=file \ --enable-decoder=h264,hevc,vp8,vp9,av1,prores,aac,mp3,opus,vorbis,flac,alac,pcm_s16le,pcm_s16be,pcm_s24le,pcm_s24be \ --enable-demuxer=mov,matroska,webm,mpegts,mxf,mp3,wav,ogg,avi,aiff,flac,hevc,h264,av1 \ --enable-parser=h264,hevc,vp8,vp9,av1,aac,mpegaudio,opus,vorbis,flac \ --extra-cflags="$CFLAGS" \ --extra-cxxflags="$CFLAGS" \ --extra-ldflags="$LDFLAGS" \ --nm="llvm-nm-20 -g" \ --ar=emar \ --as=llvm-as \ --ranlib=llvm-ranlib-20 \ --cc=emcc \ --cxx=em++ \ --objcc=emcc \ --dep-cc=emcc RUN emmake make -j4 && \ emmake make install COPY --chown=${BUILD_USER}:${BUILD_USER} ./src/ffprobe-wasm-wrapper.cpp /build/src/ffprobe-wasm-wrapper.cpp COPY --chown=${BUILD_USER}:${BUILD_USER} ./Makefile /build/Makefile WORKDIR /build RUN make