Skip to content

Instantly share code, notes, and snippets.

@bigface0202
Created October 21, 2023 11:42
Show Gist options
  • Save bigface0202/43d2b01024af400b5b64a91e849f05b7 to your computer and use it in GitHub Desktop.
Save bigface0202/43d2b01024af400b5b64a91e849f05b7 to your computer and use it in GitHub Desktop.
Building gstreamer v1.19.2 on Raspberry Pi 4
FROM ubuntu:18.04
USER root
# Set time zone
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Install Python
RUN apt update && apt -y --no-install-recommends install \
sudo \
python3 \
python3-dev \
python3-pip \
wget
RUN sudo apt install -y python3.8
# Set Python3.8 as default python3
RUN sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
RUN sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
RUN sudo update-alternatives --auto python3
RUN sudo update-alternatives --config python3
# Install meson
RUN sudo python3.8 -m pip install -U pip && sudo python3.8 -m pip install meson
# Install cmake
RUN sudo apt install build-essential checkinstall zlib1g-dev libssl-dev -y
WORKDIR /home
RUN wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1.tar.gz
RUN tar -zxvf cmake-3.25.1.tar.gz
RUN cd cmake-3.25.1 && sudo ./bootstrap && sudo make && sudo make install
WORKDIR /home
# Install dependent libraries
RUN sudo apt -y --no-install-recommends install \
vim \
wget \
pkg-config \
git \
autoconf \
automake \
libtool \
flex \
bison \
libglib2.0-dev \
libjpeg-dev \
libx264-dev \
libgtk2.0-dev \
libcanberra-gtk* \
libgtk-3-dev \
libasound2-dev \
libegl1-mesa-dev \
libglfw3-dev \
libgles2-mesa-dev \
libjpeg-dev \
librtmp-dev \
libvo-aacenc-dev \
ca-certificates \
ninja-build \
libxml2-dev \
libffi6 \
libffi-dev
# Build and install latest wayland
RUN git clone https://gitlab.freedesktop.org/wayland/wayland.git
WORKDIR /home/wayland
RUN export WLD=/usr && meson build/ -Ddocumentation=false && meson build/ --prefix=$WLD && ninja -C build/ install
# Build and install latest wayland-protocols
WORKDIR /home
RUN git clone https://gitlab.freedesktop.org/wayland/wayland-protocols.git
WORKDIR /home/wayland-protocols
RUN export WLD=/usr && meson build/ --prefix=$WLD && ninja -C build/ install
# Create directory
WORKDIR /home
RUN mkdir gst
# Install gstreamer core
WORKDIR /home/gst
RUN wget https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.19.2.tar.xz && tar -xf gstreamer-1.19.2.tar.xz
WORKDIR /home/gst/gstreamer-1.19.2
RUN mkdir build && cd build && meson --prefix=/usr \
--wrap-mode=nofallback \
-D gst_debug=true \
-D package-origin=https://gstreamer.freedesktop.org/src/gstreamer/ \
-D package-name="GStreamer 1.19.2 BLFS" .. \
&& ninja -j4 && sudo ninja install && sudo ldconfig
# plugin-base
WORKDIR /home/gst
RUN wget https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.19.2.tar.xz && tar -xf gst-plugins-base-1.19.2.tar.xz
WORKDIR /home/gst/gst-plugins-base-1.19.2
RUN mkdir build && cd build && meson --prefix=/usr \
-D gl_winsys=wayland \
-D package-origin=https://gstreamer.freedesktop.org/src/gstreamer/ .. \
&& ninja -j4 && sudo ninja install && sudo ldconfig
# plugin-good
WORKDIR /home/gst
RUN wget https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.19.2.tar.xz && tar -xf gst-plugins-good-1.19.2.tar.xz
WORKDIR /home/gst/gst-plugins-good-1.19.2
RUN mkdir build && cd build && meson --prefix=/usr \
-D package-origin=https://gstreamer.freedesktop.org/src/gstreamer/ \
-D package-name="GStreamer 1.19.2 BLFS" .. \
&& ninja -j4 && sudo ninja install && sudo ldconfig
# plugin-bad
WORKDIR /home/gst
RUN wget https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.19.2.tar.xz && tar -xf gst-plugins-bad-1.19.2.tar.xz
WORKDIR /home/gst/gst-plugins-bad-1.19.2
RUN mkdir build && cd build && meson --prefix=/usr \
-D package-origin=https://gstreamer.freedesktop.org/src/gstreamer/ \
-D package-name="GStreamer 1.19.2 BLFS" .. \
&& ninja -j4 && sudo ninja install && sudo ldconfig
# plugin-ugly
WORKDIR /home/gst
RUN wget https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.19.2.tar.xz && tar -xf gst-plugins-ugly-1.19.2.tar.xz
WORKDIR /home/gst/gst-plugins-ugly-1.19.2
RUN mkdir build && cd build && meson --prefix=/usr \
-D package-origin=https://gstreamer.freedesktop.org/src/gstreamer/ \
-D package-name="GStreamer 1.19.2 BLFS" .. \
&& ninja -j4 && sudo ninja install && sudo ldconfig
# RTSP-server
WORKDIR /home/gst
RUN wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.19.2.tar.xz && tar -xf gst-rtsp-server-1.19.2.tar.xz
WORKDIR /home/gst/gst-rtsp-server-1.19.2
RUN mkdir build && cd build && meson --prefix=/usr \
--wrap-mode=nofallback \
-D package-origin=https://gstreamer.freedesktop.org/src/gstreamer/ \
-D package-name="GStreamer 1.19.2 BLFS" .. \
&& ninja -j4 && sudo ninja install && sudo ldconfig
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment