Compare commits

...

95 Commits

Author SHA1 Message Date
LinuxServer-CI
f35f0c9720
Bot Updating Package Versions 2026-02-12 23:30:59 +00:00
LinuxServer-CI
d424516bec
Bot Updating Templated Files 2026-02-12 22:29:47 +00:00
LinuxServer-CI
7100fa33c6
Bot Updating Package Versions 2026-02-05 23:24:07 +00:00
LinuxServer-CI
7b414e7bd9
Bot Updating Package Versions 2026-01-22 23:22:34 +00:00
LinuxServer-CI
118ea9dee1
Bot Updating Package Versions 2026-01-15 23:20:33 +00:00
LinuxServer-CI
3d3a0f3fdf
Bot Updating Package Versions 2026-01-08 23:19:12 +00:00
LinuxServer-CI
37bfd69cfb
Bot Updating Package Versions 2026-01-07 00:26:03 +00:00
aptalca
ab5fede4d2
Merge pull request #120 from linuxserver/2026-01-06
Remove mpp due to upstream dmca, bump libs
2026-01-06 18:19:07 -05:00
aptalca
c52f067a11
remove mpp from ffmpeg args 2026-01-06 11:42:11 -05:00
aptalca
839170000d
Remove mpp from aarch64 build due to upstream DMCA removal. Bump harfbuzz, libdav1d, libdrm, libpng, libva, libvpl, mesa, opus, shaderc and vulkan-sdk. 2026-01-06 11:09:20 -05:00
LinuxServer-CI
79cbc25e01
Bot Updating Package Versions 2025-12-25 23:18:19 +00:00
LinuxServer-CI
77ad03e76c
Bot Updating Package Versions 2025-12-18 23:17:52 +00:00
LinuxServer-CI
237805303e
Bot Updating Package Versions 2025-12-04 23:15:47 +00:00
aptalca
c01a2f7787
Merge pull request #119 from linuxserver/8.0.1
Bump ffmpeg to 8.0.1
2025-12-01 10:26:33 -05:00
aptalca
5803a9b64f
Merge pull request #118 from mashijp/bump/8.0.1
Bump ffmpeg to 8.0.1
2025-12-01 08:34:44 -05:00
mashijp
c6a0f2b929 template changes 2025-12-01 21:12:33 +09:00
mashijp
91b626f2c2 Bump ffmpeg to 8.0.1 2025-12-01 21:09:49 +09:00
aptalca
80b1900f78
Merge pull request #117 from linuxserver/2025-11-19
Bump various libs and deps
2025-11-20 07:03:34 -05:00
aptalca
259227e5dd
mesa dropped vdpau 2025-11-19 15:37:27 -05:00
aptalca
eee4a1436a
bump various libs and deps 2025-11-19 14:27:18 -05:00
LinuxServer-CI
33269ab474
Bot Updating Package Versions 2025-11-06 23:15:55 +00:00
LinuxServer-CI
306cf13333
Bot Updating Package Versions 2025-10-30 23:16:49 +00:00
LinuxServer-CI
2f3d26d118
Bot Updating Templated Files 2025-10-23 22:15:56 +00:00
LinuxServer-CI
1272de2b43
Bot Updating Package Versions 2025-10-16 23:29:10 +00:00
LinuxServer-CI
8492517284
Bot Updating Package Versions 2025-10-02 23:20:00 +00:00
LinuxServer-CI
289dae9395
Bot Updating Package Versions 2025-09-25 23:13:36 +00:00
LinuxServer-CI
15fadb5862
Bot Updating Package Versions 2025-09-18 23:13:10 +00:00
LinuxServer-CI
e7b350bddc
Bot Updating Package Versions 2025-09-11 23:14:41 +00:00
LinuxServer-CI
f197ab858d
Bot Updating Package Versions 2025-08-24 12:59:58 +00:00
aptalca
4759516f0f
Merge pull request #114 from linuxserver/8.0
Ffmpeg 8.0
2025-08-24 07:58:58 -04:00
aptalca
ae0f517118
remove obsolete patch 2025-08-23 21:51:54 -04:00
aptalca
8f5d687dcb
install newer bindgen 2025-08-23 21:19:10 -04:00
aptalca
6aae044a04
Bump ffmpeg to 8.0. Bump harfbuzz, Intel drivers and libs, libdovi, libdrm, libpng, mesa, ogg, rav1e, shaderc, svt-av1, vulkan-sdk, webp and zimg. 2025-08-23 20:56:47 -04:00
LinuxServer-CI
7dfa233d6d
Bot Updating Package Versions 2025-08-07 12:26:35 +00:00
LinuxServer-CI
7388bdf50b
Bot Updating Templated Files 2025-08-07 11:25:52 +00:00
aptalca
188c92bdaf
Merge pull request #113 from tc-mccarthy/svt-av1-3-1-0
Bumps SVT-AV1 to 3.1.0
2025-08-07 07:24:28 -04:00
TC McCarthy
28b3269bc9 Bumps SVT-AV1 to 3.1.0 2025-08-06 22:27:37 -04:00
LinuxServer-CI
b846a21cc9
Bot Updating Package Versions 2025-07-31 23:14:48 +00:00
LinuxServer-CI
eb0817433d
Bot Updating Package Versions 2025-07-25 00:25:31 +00:00
LinuxServer-CI
5f93798531
Bot Updating Package Versions 2025-07-17 23:15:31 +00:00
LinuxServer-CI
a72a94cb41
Bot Updating Package Versions 2025-07-10 23:14:59 +00:00
LinuxServer-CI
ad4b9919af
Bot Updating Package Versions 2025-07-03 23:16:54 +00:00
LinuxServer-CI
57996e79f4
Bot Updating Templated Files 2025-07-03 22:18:16 +00:00
LinuxServer-CI
772a3b66a0
Bot Updating Templated Files 2025-07-03 22:16:47 +00:00
LinuxServer-CI
1ae2b33b3a
Bot Updating Package Versions 2025-06-26 23:14:17 +00:00
LinuxServer-CI
84b0fc67c6
Bot Updating Package Versions 2025-06-12 23:18:51 +00:00
LinuxServer-CI
e4e39e0ed6
Bot Updating Templated Files 2025-06-12 22:16:41 +00:00
aptalca
bfc8160fb6
Merge pull request #112 from linuxserver/bump-25-06-07
Bump harfbuzz, libass, libdovi, libplacebo, libpng, mesa, rav1e, shaderc, libvpx and vulkan-sdk
2025-06-08 09:43:31 -04:00
aptalca
75cbcfc925
fix docker warning about case 2025-06-07 22:12:56 -04:00
aptalca
fd5a5b386d
Bump harfbuzz, libass, libdovi, libplacebo, libpng, mesa, rav1e, shaderc, libvpx and vulkan-sdk 2025-06-07 22:11:06 -04:00
LinuxServer-CI
ac3554a86c
Bot Updating Package Versions 2025-06-05 12:41:59 +00:00
aptalca
cb233c8241
Merge pull request #111 from linuxserver/rkmpp
add libdrm and rkmpp to arm64 image
2025-06-05 07:33:59 -04:00
aptalca
52ab84a072
add libdrm and rkmpp to arm64 image 2025-06-04 23:53:26 -04:00
LinuxServer-CI
70df6eb677
Bot Updating Package Versions 2025-05-29 22:56:52 +00:00
LinuxServer-CI
884b9c5b00
Bot Updating Package Versions 2025-05-01 23:12:26 +00:00
aptalca
970a7d035c
Merge pull request #107 from linuxserver/25-04-21
Bump aom, Intel drivers and libs, harfbuzz, mesa, svt-av1, libtheora, libvpx, vulkan-sdk and vvenc
2025-04-22 13:34:00 -04:00
aptalca
50dc5d8696
bump and fix libtheora 2025-04-21 11:58:19 -04:00
aptalca
ccaf335ca8
Bump aom, Intel drivers and libs, harfbuzz, mesa, svt-av1, libvpx, vulkan-sdk and vvenc 2025-04-21 11:16:06 -04:00
LinuxServer-CI
07756e90ff
Bot Updating Package Versions 2025-04-18 00:32:04 +00:00
LinuxServer-CI
b81ddb65b8
Bot Updating Package Versions 2025-04-10 23:08:42 +00:00
LinuxServer-CI
c38dac6d51
Bot Updating Package Versions 2025-04-06 00:38:35 +00:00
aptalca
158a5b8f57
Merge pull request #106 from linuxserver/cargo-c-fix
fix cargo-c dep issue
2025-04-05 19:42:35 -04:00
aptalca
8b98868c40
pin cmake as 4.0.0 breaks a lot of things 2025-04-04 12:01:25 -04:00
aptalca
2b5a969177
fix cmake 4.0.0 failing with no minimum defined 2025-04-04 11:24:00 -04:00
aptalca
1f4153c29a
fix cargo-c dep issue 2025-04-04 10:03:29 -04:00
LinuxServer-CI
161def8c4e
Bot Updating Package Versions 2025-03-27 23:08:39 +00:00
LinuxServer-CI
3f0a626bce
Bot Updating Package Versions 2025-03-21 00:39:46 +00:00
aptalca
daf525ef35
Merge pull request #105 from linuxserver/7.1.1
Bump ffmpeg to 7.1.1, bump various other drivers and libs
2025-03-11 14:43:53 -04:00
aptalca
23b4cea876
patch ffmpeg for svt-av1 3.0.0 2025-03-10 19:20:27 -04:00
aptalca
98a8c9aedd
fix rav1e build, remove no longer needed gcc12 for vvenc 2025-03-10 17:44:04 -04:00
aptalca
402bd7b486
fix aarch64 harfbuzz build 2025-03-10 16:31:13 -04:00
aptalca
87f4661467
add missing dep 2025-03-07 18:22:23 -05:00
aptalca
3819b379f6
fontconfig only publishes xz tarballs now 2025-03-07 18:00:59 -05:00
aptalca
c3ce08ae34
use gh mirror for ffnvcodec 2025-03-07 17:50:08 -05:00
aptalca
314ce6a11f
bump ffmpeg to 7.1.1, bump various other drivers and libs 2025-03-07 17:31:19 -05:00
LinuxServer-CI
224fb37cb9
Bot Updating Package Versions 2025-03-07 00:33:32 +00:00
LinuxServer-CI
b6478ffcc4
Bot Updating Package Versions 2025-02-27 23:09:48 +00:00
LinuxServer-CI
363e904e38
Bot Updating Package Versions 2025-02-21 00:40:28 +00:00
LinuxServer-CI
17de168698
Bot Updating Package Versions 2025-02-13 14:49:06 +00:00
LinuxServer-CI
311f8b6e90
Bot Updating Templated Files 2025-02-13 12:52:39 +00:00
quietsy
aedfa9f62c
Merge pull request #103 from linuxserver/fix-logo
Fix logo
2025-02-13 14:51:37 +02:00
quietsy
6198408c9a Fix logo 2025-02-13 14:18:41 +02:00
LinuxServer-CI
b93ae37877
Bot Updating Package Versions 2025-02-07 00:18:24 +00:00
LinuxServer-CI
ff419663fc
Bot Updating Package Versions 2025-01-31 01:22:20 +00:00
LinuxServer-CI
89a77204b5
Bot Updating Templated Files 2025-01-30 22:15:48 +00:00
LinuxServer-CI
8751eb564a
Bot Updating Templated Files 2025-01-30 22:15:05 +00:00
LinuxServer-CI
134a162732
Bot Updating Package Versions 2025-01-22 22:51:20 +00:00
LinuxServer-CI
bfa40dc2eb
Bot Updating Templated Files 2025-01-22 20:11:20 +00:00
quietsy
ca191ead02
Merge pull request #102 from linuxserver/add-project-categories
Add categories to readme-vars.yml
2025-01-22 22:09:53 +02:00
quietsy
60b97dd62e Add categories to readme-vars.yml 2025-01-22 14:21:39 +02:00
Adam
498763439e
Merge pull request #101 from linuxserver/readme-description
Add project description
2025-01-18 14:35:37 +00:00
thespad
f10c7eadc7
Add project description 2025-01-17 23:12:42 +00:00
LinuxServer-CI
2ca7ccc425
Bot Updating Package Versions 2024-12-20 00:20:54 +00:00
LinuxServer-CI
abb8c19e8a
Bot Updating Templated Files 2024-12-19 22:16:07 +00:00
LinuxServer-CI
e79ff22f4e
Bot Updating Templated Files 2024-12-19 22:15:00 +00:00
20 changed files with 415 additions and 257 deletions

