Skip to content

Commit 0522d11

Browse files
authored
v1.5.1 — fix HEVC VideoToolbox hvc1 tag (#48) (#49)
1 parent 8a1e7d8 commit 0522d11

4 files changed

Lines changed: 33 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 1.5.1 — 2026-05-25
4+
5+
### Fixes
6+
- **HEVC VideoToolbox output now always uses Apple-compatible hvc1 tag (#48)**. ffmpeg defaults to hev1 for HEVC, which Apple's decoder rejects. The wrapper now injects `-tag:v hvc1` when encoding HEVC via VideoToolbox if the caller doesn't specify it.
7+
38
## 1.5.0 — 2026-05-19
49

510
### Features

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,18 @@ Real-time monitoring at `http://your-mac:8420`:
9595
immich-accelerator dashboard
9696
```
9797

98-
Shows service health, processing progress with live rates and ETAs, Apple Silicon hardware utilization, and system metrics. Mobile-friendly — check from your phone.
98+
Shows service health, processing progress with live rates and ETAs, Apple Silicon hardware utilization, and system metrics. Mobile-friendly -- check from your phone.
99+
100+
The dashboard and setup use the Immich API for job status and queue control. Create an API key from an **admin** account in Administration > API Keys with these permissions:
101+
102+
| Permission | Used by | Why |
103+
|-----------|---------|-----|
104+
| `job.read` | Dashboard | Show queue activity (active/waiting counts) |
105+
| `job.create` | Dashboard | Re-queue button |
106+
| `asset.read` | Setup | Detect upload library path |
107+
| `library.read` | Setup | Detect external library paths |
108+
109+
All `job.*` and `library.*` endpoints require admin access. If the dashboard shows "API key invalid," make sure the key was created by an admin user.
99110

100111
![Dashboard](docs/dashboard.png)
101112

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.5.0
1+
1.5.1

immich_accelerator/ffmpeg-wrapper.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ REAL_FFMPEG="/opt/homebrew/bin/ffmpeg"
1111

1212
ARGS=("$@")
1313
USE_HW=false
14+
USE_HEVC=false
15+
HAS_HEVC_TAG=false
1416
NEW_ARGS=()
1517

1618
for ((i=0; i<${#ARGS[@]}; i++)); do
@@ -30,6 +32,7 @@ for ((i=0; i<${#ARGS[@]}; i++)); do
3032
NEW_ARGS+=("$arg" "hevc_videotoolbox")
3133
((i++))
3234
USE_HW=true
35+
USE_HEVC=true
3336
continue
3437
;;
3538
esac
@@ -41,10 +44,22 @@ for ((i=0; i<${#ARGS[@]}; i++)); do
4144
continue
4245
fi
4346

47+
# Track if -tag:v is already specified (including stream-specific -tag:v:0 etc.)
48+
[[ "$arg" == -tag:v* ]] && HAS_HEVC_TAG=true
49+
4450
NEW_ARGS+=("$arg")
4551
done
4652

4753
if [[ "$USE_HW" == true ]]; then
54+
# Ensure HEVC output uses hvc1 tag (Apple-compatible).
55+
# hev1 (ffmpeg default) stores parameter sets in-band — Apple's
56+
# decoder rejects it. Immich usually passes -tag:v hvc1 itself,
57+
# but if it's absent we inject it before the output filename.
58+
if [[ "$USE_HEVC" == true && "$HAS_HEVC_TAG" == false ]]; then
59+
len=${#NEW_ARGS[@]}
60+
LAST="${NEW_ARGS[$((len-1))]}"
61+
NEW_ARGS=("${NEW_ARGS[@]:0:$((len-1))}" "-tag:v" "hvc1" "$LAST")
62+
fi
4863
exec "$REAL_FFMPEG" -hwaccel videotoolbox "${NEW_ARGS[@]}"
4964
else
5065
exec "$REAL_FFMPEG" "${NEW_ARGS[@]}"

0 commit comments

Comments
 (0)