Skip to content

Commit

Permalink
feat: Add Windows resource script and icon for FFmpeg tools; enhance …
Browse files Browse the repository at this point in the history
…libaacs and libbluray scripts
  • Loading branch information
Fill84 committed Feb 24, 2025
1 parent 64b9af5 commit 38c2b10
Show file tree
Hide file tree
Showing 16 changed files with 616 additions and 264 deletions.
375 changes: 266 additions & 109 deletions .github/workflows/tests.yml

Large diffs are not rendered by default.

25 changes: 12 additions & 13 deletions ffmpeg-base.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ ENV ffmpeg_version=7.1 \
libtheora_version=1.1.1 \
libvpx_version=1.15.0 \
x264_version=stable \
x265_version=master \
x265_version=4.0 \
xavs2_version=1.4 \
xvid_version=1.3.7 \
libwebp_version=1.4.0 \
Expand All @@ -73,16 +73,16 @@ ENV ffmpeg_version=7.1 \

# Dependencies for building ffmpeg
RUN echo "------------------------------------------------------" \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo "" \
&& echo "------------------------------------------------------" \
&& echo "📦 Start base build" \
Expand Down Expand Up @@ -547,8 +547,7 @@ RUN \
RUN \
echo "------------------------------------------------------" \
&& echo "🔄 Start downloading x265" \
&& wget -O x265.tar.bz2 https://bitbucket.org/multicoreware/x265_git/get/${x265_version}.tar.bz2 >/dev/null 2>&1 \
&& tar xjf x265.tar.bz2 >/dev/null 2>&1 && rm x265.tar.bz2 && mv multicoreware-x265_git-* x265 \
&& git clone --branch Release_${x265_version} https://bitbucket.org/multicoreware/x265_git.git x265 >/dev/null 2>&1 \
&& echo "✅ Download completed successfully" \
&& echo "------------------------------------------------------"

Expand Down
36 changes: 20 additions & 16 deletions ffmpeg-darwin-arm64.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ ENV DEBIAN_FRONTEND=noninteractive \

# Update and install dependencies
RUN echo "------------------------------------------------------" \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo "" \
&& echo "------------------------------------------------------" \
&& echo "📦 Start FFmpeg for Darwin arm64 build" \
Expand Down Expand Up @@ -143,12 +143,13 @@ RUN mkdir -p ${PREFIX}

ENV FFMPEG_ENABLES="" \
FFMPEG_CFLAGS="" \
FFMPEG_LDFLAGS=""
FFMPEG_LDFLAGS="" \
FFMPEG_EXTRA_LIBFLAGS=""

# Copy the build scripts
COPY ./scripts /scripts

RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt \
RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt /build/extra_libflags.txt \
&& chmod +x /scripts/init/init.sh \
&& /scripts/init/init.sh \
|| (echo "❌ FFmpeg build failed" ; exit 1)
Expand All @@ -157,12 +158,13 @@ RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt \
RUN FFMPEG_ENABLES=$(cat /build/enable.txt) export FFMPEG_ENABLES \
&& CFLAGS="${CFLAGS} $(cat /build/cflags.txt)" export CFLAGS \
&& LDFLAGS="${LDFLAGS} $(cat /build/ldflags.txt)" export LDFLAGS \
&& FFMPEG_EXTRA_LIBFLAGS="-lpthread -lm $(cat /build/extra_libflags.txt)" export FFMPEG_EXTRA_LIBFLAGS \
&& MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET%.0} export MACOSX_DEPLOYMENT_TARGET \
&& echo "------------------------------------------------------" \
&& echo "🚧 Start building FFmpeg" \
&& echo "------------------------------------------------------" \
&& cd /build/ffmpeg \
&& echo "🔧 Configure FFmpeg [1/2]" \
&& echo "⚙️ Configure FFmpeg [1/2]" \
&& ./configure --pkg-config-flags=--static \
--arch=${ARCH} \
--target-os=darwin \
Expand All @@ -183,7 +185,7 @@ RUN FFMPEG_ENABLES=$(cat /build/enable.txt) export FFMPEG_ENABLES \
--extra-version="NoMercy-MediaServer" \
--extra-cflags="-arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
--extra-ldflags="-arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
--extra-libs="-lpthread -lm" >/ffmpeg_build.log 2>&1 \
--extra-libs="${FFMPEG_EXTRA_LIBFLAGS}" >/ffmpeg_build.log 2>&1 \
|| (cat "/ffmpeg_build.log" ; echo "❌ FFmpeg build failed" ; false) \
&& echo "🛠️ Building FFmpeg [2/2]" \
&& make -j$(nproc) >/ffmpeg_build.log 2>&1 || (cat "/ffmpeg_build.log" ; echo "❌ FFmpeg build failed" ; exit 1) && make install >/dev/null 2>&1 \
Expand All @@ -200,7 +202,9 @@ RUN \
echo "------------------------------------------------------" \
&& echo "🔧 Copying FFmpeg binaries" \
&& mkdir -p /ffmpeg/${TARGET_OS}/${ARCH} \
&& cp ${PREFIX}/bin/ffplay /ffmpeg/${TARGET_OS}/${ARCH} \
&& if [ -f ${PREFIX}/bin/ffplay ]; then \
cp ${PREFIX}/bin/ffplay /ffmpeg/${TARGET_OS}/${ARCH}; \
fi \
&& cp ${PREFIX}/bin/ffmpeg /ffmpeg/${TARGET_OS}/${ARCH} \
&& cp ${PREFIX}/bin/ffprobe /ffmpeg/${TARGET_OS}/${ARCH} \
&& echo "✅ FFmpeg binaries copied successfully" \
Expand All @@ -211,7 +215,7 @@ RUN \
\
&& mkdir -p /build/${TARGET_OS} /output \
# create tarball
&& echo "📦 Creating FFmpeg tarball" \
&& echo "⚙️ Creating FFmpeg tarball" \
&& tar -czf /build/ffmpeg-7.1-${TARGET_OS}-${ARCH}.tar.gz \
-C /ffmpeg/${TARGET_OS}/${ARCH} . >/dev/null 2>&1 \
&& cp /build/ffmpeg-7.1-${TARGET_OS}-${ARCH}.tar.gz /output \
Expand Down
36 changes: 20 additions & 16 deletions ffmpeg-darwin-x86_64.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ ENV DEBIAN_FRONTEND=noninteractive \

# Update and install dependencies
RUN echo "------------------------------------------------------" \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo "" \
&& echo "------------------------------------------------------" \
&& echo "📦 Start FFmpeg for Darwin x86_64 build" \
Expand Down Expand Up @@ -143,12 +143,13 @@ RUN mkdir -p ${PREFIX}

ENV FFMPEG_ENABLES="" \
FFMPEG_CFLAGS="" \
FFMPEG_LDFLAGS=""
FFMPEG_LDFLAGS="" \
FFMPEG_EXTRA_LIBFLAGS=""

# Copy the build scripts
COPY ./scripts /scripts

RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt \
RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt /build/extra_libflags.txt \
&& chmod +x /scripts/init/init.sh \
&& /scripts/init/init.sh \
|| (echo "❌ FFmpeg build failed" ; exit 1)
Expand All @@ -157,12 +158,13 @@ RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt \
RUN FFMPEG_ENABLES=$(cat /build/enable.txt) export FFMPEG_ENABLES \
&& CFLAGS="${CFLAGS} $(cat /build/cflags.txt)" export CFLAGS \
&& LDFLAGS="${LDFLAGS} $(cat /build/ldflags.txt)" export LDFLAGS \
&& FFMPEG_EXTRA_LIBFLAGS="-lpthread -lm $(cat /build/extra_libflags.txt)" export FFMPEG_EXTRA_LIBFLAGS \
&& MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET%.0} export MACOSX_DEPLOYMENT_TARGET \
&& echo "------------------------------------------------------" \
&& echo "🚧 Start building FFmpeg" \
&& echo "------------------------------------------------------" \
&& cd /build/ffmpeg \
&& echo "🔧 Configure FFmpeg [1/2]" \
&& echo "⚙️ Configure FFmpeg [1/2]" \
&& ./configure --pkg-config-flags=--static \
--arch=${ARCH} \
--target-os=darwin \
Expand All @@ -183,7 +185,7 @@ RUN FFMPEG_ENABLES=$(cat /build/enable.txt) export FFMPEG_ENABLES \
--extra-version="NoMercy-MediaServer" \
--extra-cflags="-arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
--extra-ldflags="-arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
--extra-libs="-lpthread -lm" >/ffmpeg_build.log 2>&1 \
--extra-libs="${FFMPEG_EXTRA_LIBFLAGS}" >/ffmpeg_build.log 2>&1 \
|| (cat "/ffmpeg_build.log" ; echo "❌ FFmpeg build failed" ; false) \
&& echo "🛠️ Building FFmpeg [2/2]" \
&& make -j$(nproc) >/ffmpeg_build.log 2>&1 || (cat "/ffmpeg_build.log" ; echo "❌ FFmpeg build failed" ; exit 1) && make install >/dev/null 2>&1 \
Expand All @@ -200,7 +202,9 @@ RUN \
echo "------------------------------------------------------" \
&& echo "🔧 Copying FFmpeg binaries" \
&& mkdir -p /ffmpeg/${TARGET_OS}/${ARCH} \
&& cp ${PREFIX}/bin/ffplay /ffmpeg/${TARGET_OS}/${ARCH} \
&& if [ -f ${PREFIX}/bin/ffplay ]; then \
cp ${PREFIX}/bin/ffplay /ffmpeg/${TARGET_OS}/${ARCH}; \
fi \
&& cp ${PREFIX}/bin/ffmpeg /ffmpeg/${TARGET_OS}/${ARCH} \
&& cp ${PREFIX}/bin/ffprobe /ffmpeg/${TARGET_OS}/${ARCH} \
&& echo "✅ FFmpeg binaries copied successfully" \
Expand All @@ -211,7 +215,7 @@ RUN \
\
&& mkdir -p /build/${TARGET_OS} /output \
# create tarball
&& echo "📦 Creating FFmpeg tarball" \
&& echo "⚙️ Creating FFmpeg tarball" \
&& tar -czf /build/ffmpeg-7.1-${TARGET_OS}-${ARCH}.tar.gz \
-C /ffmpeg/${TARGET_OS}/${ARCH} . >/dev/null 2>&1 \
&& cp /build/ffmpeg-7.1-${TARGET_OS}-${ARCH}.tar.gz /output \
Expand Down
36 changes: 20 additions & 16 deletions ffmpeg-linux-aarch64.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ ENV DEBIAN_FRONTEND=noninteractive \

# Update and install dependencies
RUN echo "------------------------------------------------------" \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo " _ _ __ __ " \
&& echo " | \ | | ___ | \/ | ___ _ __ ___ _ _ " \
&& echo " | \| |/ _ \| |\/| |/ _ \ '__/ __| | | | " \
&& echo " | |\ | (_) | | | | __/ | | (__| |_| | " \
&& echo " |_| \_|\___/|_| |_|\___|_| \___|\__, | " \
&& echo " _____ _____ __ __ ____ _____ _|___/ " \
&& echo " | ___| ___| \/ | _ \| ____/ ___| " \
&& echo " | |_ | |_ | |\/| | |_) | _|| | _ " \
&& echo " | _| | _| | | | | __/| |__| |_| | " \
&& echo " |_| |_| |_| |_|_| |_____\____| " \
&& echo "" \
&& echo "------------------------------------------------------" \
&& echo "📦 Start FFmpeg for Linux aarch64 build" \
Expand Down Expand Up @@ -101,12 +101,13 @@ RUN mkdir -p ${PREFIX}

