Vp09 transcoding
Hi all,
Been using Immich for > 1 year with success. I noticed a while ago, though, that I couldn’t play older videos. I assumed it was as I was on 4G, but I’ve since come to the conclusion they were google takeout videos.
As such, they’re encoded in VP09, and I can’t play them on my iPhone. If I press download it also says -300% and download missing.
My transcode policy is for anything not in H264. I ran all missing transcodes and it ran > 100, I also manually triggered a few transcodes as a test.
I still can’t play them on my phone, however. Has anyone else experienced this?
(I’m on the latest version.)
63 Replies
:wave: Hey @clr1107,
Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:.
References
- Container Logs:
docker compose logs
docs
- Container Status: docker ps -a
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
- Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA
Checklist
I have...
1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time).
2. :ballot_box_with_check: read applicable release notes.
3. :ballot_box_with_check: reviewed the FAQs for known issues.
4. :ballot_box_with_check: reviewed Github for known issues.
5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy).
6. :ballot_box_with_check: uploaded the relevant information (see below).
7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable
(an item can be marked as "complete" by reacting with the appropriate number)
Information
In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider:
- Your docker-compose.yml and .env files.
- Logs from all the containers and their status (see above).
- All the troubleshooting steps you've tried so far.
- Any recent changes you've made to Immich or your system.
- Details about your system (both software/OS and hardware).
- Details about your storage (filesystems, type of disks, output of commands like fdisk -l
and df -h
).
- The version of the Immich server, mobile app, and other relevant pieces.
- Any other information that you think might be relevant.
Please paste files and logs with proper code formatting, and especially avoid blurry screenshots.
Without the right information we can't work out what the problem is. Help us help you ;)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.
Successfully submitted, a tag has been added to inform contributors. :white_check_mark:Hi @clr1107 that's correct, with the current implementation 'missing' only applies on videos that do not have any transcode.
What might be possible is that your videos do have a transcode because a certain audio codec was not allowed.
Can you give examples of videos you tried to re-transcode and the resulting codecs?
Sure, I’m at work rn but I think I tried it, and they were H264 when downloaded from the web. On my phone, however, still nothing.
Is it possible that either (a) my phone is caching smth or (b) that Immich somehow has 2 transcodes and is serving the stale one?
I’ll verify later and reply with the results 🙂 in theory, should the refresh of the transcode fix the issue?
Okay, I manually triggered a transcode for an asset. It successfully transcodes, and if I run
ffprobe
on the resultant file, it's h264.
But, in the app, it still won't play.
And the original asset is vp9 in ffprobeThis is the error if I try and download the video on my phone

Download?
In the top right, the cloud icon
These are only on the server
Yes I understand, just trying to compare
Are you on the beta timeline?
I'm assuming no
No, I did turn it on, had some separate issues, and turned it off
But I've had this video issue for almost a year
Just assumed it was either 4G playing up, a dodgy transcode, and never really bothered to look into it
Are you using a proxy of some kind?
Yea
NPM
Just NPM, nothing else?
Nope, just NPM
Immich on docker -> NPM -> tailscale
Did you add something like
?
client_max_body_size 50000M;
Anyone have any ideas as to what could be going wrong? @Mraedis
Just did a test: recorded a video, uploaded it, and I can see in the logs it got transcoded. If I then delete it from my device I also can't play it, so maybe not vp9 related at all
mm
Do you have prefer local assets set to true?
Where is that option? I see 'prefer remote images' and that's false
Or Force Original video in the mobile app? Does it not work connected to localhost?
Just tried force original and same tihng. Black screen, nothing plays, and the 'Downlaod not found' error with -300%
That's what I meant 😛
Ah haha
so it seems this is an all remote videos issue, transcoding or not
Localhost connection?
I'm going through a VPN, I'm not where it's hosted
Do you mean without the proxy?
I mean in general we try to directly connect to the server (local network) to rule out that it's anything networking related
Alright let me see if I can get that working, got a few firewalls going haha
okay seems to work fine if I go via http to the ip itself
sorry had to get auth working too haha
so looks like it's the proxy somehow?
Looking in the proxy logs, if I open an image, I get:
- "/api/auth/validateToken"
- "/api/assets/685dad71-49bd-4d4d-8e02-83293c45f6dd/thumbnail?size=preview"
If I open a video, I get:
- "/api/auth/validateToken"
and nothing else
That I can't say, I'm no proxy wizard 🤣
It's very odd... Almost as if the app isn't even sending a request to the proxy for the video.
I've seen a lot of people online saying they've had issues with iOS video playback. To do with codecs and even SSL. I've just tried HEVC and H264. I'm using a letsencrypt cert via NPM.
For context, this is all that's in my nginx proxy manager advanced:
Could you send screenshots of your NPM config?




The /share is for immich public proxy
You're also going through cloudflare?
No, VPN
There is a cloudflare tunnel just for /share for immihc-public-proxy
So I can share stuff publicly, so just the /share endpoints
I see
You mentioned the same video plays in the browser, right?
Yup
Also in your phone's browser?
Let me try, usually i can't even open immich on the phone browser
Yea I just get this

usually i can't even open immich on the phone browserWell that would be an indicator lol
Ngl, I've run Immich for so long, I just assumed it wasn't meant to work on the phone browser lmao, it never has
LOL
Can you download that document and share it?
Interested to see what it is
upload failed, file cannot be empty
so it's just nothing sent back by the proxy
and the request doesn't show up on the access logs for nginx
Do you have a local DNS server set up?
Does that domain resolve to NPM and not to cloudflare?
Yea, I'm using Tailscale, and it points to a local DNS. So assuming my phone isn't doing something hella weird, it should also only get the privat one. Tbh, if it wasn't, the rest of the app wouldn't work since nothing else is hosted publicly, just the /share endpoint

Tbh, if it wasn't, the rest of the app wouldn't work since nothing else is hosted publicly, just the /share endpointThat's kind of what I'm assuming lol It's sus that the browser doesn't work
does the video in the app use the browser someho?
Either way you're right that it's very odd, somehow those requests aren't even registering in the nginx access logs
My guess is that it just has all the images cached/they're local images on your phone and it doesn't actually need to fetch anything from the server
The video it needs to get from the server and that fails
Oh definitely, that's why I hadn't noticed
I have had the same phone for a while, so it's always old stuff. That's why I assumed it was a google takeout vp9 thing
Tbh that is kind of hard for me to debug remotely... But I'd definitely fix your browser first as that seems like the easiest reproducible issue to me right now
Yeah that sounds correct
Alright ty, you're right this is probably going to take me to the root issue
Do you htink perhaps it's how authentik and nginx proxy manager are interacting on the phone?
If you aren't using proxy auth but have authentik configured in Immich, no
You should definitely see some Immich page at least
My bet is that it simply does not resolve to the tailscale IP
Perhaps, but then what's responding with the 0 bytes?
Because something must be terminating that HTTP connection, right?
Cloudflare?
Good point, perhaps
stupid ios what the hell is it doing haha
Android does make debugging such things easier tbf, yes 😅
But yeah I can't really help more here since I'm kind of flying blind at this point
No you've been a good help, got me at least to realise that it's not meant to blank out on mobile web
Thanks!
:KEKW:
okay i'm getting somewhere
it works on safar
safari*
lmfao if chrome is somehow overwriting my DNS I'm going to be so pissed
To my knowledge iOS has a "access local network" kind of per-app setting
I don't use iOS so idk how exactly it's called but it's a thing
Could be that chrome and Immich don't have permissions, but safari has by default
you're right but it is on
Hm k then you gotta keep digging 😅
:prayge:
okay... it was my weird split /share thing going on with cloudflare tunnels. It appears, sometimes the DNS would resolve to Cloudflare and sometimes to the local one. How the app always resolved correctly and Chrome didn't? No fucking clue.
Looks like Chrome was doing more of a round robbin on DNS, whichever responds first, wins. My shitty VPS vs 1.1.1.1? Well we know who wins there
Yeah I guess that's fair lol
This thread has been closed. To re-open, use the button below.