mirror of
https://github.com/jixunmoe/ffmpeg-builder.git
synced 2025-12-24 13:18:19 +08:00
Exp/GitHub ci (#3)
Create builder and publish them in GitHub packages. * Removed gcc7 docker file * Updated documentation
This commit is contained in:
48
.github/workflows/build-images.yml
vendored
Normal file
48
.github/workflows/build-images.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
|
||||
name: "Build base image"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
# The type of runner that the job will run on
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
gcc: [10]
|
||||
build_arch:
|
||||
- "x86-64"
|
||||
- "broadwell"
|
||||
- "silvermont"
|
||||
- "znver2"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
# Setup caching
|
||||
- uses: satackey/action-docker-layer-caching@v0.0.11
|
||||
continue-on-error: true
|
||||
with:
|
||||
key: "docker-${{ github.workflow }}-${{ matrix.gcc }}-${{ matrix.build_arch }}"
|
||||
restore-keys: |
|
||||
docker-${{ github.workflow }}-${{ matrix.gcc }}-${{ matrix.build_arch }}
|
||||
docker-${{ github.workflow }}-${{ matrix.gcc }}-
|
||||
docker-${{ github.workflow }}-
|
||||
docker-
|
||||
|
||||
- name: Build and Publish latest Docker image
|
||||
uses: VaultVulp/gp-docker-action@1.1.8
|
||||
with:
|
||||
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-name: "builder"
|
||||
image-tag: "gcc-${{ matrix.gcc }}-${{ matrix.build_arch }}"
|
||||
build-context: builder
|
||||
dockerfile: "builder/Dockerfile.gcc-${{ matrix.gcc }}"
|
||||
custom-args: "--build-arg BUILD_ARCH=${{ matrix.build_arch }}"
|
||||
37
README.MD
37
README.MD
@@ -7,14 +7,7 @@ Instructions taken from: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
|
||||
|
||||
## Build docker image locally
|
||||
|
||||
```sh
|
||||
cd builder
|
||||
docker build . --tag jixun/ffmpeg-builder:latest
|
||||
```
|
||||
|
||||
※ Should be available in [Docker Hub][hub], but is untagged.
|
||||
|
||||
[hub]: https://hub.docker.com/r/jixun/ffmpeg-builder
|
||||
See readme at `builder` folder.
|
||||
|
||||
## Build ffmpeg
|
||||
|
||||
@@ -24,3 +17,31 @@ To build latest snapshot of ffmpeg:
|
||||
mkdir -p bin
|
||||
docker run --rm -v "$(pwd)/bin:/build/bin" jixun/ffmpeg-builder
|
||||
```
|
||||
|
||||
To build a release (e.g. 4.4):
|
||||
|
||||
```sh
|
||||
mkdir -p bin
|
||||
docker run --rm -v "$(pwd)/bin:/build/bin" jixun/ffmpeg-builder 4.4
|
||||
```
|
||||
|
||||
To build v4.4 using a pre-built docker image:
|
||||
|
||||
```sh
|
||||
mkdir -p bin
|
||||
docker run --rm -v "$(pwd)/bin:/build/bin" docker.pkg.github.com/jixunmoe/ffmpeg-builder/builder:gcc-10-x86-64 4.4
|
||||
```
|
||||
|
||||
`-march` is available for the following:
|
||||
|
||||
* `x86-64` (generic)
|
||||
* `silvermont`
|
||||
* `broadwell`
|
||||
* `znver2` (Ryzen)
|
||||
|
||||
e.g. for a Ryzen optimised build:
|
||||
|
||||
```sh
|
||||
mkdir -p bin
|
||||
docker run --rm -v "$(pwd)/bin:/build/bin" docker.pkg.github.com/jixunmoe/ffmpeg-builder/builder:gcc-10-znver2 4.4
|
||||
```
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Ubuntu 20.04
|
||||
FROM ubuntu:focal-20200729
|
||||
|
||||
ARG BUILD_ARCH="x86_64"
|
||||
|
||||
# Update packages
|
||||
RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get -y install \
|
||||
@@ -42,8 +44,9 @@ WORKDIR /build/lib
|
||||
|
||||
ENV CC=gcc-10 \
|
||||
CXX=g++-10 \
|
||||
CFLAGS="-O3 " \
|
||||
CXXFLAGS="-O3 " \
|
||||
CFLAGS="-O3 -march=${BUILD_ARCH}" \
|
||||
CXXFLAGS="-O3 -march=${BUILD_ARCH}" \
|
||||
GCC_BUILD_ARCH="${BUILD_ARCH}" \
|
||||
PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
# Ubuntu 20.04
|
||||
FROM ubuntu:focal-20200729
|
||||
|
||||
# Update packages
|
||||
RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get -y install \
|
||||
autoconf \
|
||||
automake \
|
||||
cmake \
|
||||
gcc-10 \
|
||||
g++-10 \
|
||||
git-core \
|
||||
libc6-dev \
|
||||
libfontconfig1-dev \
|
||||
libfreetype6-dev \
|
||||
libmp3lame-dev \
|
||||
libnuma-dev \
|
||||
libopus-dev \
|
||||
libtool \
|
||||
libvpx-dev \
|
||||
make \
|
||||
nasm \
|
||||
pkg-config \
|
||||
python3-minimal \
|
||||
texinfo \
|
||||
wget \
|
||||
yasm \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p /build && \
|
||||
cd /build && \
|
||||
mkdir -p src deps tmp bin lib
|
||||
|
||||
COPY local-bin /usr/local/bin
|
||||
|
||||
WORKDIR /build/lib
|
||||
|
||||
################################################################################
|
||||
|
||||
# Last chance to setup build flags!
|
||||
|
||||
ENV CC=gcc-10 \
|
||||
CXX=g++-10 \
|
||||
CFLAGS="-march=broadwell -O3" \
|
||||
CXXFLAGS="-march=broadwell -O3" \
|
||||
PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY deps/libass /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/fdk-aac /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/x264_x265 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libvorbis /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/gnutls /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libbluray /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libsdl2 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY gcc-filter /tmp/gcc-filter
|
||||
RUN cd /tmp/gcc-filter && sh build
|
||||
|
||||
################################################################################
|
||||
|
||||
VOLUME /build/bin
|
||||
|
||||
COPY build-ffmpeg /
|
||||
|
||||
ENTRYPOINT [ "/build-ffmpeg" ]
|
||||
@@ -1,83 +0,0 @@
|
||||
# Ubuntu 20.04
|
||||
FROM ubuntu:focal-20200729
|
||||
|
||||
# Update packages
|
||||
RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get -y install \
|
||||
autoconf \
|
||||
automake \
|
||||
cmake \
|
||||
gcc-10 \
|
||||
g++-10 \
|
||||
git-core \
|
||||
libc6-dev \
|
||||
libfontconfig1-dev \
|
||||
libfreetype6-dev \
|
||||
libmp3lame-dev \
|
||||
libnuma-dev \
|
||||
libopus-dev \
|
||||
libtool \
|
||||
libvpx-dev \
|
||||
make \
|
||||
nasm \
|
||||
pkg-config \
|
||||
python3-minimal \
|
||||
texinfo \
|
||||
wget \
|
||||
yasm \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p /build && \
|
||||
cd /build && \
|
||||
mkdir -p src deps tmp bin lib
|
||||
|
||||
COPY local-bin /usr/local/bin
|
||||
|
||||
WORKDIR /build/lib
|
||||
|
||||
################################################################################
|
||||
|
||||
# Last chance to setup build flags!
|
||||
|
||||
ENV CC=gcc-10 \
|
||||
CXX=g++-10 \
|
||||
CFLAGS="-march=silvermont -O3" \
|
||||
CXXFLAGS="-march=silvermont -O3" \
|
||||
PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY deps/libass /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/fdk-aac /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/x264_x265 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libvorbis /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/gnutls /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libbluray /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libsdl2 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY gcc-filter /tmp/gcc-filter
|
||||
RUN cd /tmp/gcc-filter && sh build
|
||||
|
||||
################################################################################
|
||||
|
||||
VOLUME /build/bin
|
||||
|
||||
COPY build-ffmpeg /
|
||||
|
||||
ENTRYPOINT [ "/build-ffmpeg" ]
|
||||
@@ -1,83 +0,0 @@
|
||||
# Ubuntu 20.04
|
||||
FROM ubuntu:focal-20200729
|
||||
|
||||
# Update packages
|
||||
RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get -y install \
|
||||
autoconf \
|
||||
automake \
|
||||
cmake \
|
||||
gcc-10 \
|
||||
g++-10 \
|
||||
git-core \
|
||||
libc6-dev \
|
||||
libfontconfig1-dev \
|
||||
libfreetype6-dev \
|
||||
libmp3lame-dev \
|
||||
libnuma-dev \
|
||||
libopus-dev \
|
||||
libtool \
|
||||
libvpx-dev \
|
||||
make \
|
||||
nasm \
|
||||
pkg-config \
|
||||
python3-minimal \
|
||||
texinfo \
|
||||
wget \
|
||||
yasm \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p /build && \
|
||||
cd /build && \
|
||||
mkdir -p src deps tmp bin lib
|
||||
|
||||
COPY local-bin /usr/local/bin
|
||||
|
||||
WORKDIR /build/lib
|
||||
|
||||
################################################################################
|
||||
|
||||
# Last chance to setup build flags!
|
||||
|
||||
ENV CC=gcc-10 \
|
||||
CXX=g++-10 \
|
||||
CFLAGS="-march=znver2 -O3" \
|
||||
CXXFLAGS="-march=znver2 -O3" \
|
||||
PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY deps/libass /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/fdk-aac /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/x264_x265 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libvorbis /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/gnutls /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libbluray /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libsdl2 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY gcc-filter /tmp/gcc-filter
|
||||
RUN cd /tmp/gcc-filter && sh build
|
||||
|
||||
################################################################################
|
||||
|
||||
VOLUME /build/bin
|
||||
|
||||
COPY build-ffmpeg /
|
||||
|
||||
ENTRYPOINT [ "/build-ffmpeg" ]
|
||||
@@ -1,83 +0,0 @@
|
||||
# Ubuntu 18.04
|
||||
FROM ubuntu:bionic-20200807
|
||||
|
||||
# Update packages
|
||||
RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get -y install \
|
||||
autoconf \
|
||||
automake \
|
||||
cmake \
|
||||
gcc \
|
||||
g++ \
|
||||
git-core \
|
||||
libc6-dev \
|
||||
libfontconfig1-dev \
|
||||
libfreetype6-dev \
|
||||
libmp3lame-dev \
|
||||
libnuma-dev \
|
||||
libopus-dev \
|
||||
libtool \
|
||||
libvpx-dev \
|
||||
make \
|
||||
nasm \
|
||||
pkg-config \
|
||||
python3-minimal \
|
||||
texinfo \
|
||||
wget \
|
||||
yasm \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p /build && \
|
||||
cd /build && \
|
||||
mkdir -p src deps tmp bin lib
|
||||
|
||||
COPY local-bin /usr/local/bin
|
||||
|
||||
WORKDIR /build/lib
|
||||
|
||||
################################################################################
|
||||
|
||||
# Last chance to setup build flags!
|
||||
|
||||
ENV CC=gcc \
|
||||
CXX=g++ \
|
||||
CFLAGS="-O3 " \
|
||||
CXXFLAGS="-O3 " \
|
||||
PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY deps/libass /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/fdk-aac /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/x264_x265 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libvorbis /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/gnutls /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libbluray /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
COPY deps/libsdl2 /build/deps/
|
||||
RUN make-deps
|
||||
|
||||
################################################################################
|
||||
|
||||
COPY gcc-filter /tmp/gcc-filter
|
||||
RUN cd /tmp/gcc-filter && sh build
|
||||
|
||||
################################################################################
|
||||
|
||||
VOLUME /build/bin
|
||||
|
||||
COPY build-ffmpeg /
|
||||
|
||||
ENTRYPOINT [ "/build-ffmpeg" ]
|
||||
@@ -8,19 +8,12 @@ Instructions taken from: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
|
||||
## Build docker image locally
|
||||
|
||||
```sh
|
||||
cd builder
|
||||
docker build . --tag jixun/ffmpeg-builder:latest
|
||||
docker build . --build-arg BUILD_ARCH=native --tag jixun/ffmpeg-builder:latest
|
||||
```
|
||||
|
||||
※ Should be available in [Docker Hub][hub], but is untagged.
|
||||
|
||||
[hub]: https://hub.docker.com/r/jixun/ffmpeg-builder
|
||||
|
||||
## Build ffmpeg
|
||||
|
||||
To build latest snapshot of ffmpeg:
|
||||
Running above code should produce a natively optimised copy of ffmpeg dependencies.
|
||||
For a generic build, use the following instead:
|
||||
|
||||
```sh
|
||||
mkdir -p bin
|
||||
docker run --rm -v "$(pwd)/bin:/build/bin" jixun/ffmpeg-builder
|
||||
docker build . --tag jixun/ffmpeg-builder:latest
|
||||
```
|
||||
|
||||
@@ -2,19 +2,23 @@
|
||||
|
||||
cd /build/src
|
||||
|
||||
COMPILE_VER=4.4
|
||||
COMPILE_VER=snapshot
|
||||
if [ ! -z "$1" ]; then
|
||||
COMPILE_VER="$1"
|
||||
shift
|
||||
fi
|
||||
|
||||
# Use it like: "-O2 -ftree-vectorize -march=native"
|
||||
# Use it like: "-O2 -ftree-vectorize"
|
||||
EXTRA_CFLAGS="-O3"
|
||||
if [ ! -z "$1" ]; then
|
||||
EXTRA_CFLAGS="$1"
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ "$GCC_BUILD_ARCH" == "" ]; then
|
||||
GCC_BUILD_ARCH="x86-64"
|
||||
fi
|
||||
|
||||
renice -n 19 -p $$
|
||||
|
||||
wget -qO - "https://ffmpeg.org/releases/ffmpeg-${COMPILE_VER}.tar.bz2" | tar jx
|
||||
@@ -27,7 +31,7 @@ cd "ffmpeg-${COMPILE_VER}"
|
||||
--dep-cc="${CC}" \
|
||||
--prefix="/usr" \
|
||||
--pkg-config-flags="--static" \
|
||||
--extra-cflags="${EXTRA_CFLAGS} -static -Wl,-Bdynamic,-lgcc_s,-Bstatic" \
|
||||
--extra-cflags="${EXTRA_CFLAGS} -march=${GCC_BUILD_ARCH} -static -Wl,-Bdynamic,-lgcc_s,-Bstatic" \
|
||||
--extra-ldflags="-static" \
|
||||
--extra-libs="-lpthread -lm" \
|
||||
--bindir="/build/bin" \
|
||||
|
||||
@@ -6,7 +6,7 @@ set -ex
|
||||
# cat /sys/devices/cpu/caps/pmu_name
|
||||
# gcc -march=native -Q --help=target | awk '/march/ {print $2}'
|
||||
|
||||
for BUILD_ARCH in broadwell silvermont znver2; do
|
||||
for BUILD_ARCH in x86-64 broadwell silvermont znver2; do
|
||||
INPUT_FILE=Dockerfile.gcc-10
|
||||
OUTPUT_FILE="${INPUT_FILE}.${BUILD_ARCH}"
|
||||
sed "s/\(C\(XX\)\?FLAGS\)=\"/\1=\"-march=${BUILD_ARCH} /" < "$INPUT_FILE" > "$OUTPUT_FILE"
|
||||
|
||||
Reference in New Issue
Block a user