ENV FFMPEG_ENABLES="" \
FFMPEG_CFLAGS="" \
FFMPEG_LDFLAGS=""
FFMPEG_LDFLAGS="" \
FFMPEG_EXTRA_LIBFLAGS=""

# Copy the build scripts
COPY ./scripts /scripts

RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt \
RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt /build/extra_libflags.txt \
&& chmod +x /scripts/init/init.sh \
&& /scripts/init/init.sh \
|| (echo "❌ FFmpeg build failed" ; exit 1)
Expand All @@ -115,11 +116,12 @@ RUN touch /build/enable.txt /build/cflags.txt /build/ldflags.txt \
RUN FFMPEG_ENABLES=$(cat /build/enable.txt) export FFMPEG_ENABLES \
&& CFLAGS="${CFLAGS} $(cat /build/cflags.txt)" export CFLAGS \
&& LDFLAGS="${LDFLAGS} $(cat /build/ldflags.txt)" export LDFLAGS \
&& FFMPEG_EXTRA_LIBFLAGS="-lpthread -lm $(cat /build/extra_libflags.txt)" export FFMPEG_EXTRA_LIBFLAGS \
&& echo "------------------------------------------------------" \
&& echo "🚧 Start building FFmpeg" \
&& echo "------------------------------------------------------" \
&& cd /build/ffmpeg \
&& echo "🔧 Configure FFmpeg [1/2]" \
&& echo "⚙️ Configure FFmpeg [1/2]" \
&& ./configure --pkg-config-flags=--static \
--arch=${ARCH} \
--target-os=${TARGET_OS} \
Expand All @@ -138,7 +140,7 @@ RUN FFMPEG_ENABLES=$(cat /build/enable.txt) export FFMPEG_ENABLES \
--extra-version="NoMercy-MediaServer" \
--extra-cflags="-static -static-libgcc -static-libstdc++" \
--extra-ldflags="-static -static-libgcc -static-libstdc++" \
--extra-libs="-lpthread -lm" >/ffmpeg_build.log 2>&1 \
--extra-libs="${FFMPEG_EXTRA_LIBFLAGS}" >/ffmpeg_build.log 2>&1 \
|| (cat "/ffmpeg_build.log" ; echo "❌ FFmpeg build failed" ; false) \
&& echo "🛠️ Building FFmpeg [2/2]" \
&& make -j$(nproc) >/ffmpeg_build.log 2>&1 || (cat "/ffmpeg_build.log" ; echo "❌ FFmpeg build failed" ; exit 1) && make install >/dev/null 2>&1 \
Expand All @@ -155,7 +157,9 @@ RUN \
echo "------------------------------------------------------" \
&& echo "🔧 Copying FFmpeg binaries" \
&& mkdir -p /ffmpeg/${TARGET_OS}/${ARCH} \
&& cp ${PREFIX}/bin/ffplay /ffmpeg/${TARGET_OS}/${ARCH} \
&& if [ -f ${PREFIX}/bin/ffplay ]; then \
cp ${PREFIX}/bin/ffplay /ffmpeg/${TARGET_OS}/${ARCH}; \
fi \
&& cp ${PREFIX}/bin/ffmpeg /ffmpeg/${TARGET_OS}/${ARCH} \
&& cp ${PREFIX}/bin/ffprobe /ffmpeg/${TARGET_OS}/${ARCH} \
&& echo "✅ FFmpeg binaries copied successfully" \
Expand All @@ -166,7 +170,7 @@ RUN \
\
&& mkdir -p /build/${TARGET_OS} /output \
# create tarball
&& echo "📦 Creating FFmpeg tarball" \
&& echo "⚙️ Creating FFmpeg tarball" \
&& tar -czf /build/ffmpeg-7.1-${TARGET_OS}-${ARCH}.tar.gz \
-C /ffmpeg/${TARGET_OS}/${ARCH} . >/dev/null 2>&1 \
&& cp /build/ffmpeg-7.1-${TARGET_OS}-${ARCH}.tar.gz /output \
Expand Down
Loading

0 comments on commit 38c2b10

Please sign in to comment.