├── .circleci └── config.yml ├── 1.14 ├── alpine │ └── Dockerfile ├── buster │ └── Dockerfile └── cerbero │ └── Dockerfile ├── README.md └── build.rb /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | jobs: 4 | build: 5 | machine: 6 | enabled: true 7 | steps: 8 | - checkout 9 | - run: 10 | name: docker login 11 | command: | 12 | docker login -u $DOCKER_USER -p $DOCKER_PASS 13 | - run: 14 | name: build and push 15 | command: | 16 | ruby build.rb 17 | 18 | -------------------------------------------------------------------------------- /1.14/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:edge 2 | 3 | RUN apk add --no-cache \ 4 | autoconf `# libnice`\ 5 | automake `# libnice`\ 6 | bison \ 7 | build-base \ 8 | flex \ 9 | gettext-dev \ 10 | git \ 11 | glib \ 12 | gnutls-dev `# libnice`\ 13 | gtk-doc `# libnice`\ 14 | libffi-dev \ 15 | libmount \ 16 | libsrtp-dev \ 17 | libtool `# libnice`\ 18 | libvpx-dev \ 19 | linux-headers \ 20 | openssl-dev `# needed for DTLS requirement`\ 21 | opus-dev \ 22 | pcre-dev \ 23 | perl \ 24 | python \ 25 | x264-dev \ 26 | zlib-dev 27 | 28 | # http://www.linuxfromscratch.org/blfs/view/svn/multimedia/gstreamer10.html 29 | RUN wget https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.14.0.tar.xz \ 30 | && tar xvfJ gstreamer-1.14.0.tar.xz > /dev/null \ 31 | && cd gstreamer-1.14.0 \ 32 | && ./configure --prefix=/usr \ 33 | && make \ 34 | && make install \ 35 | && cd / \ 36 | # gst-plugins-base 37 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.14.0.tar.xz \ 38 | && tar xvfJ gst-plugins-base-1.14.0.tar.xz > /dev/null \ 39 | && cd gst-plugins-base-1.14.0 \ 40 | && ./configure --prefix=/usr \ 41 | && make \ 42 | && make install \ 43 | && cd / \ 44 | # libnice 45 | && git clone https://github.com/libnice/libnice.git \ 46 | && cd libnice \ 47 | && ./autogen.sh --prefix=/usr --with-gstreamer --enable-static --enable-static-plugins --enable-shared --without-gstreamer-0.10 --disable-gtk-doc \ 48 | && make install \ 49 | && cd / \ 50 | # gst-plugins-good 51 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.14.0.tar.xz \ 52 | && tar xvfJ gst-plugins-good-1.14.0.tar.xz > /dev/null \ 53 | && cd gst-plugins-good-1.14.0 \ 54 | && ./configure --prefix=/usr \ 55 | && make \ 56 | && make install \ 57 | && cd / \ 58 | # gst-plugins-bad 59 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.14.0.tar.xz \ 60 | && tar xvfJ gst-plugins-bad-1.14.0.tar.xz > /dev/null \ 61 | && cd gst-plugins-bad-1.14.0 \ 62 | && ./configure --prefix=/usr \ 63 | && make \ 64 | && make install \ 65 | && cd / \ 66 | # gst-plugins-ugly 67 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.14.0.tar.xz \ 68 | && tar xvfJ gst-plugins-ugly-1.14.0.tar.xz > /dev/null \ 69 | && cd gst-plugins-ugly-1.14.0 \ 70 | && ./configure --prefix=/usr \ 71 | && make \ 72 | && make install \ 73 | && cd / \ 74 | # gst-rtsp-server 75 | && wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.14.0.tar.xz \ 76 | && tar xvfJ gst-rtsp-server-1.14.0.tar.xz > /dev/null \ 77 | && cd gst-rtsp-server-1.14.0 \ 78 | && ./configure --prefix=/usr \ 79 | && make \ 80 | && make install \ 81 | && cd / \ 82 | rm -rf gst* 83 | -------------------------------------------------------------------------------- /1.14/buster/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:buster 2 | 3 | RUN apt-get update && apt-get install -y --no-install-recommends \ 4 | autoconf `# libnice` \ 5 | automake `# libnice` \ 6 | bison \ 7 | build-essential \ 8 | ca-certificates \ 9 | flex \ 10 | gettext \ 11 | git \ 12 | gnutls-dev `# libnice` \ 13 | gtk-doc-tools `# libnice` \ 14 | libffi-dev \ 15 | libglib2.0 \ 16 | libnice-dev \ 17 | libopus-dev \ 18 | libpcre3-dev \ 19 | libsrtp-dev \ 20 | libssl-dev `# needed for DTLS requirement`\ 21 | libtool `# libnice` \ 22 | libvpx-dev \ 23 | libx264-dev \ 24 | mount \ 25 | perl \ 26 | python \ 27 | wget \ 28 | zlib1g \ 29 | 30 | # http://www.linuxfromscratch.org/blfs/view/svn/multimedia/gstreamer10.html 31 | && wget https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.14.0.tar.xz \ 32 | && tar xvfJ gstreamer-1.14.0.tar.xz > /dev/null \ 33 | && cd gstreamer-1.14.0 \ 34 | && ./configure --prefix=/usr \ 35 | && make \ 36 | && make install \ 37 | && cd / \ 38 | # gst-plugins-base 39 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.14.0.tar.xz \ 40 | && tar xvfJ gst-plugins-base-1.14.0.tar.xz > /dev/null \ 41 | && cd gst-plugins-base-1.14.0 \ 42 | && ./configure --prefix=/usr \ 43 | && make \ 44 | && make install \ 45 | && cd / \ 46 | # libnice 47 | && git clone https://github.com/libnice/libnice.git \ 48 | && cd libnice \ 49 | && ./autogen.sh --prefix=/usr --with-gstreamer --enable-static --enable-static-plugins --enable-shared --without-gstreamer-0.10 --disable-gtk-doc \ 50 | && make install \ 51 | && cd / \ 52 | # gst-plugins-good 53 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.14.0.tar.xz \ 54 | && tar xvfJ gst-plugins-good-1.14.0.tar.xz > /dev/null \ 55 | && cd gst-plugins-good-1.14.0 \ 56 | && ./configure --prefix=/usr \ 57 | && make \ 58 | && make install \ 59 | && cd / \ 60 | # gst-plugins-bad 61 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.14.0.tar.xz \ 62 | && tar xvfJ gst-plugins-bad-1.14.0.tar.xz > /dev/null \ 63 | && cd gst-plugins-bad-1.14.0 \ 64 | && ./configure --prefix=/usr \ 65 | && make \ 66 | && make install \ 67 | && cd / \ 68 | # gst-plugins-ugly 69 | && wget https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.14.0.tar.xz \ 70 | && tar xvfJ gst-plugins-ugly-1.14.0.tar.xz > /dev/null \ 71 | && cd gst-plugins-ugly-1.14.0 \ 72 | && ./configure --prefix=/usr \ 73 | && make \ 74 | && make install \ 75 | && cd / \ 76 | # gst-rtsp-server 77 | && wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.14.0.tar.xz \ 78 | && tar xvfJ gst-rtsp-server-1.14.0.tar.xz > /dev/null \ 79 | && cd gst-rtsp-server-1.14.0 \ 80 | && ./configure --prefix=/usr \ 81 | && make \ 82 | && make install \ 83 | && cd / \ 84 | rm -rf gst* 85 | -------------------------------------------------------------------------------- /1.14/cerbero/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.6.5 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | --no-install-recommends \ 5 | git \ 6 | software-properties-common \ 7 | yasm \ 8 | python-setuptools \ 9 | sudo 10 | # create the ubuntu user 11 | RUN addgroup --system ubuntu \ 12 | && adduser --system --shell /bin/bash --gecos 'ubuntu' \ 13 | --uid 1000 --disabled-password --home /home/ubuntu ubuntu \ 14 | && adduser ubuntu sudo \ 15 | && echo ubuntu:ubuntu | chpasswd \ 16 | && echo "ubuntu ALL=NOPASSWD:ALL" >> /etc/sudoers 17 | 18 | USER ubuntu 19 | ENV HOME /home/ubuntu 20 | RUN mkdir -p /home/ubuntu/cerbero/ 21 | WORKDIR /home/ubuntu/cerbero/ 22 | 23 | # Git config is needed so that cerbero can cleanly fetch some git repos 24 | RUN git config --global user.email "you@example.com" 25 | RUN git config --global user.name "Your Name" 26 | 27 | # # build gstreamer 1.0 from cerbero source 28 | RUN git clone --depth 1 git://anongit.freedesktop.org/gstreamer/cerbero . 29 | # hack: to pass "-y" argument to apt-get install launched by "cerbero bootstrap" 30 | RUN sed -i 's/apt-get install/apt-get install -y/g' ./cerbero/bootstrap/linux.py 31 | RUN ./cerbero-uninstalled bootstrap \ 32 | && ./cerbero-uninstalled build glib \ 33 | bison \ 34 | gstreamer-1.0 \ 35 | gst-plugins-base-1.0 \ 36 | gst-plugins-good-1.0 \ 37 | gst-plugins-bad-1.0 \ 38 | gst-plugins-ugly-1.0 \ 39 | gst-libav-1.0 \ 40 | json-glib \ 41 | && rm -rf ./build/sources/* 42 | 43 | CMD ./cerbero-uninstalled shell 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GStreamer Docker 2 | 3 | All images installed with intended support for rtsp-server and webrtcbin. Necessary plugins might be missing. 4 | 5 | Tags: 6 | 7 | * `1.14-alpine` [(_Dockerfile_)](/1.14/alpine/Dockerfile) 8 | * `1.14-buster` `latest` [(_Dockerfile_)](/1.14/buster/Dockerfile) 9 | * `1.14-cerbero` [(_Dockerfile_)](/1.14/cerbero/Dockerfile) 10 | 11 | -------------------------------------------------------------------------------- /build.rb: -------------------------------------------------------------------------------- 1 | images = [] 2 | versions = `ls -d */`.split("\n") 3 | 4 | def run(cmd) 5 | puts cmd 6 | system(cmd) 7 | end 8 | 9 | versions.each do |version| 10 | images += `ls #{version}`.split("\n").map{|a| version+a } 11 | end 12 | images.each do |image| 13 | run("docker build -t maxmcd/gstreamer:#{image.gsub("/", "-")} #{image}") 14 | run("docker push maxmcd/gstreamer:#{image.gsub("/", "-")}") 15 | end 16 | 17 | run("docker tag maxmcd/gstreamer:1.14-buster maxmcd/gstreamer:latest") 18 | run("docker push maxmcd/gstreamer:latest") 19 | --------------------------------------------------------------------------------