0
.editorconfig Executable file → Normal file
View File

2
.github/CONTRIBUTING.md vendored Executable file → Normal file
View File

@ -6,7 +6,7 @@
* Read, and fill the Pull Request template
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
## Common files

2
.github/ISSUE_TEMPLATE/config.yml vendored Executable file → Normal file
View File

@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: Discord chat support
url: https://discord.gg/YWrKVTn
url: https://linuxserver.io/discord
about: Realtime support / chat with the community and the team.
- name: Discourse discussion forum

0
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Executable file → Normal file
View File

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Executable file → Normal file
View File

0
.github/PULL_REQUEST_TEMPLATE.md vendored Executable file → Normal file
View File

3
.github/workflows/call_issue_pr_tracker.yml vendored Executable file → Normal file
View File

@ -8,6 +8,9 @@ on:
pull_request_review:
types: [submitted,edited,dismissed]
permissions:
contents: read
jobs:
manage-project:
permissions:

3
.github/workflows/call_issues_cron.yml vendored Executable file → Normal file
View File

@ -4,6 +4,9 @@ on:
- cron: '15 0 * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
stale:
permissions:

60
.github/workflows/external_trigger.yml vendored Executable file → Normal file
View File

@ -3,6 +3,9 @@ name: External Trigger Main
on:
workflow_dispatch:
permissions:
contents: read
jobs:
external-trigger-master:
runs-on: ubuntu-latest
@ -15,7 +18,10 @@ jobs:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: |
printf "# External trigger for docker-ffmpeg\n\n" >> $GITHUB_STEP_SUMMARY
if grep -q "^ffmpeg_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
if grep -q "^ffmpeg_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`ffmpeg_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^ffmpeg_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`ffmpeg_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
@ -23,8 +29,13 @@ jobs:
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> External trigger running off of master branch. To disable this trigger, add \`ffmpeg_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(echo 7.1-cli)
EXT_RELEASE=$(echo 8.0.1-cli)
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^ffmpeg_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
@ -35,8 +46,8 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1
fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/ffmpeg"
tag="latest"
@ -48,13 +59,30 @@ jobs:
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
digest=$(jq -r '.config.digest' <<< "${digest}");
fi
fi
image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}")
@ -75,8 +103,8 @@ jobs:
exit 1
fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
@ -91,8 +119,8 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if "${artifacts_found}" == "true" ]]; then
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi
response=$(curl -iX POST \
@ -111,7 +139,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for ffmpeg tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
TRIGGER_REASON="A version change was detected for ffmpeg tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}

3
.github/workflows/external_trigger_scheduler.yml vendored Executable file → Normal file
View File

@ -5,6 +5,9 @@ on:
- cron: '1 * * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest

6
.github/workflows/greetings.yml vendored Executable file → Normal file
View File

@ -2,8 +2,14 @@ name: Greetings
on: [pull_request_target, issues]
permissions:
contents: read
jobs:
greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1

30
.github/workflows/package_trigger_scheduler.yml vendored Executable file → Normal file
View File

@ -5,6 +5,9 @@ on:
- cron: '59 21 * * 4'
workflow_dispatch:
permissions:
contents: read
jobs:
package-trigger-scheduler:
runs-on: ubuntu-latest
@ -27,9 +30,18 @@ jobs:
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/jenkins-vars.yml)
if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/Jenkinsfile >/dev/null 2>&1; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
if [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/readme-vars.yml)
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
@ -37,7 +49,7 @@ jobs:
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`ffmpeg_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
@ -49,6 +61,11 @@ jobs:
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
if [[ -z "${response}" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Jenkins build could not be triggered. Skipping branch."
continue
fi
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
@ -56,11 +73,14 @@ jobs:
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi
else

0
.github/workflows/permissions.yml vendored Executable file → Normal file
View File

View File

@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
# build stage
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble as buildstage
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble AS buildstage
# set version label
ARG FFMPEG_VERSION
@ -10,56 +10,57 @@ ARG FFMPEG_VERSION
ENV \
DEBIAN_FRONTEND="noninteractive" \
MAKEFLAGS="-j4" \
CMAKE_POLICY_VERSION_MINIMUM="3.5" \
PATH="/root/.cargo/bin:${PATH}"
# versions
ENV \
AOM=v3.11.0 \
AOM=v3.13.1 \
FDKAAC=2.0.3 \
FFMPEG_HARD=7.1 \
FONTCONFIG=2.15.0 \
FREETYPE=2.13.3 \
FFMPEG_HARD=8.0.1 \
FONTCONFIG=2.16.0 \
FREETYPE=2.14.1 \
FRIBIDI=1.0.16 \
GMMLIB=22.5.2 \
HARFBUZZ=10.1.0 \
IHD=24.3.4 \
KVAZAAR=2.3.1 \
GMMLIB=22.8.2 \
HARFBUZZ=12.3.0 \
IHD=25.3.4 \
KVAZAAR=2.3.2 \
LAME=3.100 \
LIBASS=0.17.3 \
LIBDAV1D=1.5.0 \
LIBDOVI=2.1.2 \
LIBDRM=2.4.123 \
LIBASS=0.17.4 \
LIBDAV1D=1.5.3 \
LIBDOVI=2.3.1 \
LIBDRM=2.4.131 \
LIBGL=1.7.0 \
LIBLC3=1.1.1 \
LIBLC3=1.1.3 \
LIBMFX=22.5.4 \
LIBPLACEBO=7.349.0 \
LIBPNG=1.6.44 \
LIBVA=2.22.0 \
LIBPLACEBO=7.351.0 \
LIBPNG=1.6.53 \
LIBVA=2.23.0 \
LIBVDPAU=1.5 \
LIBVIDSTAB=1.1.1 \
LIBVMAF=3.0.0 \
LIBVPL=2.13.0 \
MESA=24.3.0 \
NVCODEC=n12.2.72.0 \
OGG=1.3.5 \
LIBVPL=2.16.0 \
MESA=25.3.3 \
NVCODEC=n13.0.19.0 \
OGG=1.3.6 \
OPENCOREAMR=0.1.6 \
OPENJPEG=2.5.2 \
OPUS=1.5.2 \
RAV1E=0.7.1 \
OPENJPEG=2.5.4 \
OPUS=1.6 \
RAV1E=0.8.1 \
RIST=0.2.11 \
SHADERC=v2024.3 \
SHADERC=v2025.5 \
SRT=1.5.4 \
SVTAV1=2.3.0 \
THEORA=1.1.1 \
SVTAV1=3.1.2 \
THEORA=1.2.0 \
VORBIS=1.3.7 \
VPLGPURT=24.3.4 \
VPX=1.15.0 \
VULKANSDK=vulkan-sdk-1.3.296.0 \
VVENC=1.12.1 \
WEBP=1.4.0 \
VPLGPURT=25.3.4 \
VPX=1.15.2 \
VULKANSDK=vulkan-sdk-1.4.335.0 \
VVENC=1.13.1 \
WEBP=1.6.0 \
X265=4.1 \
XVID=1.3.7 \
ZIMG=3.0.5 \
ZIMG=3.0.6 \
ZMQ=v4.3.5
RUN \
@ -131,13 +132,13 @@ RUN \
tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \
cd /tmp/rust && \
./install.sh && \
cargo install cargo-c cbindgen && \
cargo install bindgen-cli cargo-c cbindgen --locked && \
python3 -m venv /lsiopy && \
pip install -U --no-cache-dir \
pip \
setuptools \
wheel && \
pip install --no-cache-dir cmake mako meson ninja packaging ply pyyaml
pip install --no-cache-dir cmake==3.31.6 mako meson ninja packaging ply pyyaml
# compile 3rd party libs
RUN \
@ -181,7 +182,7 @@ RUN \
mkdir -p /tmp/ffnvcodec && \
git clone \
--branch ${NVCODEC} \
--depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git \
--depth 1 https://github.com/FFmpeg/nv-codec-headers.git \
/tmp/ffnvcodec
RUN \
echo "**** compiling ffnvcodec ****" && \
@ -206,8 +207,8 @@ RUN \
echo "**** grabbing fontconfig ****" && \
mkdir -p /tmp/fontconfig && \
curl -Lf \
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/fontconfig
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.xz | \
tar -xJ --strip-components=1 -C /tmp/fontconfig
RUN \
echo "**** compiling fontconfig ****" && \
cd /tmp/fontconfig && \
@ -691,16 +692,6 @@ RUN \
RUN \
echo "**** compiling theora ****" && \
cd /tmp/theora && \
cp \
/usr/share/automake-1.16/config.guess \
config.guess && \
cp \
/usr/share/automake-1.16/config.sub \
config.sub && \
curl -fL \
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
> png.patch && \
patch ./examples/png2theora.c < png.patch && \
./configure \
--disable-static \
--enable-shared && \
@ -898,10 +889,11 @@ RUN \
curl -Lf \
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
tar -jx --strip-components=1 -C /tmp/ffmpeg
RUN \
echo "**** compiling ffmpeg ****" && \
cd /tmp/ffmpeg && \
./configure \
./configure \
--disable-debug \
--disable-doc \
--disable-ffplay \
@ -969,7 +961,6 @@ RUN \
/buildout/usr/local/lib/libmfx-gen \
/buildout/usr/local/lib/mfx \
/buildout/usr/local/lib/x86_64-linux-gnu/dri \
/buildout/usr/local/lib/x86_64-linux-gnu/vdpau \
/buildout/usr/local/share/vulkan \
/buildout/usr/share/fonts \
/buildout/usr/share/libdrm \
@ -998,9 +989,6 @@ RUN \
cp -a \
/usr/local/lib/x86_64-linux-gnu/dri/*.so \
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
cp -a \
/usr/local/lib/x86_64-linux-gnu/vdpau/*.so \
/buildout/usr/local/lib/x86_64-linux-gnu/vdpau/ && \
cp -a \
/usr/lib/x86_64-linux-gnu/dri/i965* \
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
@ -1068,6 +1056,7 @@ RUN \
libxshmfence1 \
libxml2 \
ocl-icd-libopencl1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** clean up ****" && \
rm -rf \
/var/lib/apt/lists/* \

View File

@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
# build stage
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble as buildstage
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble AS buildstage
# set version label
ARG FFMPEG_VERSION
@ -10,44 +10,46 @@ ARG FFMPEG_VERSION
ENV \
DEBIAN_FRONTEND="noninteractive" \
MAKEFLAGS="-j4" \
CMAKE_POLICY_VERSION_MINIMUM="3.5" \
PATH="/root/.cargo/bin:${PATH}"
# versions
ENV \
AOM=v3.11.0 \
AOM=v3.13.1 \
FDKAAC=2.0.3 \
FFMPEG_HARD=7.1 \
FONTCONFIG=2.15.0 \
FREETYPE=2.13.3 \
FFMPEG_HARD=8.0.1 \
FONTCONFIG=2.16.0 \
FREETYPE=2.14.1 \
FRIBIDI=1.0.16 \
HARFBUZZ=10.1.0 \
KVAZAAR=2.3.1 \
HARFBUZZ=12.3.0 \
KVAZAAR=2.3.2 \
LAME=3.100 \
LIBASS=0.17.3 \
LIBDAV1D=1.5.0 \
LIBLC3=1.1.1 \
LIBPNG=1.6.44 \
LIBVA=2.22.0 \
LIBASS=0.17.4 \
LIBDAV1D=1.5.3 \
LIBDRM=2.4.131 \
LIBLC3=1.1.3 \
LIBPNG=1.6.53 \
LIBVA=2.23.0 \
LIBVDPAU=1.5 \
LIBVIDSTAB=1.1.1 \
LIBVMAF=3.0.0 \
NVCODEC=n12.1.14.0 \
OGG=1.3.5 \
NVCODEC=n13.0.19.0 \
OGG=1.3.6 \
OPENCOREAMR=0.1.6 \
OPENJPEG=2.5.2 \
OPUS=1.5.2 \
RAV1E=0.7.1 \
OPENJPEG=2.5.4 \
OPUS=1.6 \
RAV1E=0.8.1 \
RIST=0.2.11 \
SRT=1.5.4 \
SVTAV1=2.3.0 \
THEORA=1.1.1 \
SVTAV1=3.1.2 \
THEORA=1.2.0 \
VORBIS=1.3.7 \
VPX=1.15.0 \
VVENC=1.12.1 \
WEBP=1.4.0 \
VPX=1.15.2 \
VVENC=1.13.1 \
WEBP=1.6.0 \
X265=4.1 \
XVID=1.3.7 \
ZIMG=3.0.5 \
ZIMG=3.0.6 \
ZMQ=v4.3.5
RUN \
@ -56,14 +58,13 @@ RUN \
apt-get install -y \
autoconf \
automake \
build-essential \
bzip2 \
cmake \
clang \
diffutils \
g++ \
g++-12 \
gcc \
gcc-12 \
git \
gperf \
libasound2-dev \
@ -96,13 +97,13 @@ RUN \
tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \
cd /tmp/rust && \
./install.sh && \
cargo install cargo-c && \
cargo install cargo-c --locked && \
python3 -m venv /lsiopy && \
pip install -U --no-cache-dir \
pip \
setuptools \
wheel && \
pip install --no-cache-dir cmake meson ninja
pip install --no-cache-dir cmake==3.31.6 meson ninja
# compile 3rd party libs
RUN \
@ -146,7 +147,7 @@ RUN \
mkdir -p /tmp/ffnvcodec && \
git clone \
--branch ${NVCODEC} \
--depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git \
--depth 1 https://github.com/FFmpeg/nv-codec-headers.git \
/tmp/ffnvcodec
RUN \
echo "**** compiling ffnvcodec ****" && \
@ -171,8 +172,8 @@ RUN \
echo "**** grabbing fontconfig ****" && \
mkdir -p /tmp/fontconfig && \
curl -Lf \
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/fontconfig
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.xz | \
tar -xJ --strip-components=1 -C /tmp/fontconfig
RUN \
echo "**** compiling fontconfig ****" && \
cd /tmp/fontconfig && \
@ -209,7 +210,7 @@ RUN \
cd /tmp/harfbuzz && \
meson build && \
ninja -C build install && \
strip -d /usr/local/lib/libharfbuzz*.so
strip -d /usr/local/lib/aarch64-linux-gnu/libharfbuzz*.so
RUN \
echo "**** grabbing kvazaar ****" && \
mkdir -p /tmp/kvazaar && \
@ -277,6 +278,22 @@ RUN \
cd /tmp/libdav1d/build && \
meson setup .. && \
ninja install
RUN \
echo "**** grabbing libdrm ****" && \
mkdir -p /tmp/libdrm && \
curl -Lf \
https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM}.tar.xz | \
tar -xJ --strip-components=1 -C /tmp/libdrm
RUN \
echo "**** compiling libdrm ****" && \
cd /tmp/libdrm && \
meson setup \
--prefix=/usr --libdir=/usr/local/lib/aarch64-linux-gnu \
-Dvalgrind=disabled \
. build && \
ninja -C build && \
ninja -C build install && \
strip -d /usr/local/lib/aarch64-linux-gnu/libdrm*.so
RUN \
echo "**** grabbing liblc3 ****" && \
mkdir -p /tmp/liblc3 && \
@ -380,7 +397,7 @@ RUN \
echo "**** compiling rav1e ****" && \
cd /tmp/rav1e && \
cargo cinstall --release && \
strip -d /usr/local/lib/librav1e.so
strip -d /usr/local/lib/aarch64-linux-gnu/librav1e.so
RUN \
echo "**** grabbing rist ****" && \
mkdir -p /tmp/rist && \
@ -438,16 +455,6 @@ RUN \
RUN \
echo "**** compiling theora ****" && \
cd /tmp/theora && \
cp \
/usr/share/automake-1.16/config.guess \
config.guess && \
cp \
/usr/share/automake-1.16/config.sub \
config.sub && \
curl -fL \
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
> png.patch && \
patch ./examples/png2theora.c < png.patch && \
./configure \
--disable-static \
--enable-shared && \
@ -514,7 +521,7 @@ RUN \
RUN \
echo "**** compiling vvenc ****" && \
cd /tmp/vvenc && \
CC=/usr/bin/gcc-12 CXX=/usr/bin/g++-12 make install install-prefix=/usr/local && \
make install install-prefix=/usr/local && \
strip -d /usr/local/lib/libvvenc.so
RUN \
echo "**** grabbing webp ****" && \
@ -616,14 +623,14 @@ RUN \
curl -Lf \
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
tar -jx --strip-components=1 -C /tmp/ffmpeg
RUN \
echo "**** compiling ffmpeg ****" && \
cd /tmp/ffmpeg && \
./configure \
RUN \
echo "**** compiling ffmpeg ****" && \
cd /tmp/ffmpeg && \
./configure \
--disable-debug \
--disable-doc \
--disable-ffplay \
--disable-libdrm \
--enable-alsa \
--enable-cuda-llvm \
--enable-cuvid \
@ -678,7 +685,7 @@ RUN \
mkdir -p \
/buildout/usr/local/bin \
/buildout/usr/local/etc/fonts \
/buildout/usr/local/lib \
/buildout/usr/local/lib/aarch64-linux-gnu \
/buildout/usr/share/fonts && \
cp \
/tmp/ffmpeg/ffmpeg \
@ -692,6 +699,9 @@ RUN \
cp -a \
/usr/local/lib/lib*so* \
/buildout/usr/local/lib/ && \
cp -a \
/usr/local/lib/aarch64-linux-gnu/lib*so* \
/buildout/usr/local/lib/aarch64-linux-gnu/ && \
cp -a \
/usr/share/fonts/* \
/buildout/usr/share/fonts/
@ -730,6 +740,7 @@ RUN \
libxext6 \
libxml2 \
ocl-icd-libopencl1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** clean up ****" && \
rm -rf \
/var/lib/apt/lists/* \

170
Jenkinsfile vendored
View File

@ -49,11 +49,23 @@ pipeline {
steps{
echo "Running on node: ${NODE_NAME}"
sh '''#! /bin/bash
containers=$(docker ps -aq)
echo "Pruning builder"
docker builder prune -f --builder container || :
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi
docker system prune -af --volumes || : '''
docker system prune -f --volumes || :
docker image prune -af || :
'''
script{
env.EXIT_STATUS = ''
env.LS_RELEASE = sh(
@ -75,7 +87,11 @@ pipeline {
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
if ( env.SYFT_IMAGE_TAG == null ) {
env.SYFT_IMAGE_TAG = 'latest'
}
}
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{
@ -124,7 +140,7 @@ pipeline {
steps{
script{
env.EXT_RELEASE = sh(
script: ''' echo 7.1-cli ''',
script: ''' echo 8.0.1-cli ''',
returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command'
}
@ -185,6 +201,7 @@ pipeline {
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
}
}
}
@ -210,6 +227,7 @@ pipeline {
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@ -235,6 +253,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@ -257,7 +276,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \
python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
@ -503,9 +522,9 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Ffmpeg\" \
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
--label \"org.opencontainers.image.description=A complete, cross-platform solution to record, convert and stream audio and video.\" \
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false --builder=container --load \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash
set -e
@ -529,12 +548,17 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
wait
fi
'''
}
@ -567,9 +591,9 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Ffmpeg\" \
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
--label \"org.opencontainers.image.description=A complete, cross-platform solution to record, convert and stream audio and video.\" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false --builder=container --load \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash
set -e
@ -593,12 +617,17 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
wait
fi
'''
}
@ -624,9 +653,9 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Ffmpeg\" \
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
--label \"org.opencontainers.image.description=A complete, cross-platform solution to record, convert and stream audio and video.\" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
--provenance=false --sbom=false --builder=container --load \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash
set -e
@ -651,11 +680,15 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
wait
fi
'''
}
@ -665,7 +698,8 @@ pipeline {
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || :
docker system prune -f --volumes || :
docker image prune -af || :
'''
}
}
@ -691,7 +725,7 @@ pipeline {
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:latest \
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
@ -778,7 +812,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
docker pull ghcr.io/linuxserver/ci:latest
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@ -800,7 +834,10 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \
-t ghcr.io/linuxserver/ci:latest \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py'''
}
}
@ -826,9 +863,11 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
@ -853,20 +892,27 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
@ -884,23 +930,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master",\
"name": "'${META_TAG}'",\
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
jq -n \
--arg tag_name "$META_TAG" \
--arg target_commitish "master" \
--arg ci_url "${CI_URL:-N/A}" \
--arg ls_notes "$AUTO_RELEASE_NOTES" \
--arg remote_notes "$(cat releasebody.json)" \
'{
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": false }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
}
}
// Add protection to the release branch
@ -1075,12 +1139,22 @@ EOF
}
cleanup {
sh '''#! /bin/bash
echo "Performing docker system prune!!"
containers=$(docker ps -aq)
echo "Pruning builder!!"
docker builder prune -f --builder container || :
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi
docker system prune -af --volumes || :
docker system prune -f --volumes || :
docker image prune -af || :
'''
cleanWs()
}

View File

@ -183,6 +183,15 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **06.01.26:** - Remove mpp from aarch64 build due to upstream DMCA removal. Bump harfbuzz, libdav1d, libdrm, libpng, libva, libvpl, mesa, opus, shaderc and vulkan-sdk.
* **01.12.25:** - Bump ffmpeg to 8.0.1.
* **19.11.25:** - Bump aom, freetype, harfbuzz, Intel drivers and libs, kvazaar, libdav1d, libdrm, mesa, mpp, openjpeg, shaderc, svt-av1 and vulkan-sdk.
* **23.08.25:** - Bump ffmpeg to 8.0. Bump harfbuzz, Intel drivers and libs, libdovi, libdrm, libpng, mesa, ogg, rav1e, shaderc, svt-av1, vulkan-sdk, webp and zimg.
* **06.08.25:** - Bump svt-av1.
* **07.06.25:** - Bump harfbuzz, libass, libdovi, libplacebo, libpng, mesa, rav1e, shaderc, libvpx and vulkan-sdk.
* **04.06.25:** - Add libdrm and rkmpp to arm64 image.
* **21.04.25:** - Bump aom, Intel drivers and libs, harfbuzz, mesa, svt-av1, libvpx, libtheora, vulkan-sdk and vvenc.
* **07.03.25:** - Bump ffmpeg to 7.1.1, Bump aom, fontconfig, Intel drivers and libs, harfbuzz, libdav1d, libdovi, libdrm, liblc3, libpng, mesa, openjpeg, shaderc, svt-av1, vulkan-sdk, vvenc and webp.
* **26.11.24:** - Bump libaom, mesa, rist, srt and libx265.
* **07.11.24:** - Bump harfbuzz, Intel drivers and libs, libdav1d, mesa, svtav1, vpx, vulkan sdk and vvenc.
* **05.10.24:** - Add support for libvvenc on aarch64. Bump mesa.

View File

@ -3,11 +3,10 @@
# jenkins variables
project_name: docker-ffmpeg
external_type: na
custom_version_command: "echo 7.1-cli"
custom_version_command: "echo 8.0.1-cli"
release_type: stable
release_tag: latest
ls_branch: master
build_armhf: false
repo_vars:
- BUILD_VERSION_ARG = 'FFMPEG_VERSION'
- LS_USER = 'linuxserver'

View File

@ -1,109 +1,109 @@
NAME VERSION TYPE
adduser 3.137ubuntu1 deb
alsa-topology-conf 1.2.5.1-2 deb
alsa-ucm-conf 1.2.10-1ubuntu5.3 deb
apt 2.7.14build2 deb
apt-utils 2.7.14build2 deb
base-files 13ubuntu10.1 deb
alsa-ucm-conf 1.2.10-1ubuntu5.9 deb
apt 2.8.3 deb
apt-utils 2.8.3 deb
base-files 13ubuntu10.4 deb
base-passwd 3.6.3build1 deb
bash 5.2.21-2ubuntu4 deb
bsdutils 1:2.39.3-9ubuntu6.1 deb
bsdutils 1:2.39.3-9ubuntu6.4 deb
ca-certificates 20240203 deb
catatonit 0.1.7-1 deb
coreutils 9.4-3ubuntu6 deb
coreutils 9.4-3ubuntu6.1 deb
cron 3.0pl1-184ubuntu2 deb
cron-daemon-common 3.0pl1-184ubuntu2 deb
curl 8.5.0-2ubuntu10.5 deb
curl 8.5.0-2ubuntu10.6 deb
dash 0.5.12-6ubuntu5 deb
debconf 1.5.86ubuntu1 deb
debianutils 5.17build1 deb
diffutils 1:3.10-1build1 deb
dirmngr 2.4.4-2ubuntu17 deb
dpkg 1.22.6ubuntu6.1 deb
dirmngr 2.4.4-2ubuntu17.4 deb
dpkg 1.22.6ubuntu6.5 deb
e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb
findutils 4.9.0-5build1 deb
gcc-14-base 14.2.0-4ubuntu2~24.04 deb
gnupg 2.4.4-2ubuntu17 deb
gnupg-l10n 2.4.4-2ubuntu17 deb
gnupg-utils 2.4.4-2ubuntu17 deb
gpg 2.4.4-2ubuntu17 deb
gpg-agent 2.4.4-2ubuntu17 deb
gpg-wks-client 2.4.4-2ubuntu17 deb
gpgconf 2.4.4-2ubuntu17 deb
gpgsm 2.4.4-2ubuntu17 deb
gpgv 2.4.4-2ubuntu17 deb
gnupg 2.4.4-2ubuntu17.4 deb
gnupg-l10n 2.4.4-2ubuntu17.4 deb
gnupg-utils 2.4.4-2ubuntu17.4 deb
gpg 2.4.4-2ubuntu17.4 deb
gpg-agent 2.4.4-2ubuntu17.4 deb
gpg-wks-client 2.4.4-2ubuntu17.4 deb
gpgconf 2.4.4-2ubuntu17.4 deb
gpgsm 2.4.4-2ubuntu17.4 deb
gpgv 2.4.4-2ubuntu17.4 deb
grep 3.11-4build1 deb
gzip 1.12-1ubuntu3 deb
gzip 1.12-1ubuntu3.1 deb
hostname 3.23+nmu2ubuntu2 deb
init-system-helpers 1.66ubuntu1 deb
jq 1.7.1-3build1 deb
keyboxd 2.4.4-2ubuntu17 deb
krb5-locales 1.20.1-6ubuntu2.2 deb
jq 1.7.1-3ubuntu0.24.04.1 deb
keyboxd 2.4.4-2ubuntu17.4 deb
krb5-locales 1.20.1-6ubuntu2.6 deb
libacl1 2.3.2-1build1.1 deb
libapt-pkg6.0t64 2.7.14build2 deb
libasound2-data 1.2.11-1build2 deb
libasound2t64 1.2.11-1build2 deb
libapt-pkg6.0t64 2.8.3 deb
libasound2-data 1.2.11-1ubuntu0.1 deb
libasound2t64 1.2.11-1ubuntu0.1 deb
libassuan0 2.5.6-1build1 deb
libattr1 1:2.5.2-1build1 deb
libattr1 1:2.5.2-1build1.1 deb
libaudit-common 1:3.1.2-2.1build1.1 deb
libaudit1 1:3.1.2-2.1build1.1 deb
libblkid1 2.39.3-9ubuntu6.1 deb
libblkid1 2.39.3-9ubuntu6.4 deb
libbrotli1 1.1.0-2build2 deb
libbsd0 0.12.1-1build1 deb
libbsd0 0.12.1-1build1.1 deb
libbz2-1.0 1.0.8-5.1build0.1 deb
libc-bin 2.39-0ubuntu8.3 deb
libc6 2.39-0ubuntu8.3 deb
libc-bin 2.39-0ubuntu8.7 deb
libc6 2.39-0ubuntu8.7 deb
libcap-ng0 0.8.4-2build2 deb
libcap2 1:2.66-5ubuntu2 deb
libcap2 1:2.66-5ubuntu2.2 deb
libcom-err2 1.47.0-2.4~exp1ubuntu4.1 deb
libcrypt1 1:4.4.36-4build1 deb
libcurl4t64 8.5.0-2ubuntu10.5 deb
libcurl4t64 8.5.0-2ubuntu10.6 deb
libdb5.3t64 5.3.28+dfsg2-7 deb
libdebconfclient0 0.271ubuntu3 deb
libedit2 3.1-20230828-1build1 deb
libelf1t64 0.190-1.1build4 deb
libexpat1 2.6.1-2ubuntu0.2 deb
libelf1t64 0.190-1.1ubuntu0.1 deb
libexpat1 2.6.1-2ubuntu0.3 deb
libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb
libffi8 3.4.6-1build1 deb
libgcc-s1 14.2.0-4ubuntu2~24.04 deb
libgcrypt20 1.10.3-2build1 deb
libglib2.0-0t64 2.80.0-6ubuntu3.2 deb
libglib2.0-data 2.80.0-6ubuntu3.2 deb
libgmp10 2:6.3.0+dfsg-2ubuntu6 deb
libgnutls30t64 3.8.3-1.1ubuntu3.2 deb
libglib2.0-0t64 2.80.0-6ubuntu3.8 deb
libglib2.0-data 2.80.0-6ubuntu3.8 deb
libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb
libgnutls30t64 3.8.3-1.1ubuntu3.4 deb
libgomp1 14.2.0-4ubuntu2~24.04 deb
libgpg-error0 1.47-3build2 deb
libgssapi-krb5-2 1.20.1-6ubuntu2.2 deb
libgpg-error0 1.47-3build2.1 deb
libgssapi-krb5-2 1.20.1-6ubuntu2.6 deb
libhogweed6t64 3.9.1-2.2build1.1 deb
libicu74 74.2-1ubuntu3.1 deb
libidn2-0 2.3.7-2build1 deb
libidn2-0 2.3.7-2build1.1 deb
libjpeg-turbo8 2.1.5-2ubuntu2 deb
libjpeg8 8c-2ubuntu11 deb
libjq1 1.7.1-3build1 deb
libk5crypto3 1.20.1-6ubuntu2.2 deb
libjq1 1.7.1-3ubuntu0.24.04.1 deb
libk5crypto3 1.20.1-6ubuntu2.6 deb
libkeyutils1 1.6.3-3build1 deb
libkrb5-3 1.20.1-6ubuntu2.2 deb
libkrb5support0 1.20.1-6ubuntu2.2 deb
libkrb5-3 1.20.1-6ubuntu2.6 deb
libkrb5support0 1.20.1-6ubuntu2.6 deb
libksba8 1.6.6-1build1 deb
libldap-common 2.6.7+dfsg-1~exp1ubuntu8.1 deb
libldap2 2.6.7+dfsg-1~exp1ubuntu8.1 deb
libldap-common 2.6.10+dfsg-0ubuntu0.24.04.1 deb
libldap2 2.6.10+dfsg-0ubuntu0.24.04.1 deb
libllvm18 1:18.1.3-1ubuntu1 deb
liblz4-1 1.9.4-1build1.1 deb
liblzma5 5.6.1+really5.4.5-1build0.1 deb
libmd0 1.1.0-2build1 deb
libmount1 2.39.3-9ubuntu6.1 deb
liblzma5 5.6.1+really5.4.5-1ubuntu0.2 deb
libmd0 1.1.0-2build1.1 deb
libmount1 2.39.3-9ubuntu6.4 deb
libncursesw6 6.4+20240113-1ubuntu2 deb
libnettle8t64 3.9.1-2.2build1.1 deb
libnghttp2-14 1.59.0-1ubuntu0.1 deb
libnghttp2-14 1.59.0-1ubuntu0.2 deb
libnpth0t64 1.6-3.1build1 deb
libonig5 6.9.9-1build1 deb
libp11-kit0 0.25.3-4ubuntu2.1 deb
libpam-modules 1.5.3-5ubuntu5.1 deb
libpam-modules-bin 1.5.3-5ubuntu5.1 deb
libpam-runtime 1.5.3-5ubuntu5.1 deb
libpam0g 1.5.3-5ubuntu5.1 deb
libpciaccess0 0.17-3build1 deb
libpcre2-8-0 10.42-4ubuntu2 deb
libpam-modules 1.5.3-5ubuntu5.5 deb
libpam-modules-bin 1.5.3-5ubuntu5.5 deb
libpam-runtime 1.5.3-5ubuntu5.5 deb
libpam0g 1.5.3-5ubuntu5.5 deb
libpciaccess0 0.17-3ubuntu0.24.04.2 deb
libpcre2-8-0 10.42-4ubuntu2.1 deb
libproc2-0 2:4.0.4-4ubuntu3.2 deb
libpsl5t64 0.21.2-1.1build1 deb
libreadline8t64 8.2-4build1 deb
@ -112,22 +112,22 @@ libsasl2-2 2.1.28+dfsg1-5ubuntu3.1 deb
libsasl2-modules 2.1.28+dfsg1-5ubuntu3.1 deb
libsasl2-modules-db 2.1.28+dfsg1-5ubuntu3.1 deb
libseccomp2 2.5.5-1ubuntu3.1 deb
libselinux1 3.5-2ubuntu2 deb
libselinux1 3.5-2ubuntu2.1 deb
libsemanage-common 3.5-1build5 deb
libsemanage2 3.5-1build5 deb
libsepol2 3.5-2build1 deb
libsmartcols1 2.39.3-9ubuntu6.1 deb
libsqlite3-0 3.45.1-1ubuntu2 deb
libsmartcols1 2.39.3-9ubuntu6.4 deb
libsqlite3-0 3.45.1-1ubuntu2.5 deb
libss2 1.47.0-2.4~exp1ubuntu4.1 deb
libssh-4 0.10.6-2build2 deb
libssl3t64 3.0.13-0ubuntu3.4 deb
libssh-4 0.10.6-2ubuntu0.2 deb
libssl3t64 3.0.13-0ubuntu3.7 deb
libstdc++6 14.2.0-4ubuntu2~24.04 deb
libsystemd0 255.4-1ubuntu8.4 deb
libtasn1-6 4.19.0-3build1 deb
libsystemd0 255.4-1ubuntu8.12 deb
libtasn1-6 4.19.0-3ubuntu0.24.04.2 deb
libtinfo6 6.4+20240113-1ubuntu2 deb
libudev1 255.4-1ubuntu8.4 deb
libunistring5 1.1-2build1 deb
libuuid1 2.39.3-9ubuntu6.1 deb
libudev1 255.4-1ubuntu8.12 deb
libunistring5 1.1-2build1.1 deb
libuuid1 2.39.3-9ubuntu6.4 deb
libv4l-0t64 1.26.1-4build3 deb
libv4lconvert0t64 1.26.1-4build3 deb
libwayland-client0 1.22.0-2.1build1 deb
@ -147,22 +147,22 @@ libxcb1 1.15-1ubuntu2 deb
libxdmcp6 1:1.1.3-0ubuntu6 deb
libxext6 2:1.3.4-1build2 deb
libxfixes3 1:6.0.0-2build1 deb
libxml2 2.9.14+dfsg-1.3ubuntu3 deb
libxml2 2.9.14+dfsg-1.3ubuntu3.7 deb
libxshmfence1 1.3-1build5 deb
libxxhash0 0.8.2-2build1 deb
libzstd1 1.5.5+dfsg2-2build1.1 deb
locales 2.39-0ubuntu8.3 deb
locales 2.39-0ubuntu8.7 deb
login 1:4.13+dfsg1-4ubuntu3.2 deb
logsave 1.47.0-2.4~exp1ubuntu4.1 deb
mawk 1.3.4.20240123-1build1 deb
mount 2.39.3-9ubuntu6.1 deb
mount 2.39.3-9ubuntu6.4 deb
ncurses-base 6.4+20240113-1ubuntu2 deb
ncurses-bin 6.4+20240113-1ubuntu2 deb
netcat-openbsd 1.226-1ubuntu2 deb
ocl-icd-libopencl1 2.3.2-1build1 deb
openssl 3.0.13-0ubuntu3.4 deb
openssl 3.0.13-0ubuntu3.7 deb
passwd 1:4.13+dfsg1-4ubuntu3.2 deb
perl-base 5.38.2-3.2build2 deb
perl-base 5.38.2-3.2ubuntu0.2 deb
pinentry-curses 1.2.1-3ubuntu5 deb
procps 2:4.0.4-4ubuntu3.2 deb
publicsuffix 20231001.0357-0.1 deb
@ -170,11 +170,12 @@ readline-common 8.2-4build1 deb
sed 4.9-2build1 deb
sensible-utils 0.0.22 deb
shared-mime-info 2.4-4 deb
systemd-standalone-sysusers 255.4-1ubuntu8.4 deb
systemd-standalone-sysusers 255.4-1ubuntu8.12 deb
sysvinit-utils 3.08-6ubuntu3 deb
tar 1.35+dfsg-3build1 deb
tzdata 2024a-3ubuntu1.1 deb
tzdata 2025b-0ubuntu0.24.04.1 deb
ubuntu-keyring 2023.11.28.1 deb
util-linux 2.39.3-9ubuntu6.1 deb
unminimize 0.2.1 deb
util-linux 2.39.3-9ubuntu6.4 deb
xdg-user-dirs 0.18-1build1 deb
zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb

View File

@ -2,6 +2,9 @@
# project information
project_name: ffmpeg
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/ffmpeg.png"
project_blurb: A complete, cross-platform solution to record, convert and stream audio and video.
project_categories: "Media Tools"
full_custom_readme: |
{% raw -%}
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
@ -41,11 +44,11 @@ full_custom_readme: |
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/ffmpeg.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/ffmpeg)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/ffmpeg.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/ffmpeg)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-ffmpeg%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/master/)
[FFmpeg](https://ffmpeg.org) - A complete, cross-platform solution to record, convert and stream audio and video.
[![ffmpeg](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/ffmpeg.png)](https://ffmpeg.org)
## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
@ -59,9 +62,9 @@ full_custom_readme: |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Usage
Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.
If an input file is detected we will run FFmpeg as that user/group so the output file will match its permissions.
@ -93,7 +96,7 @@ full_custom_readme: |
```
### Hardware accelerated (VAAPI) ([click for more info](https://trac.ffmpeg.org/wiki/Hardware/VAAPI))
```bash
docker run --rm -it \
--device=/dev/dri:/dev/dri \
@ -109,7 +112,7 @@ full_custom_readme: |
```
### Hardware accelerated (QSV) ([click for more info](https://trac.ffmpeg.org/wiki/Hardware/QuickSync))
```bash
docker run --rm -it \
--device=/dev/dri:/dev/dri \
@ -187,6 +190,15 @@ full_custom_readme: |
## Versions
* **06.01.26:** - Remove mpp from aarch64 build due to upstream DMCA removal. Bump harfbuzz, libdav1d, libdrm, libpng, libva, libvpl, mesa, opus, shaderc and vulkan-sdk.
* **01.12.25:** - Bump ffmpeg to 8.0.1.
* **19.11.25:** - Bump aom, freetype, harfbuzz, Intel drivers and libs, kvazaar, libdav1d, libdrm, mesa, mpp, openjpeg, shaderc, svt-av1 and vulkan-sdk.
* **23.08.25:** - Bump ffmpeg to 8.0. Bump harfbuzz, Intel drivers and libs, libdovi, libdrm, libpng, mesa, ogg, rav1e, shaderc, svt-av1, vulkan-sdk, webp and zimg.
* **06.08.25:** - Bump svt-av1.
* **07.06.25:** - Bump harfbuzz, libass, libdovi, libplacebo, libpng, mesa, rav1e, shaderc, libvpx and vulkan-sdk.
* **04.06.25:** - Add libdrm and rkmpp to arm64 image.
* **21.04.25:** - Bump aom, Intel drivers and libs, harfbuzz, mesa, svt-av1, libvpx, libtheora, vulkan-sdk and vvenc.
* **07.03.25:** - Bump ffmpeg to 7.1.1, Bump aom, fontconfig, Intel drivers and libs, harfbuzz, libdav1d, libdovi, libdrm, liblc3, libpng, mesa, openjpeg, shaderc, svt-av1, vulkan-sdk, vvenc and webp.
* **26.11.24:** - Bump libaom, mesa, rist, srt and libx265.
* **07.11.24:** - Bump harfbuzz, Intel drivers and libs, libdav1d, mesa, svtav1, vpx, vulkan sdk and vvenc.
* **05.10.24:** - Add support for libvvenc on aarch64. Bump mesa.