FFmpeg + WebAssembly

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • FFmpeg

    Mirror of https://git.ffmpeg.org/ffmpeg.git

    FROM emscripten/emsdk:2.0.16 as build ARG FFMPEG_VERSION=4.3.2 ARG X264_VERSION=20170226-2245-stable ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j4" # Build dependencies. RUN apt-get update && apt-get install -y autoconf libtool build-essential # Download and build x264. RUN cd /tmp && \ wget https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${X264_VERSION}.tar.bz2 && \ tar xvfj x264-snapshot-${X264_VERSION}.tar.bz2 RUN cd /tmp/x264-snapshot-${X264_VERSION} && \ emconfigure ./configure \ --prefix=${PREFIX} \ --host=i686-gnu \ --enable-static \ --disable-cli \ --disable-asm \ --extra-cflags="-s USE_PTHREADS=1" RUN cd /tmp/x264-snapshot-${X264_VERSION} && \ emmake make && emmake make install # Download ffmpeg release source. RUN cd /tmp/ && \ wget 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" # Configure and build FFmpeg with emscripten. # Disable all programs and only enable features we will use. # https://github.com/FFmpeg/FFmpeg/blob/master/configure RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \ 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-avfilter \ --enable-avdevice \ --enable-avutil \ --enable-swresample \ --enable-postproc \ --enable-swscale \ --enable-filters \ --enable-protocol=file \ --enable-decoder=h264,aac,pcm_s16le \ --enable-demuxer=mov,matroska \ --enable-muxer=mp4 \ --enable-gpl \ --enable-libx264 \ --extra-cflags="$CFLAGS" \ --extra-cxxflags="$CFLAGS" \ --extra-ldflags="$LDFLAGS" \ --nm="llvm-nm -g" \ --ar=emar \ --as=llvm-as \ --ranlib=llvm-ranlib \ --cc=emcc \ --cxx=em++ \ --objcc=emcc \ --dep-cc=emcc RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \ emmake make -j4 && \ emmake make install

  • ffmpeg.wasm

    FFmpeg for browser, powered by WebAssembly

    This has already been done before. You can check out ffmpeg.wasm for running the FFmpeg CLI in the browser environment.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • ffmpeg-libav-tutorial

    FFmpeg libav tutorial - learn how media works from basic to transmuxing, transcoding and more. Translations: 🇺🇸 🇨🇳 🇰🇷 🇪🇸 🇻🇳 🇧🇷

    If you are not familiar with libav, ffmpeg-libav-tutorial is a great introduction.

  • ffmpeg-webassembly-example

    FFmpeg + WebAssembly

    Check out https://github.com/alfg/ffmpeg-webassembly-example for the full demo files in this guide.

  • ffprobe-wasm

    A Web-based FFProbe. Powered by FFmpeg, Vue and Web Assembly!

    I also have a more advanced example of using FFProbe via Wasm: https://github.com/alfg/ffprobe-wasm

  • libav-examples

    Collection of FFmpeg libav examples.

  • Express

    Fast, unopinionated, minimalist web framework for node.

    We can do this by running simple NodeJS server using Express, easily:

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts