-
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.
-
ffmpeg-libav-tutorial
FFmpeg libav tutorial - learn how media works from basic to transmuxing, transcoding and more. Translations: πΊπΈ π¨π³ π°π· πͺπΈ π»π³ π§π·
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
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
This has already been done before. You can check out ffmpeg.wasm for running the FFmpeg CLI in the browser environment.
If you are not familiar with libav, ffmpeg-libav-tutorial is a great introduction.
Check out https://github.com/alfg/ffmpeg-webassembly-example for the full demo files in this guide.
I also have a more advanced example of using FFProbe via Wasm: https://github.com/alfg/ffprobe-wasm
We can do this by running simple NodeJS server using Express, easily: