No audio support for HEIC format?
Hi,
I have imported HEIC files from iOS into Immich. With web app, selecting on of them display a static image at first (OK). When clicking on the "Play Motion Photo" button, video stream is played - but there is no audio with it.
- Immich 1.139.3
- Vanilla transcoding settings
- Browsers: Firefox ESR / Chromium
- OS: Debian 12/13
-
libavcodec61
and heif-gdk-pixbuf
installed, also ffmpeg
- Other played video files like .mov
or mp4
in Immich web app have no audio issues on said system
- In contrast mobile (iOS, Android app and web version) works.
- macOS desktop audio does work in Safari, but not work in Firefox
This is a HEIC multimedia codec issue especially for desktop systems, it seems?
My question is: What multimedia codecs am I missing or what do I need to do in order to also have audio played with HEIC files (Debian/Firefox)?
Thanks very much for any clues.12 Replies
:wave: Hey @metzi00,
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. :blue_square: 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.More details:
-
podman compose logs -f
doesn't show anything (related), while playing video file.
- container status is fine per podman ps -a
.
- External library is used
- Immich upload from iOS currently is not utilized yet
- W/o reverse proxy usage does not change anything.
- docker-compose.yml
: https://github.com/immich-app/immich/releases/download/v1.139.3/docker-compose.ymlThere is no such thing as "HEIC" audio, it is a container format and has both an audio and a video codec.
If your audio codec is set to not transcode and your browser/computer does not support it, you won't hear anything. 🙂
So start off with your transcode settings, specifically audio @metzi00
https://my.immich.app/admin/system-settings?isOpen=video-transcoding+transcoding-policy
Makes sense 🙂 sorry, being not too deep into mac ecosystem incl. HEIC.
Attached are transcoding settings.
Not sure about audio codec "PCM (16 bit").


Not re-transcoding PCM might be the culprit here for a Debian system.
ffprobe
shows pcm_s16le
as audio stream format for the .heic
's corresponding .mov
file.
And PCM (as well as HEVC) apparentely does not have built-in support with Debian. The motion video is still shown in the web app, as Immich transcodes HEVC per default.
So I guess the solution is either to
- try GStreamer plugins for PCM audio support (client side)
- re-transcode PCM, unchecking that option (server side)
By chance: Is there an Immich UI option or job to re-trigger transcoding of a single file, to test things out?
"Refresh metadata" in "..." of selected image did not work for me.Videos, except for the live photos ones, have a "Refresh encoded video" option at th bottom @metzi00
pcm is a pretty widely accepted standard though, so I would try to see if there's a codec for that first 🤔
https://packages.debian.org/trixie/librust-symphonia-codec-pcm-dev
apparently firefox only supports pcm in webrtc, not in a video container like mp4 or mov
damn it firefox
Thanks for the info about "Refresh encoded video"!
Puhh, I've 80gb of
(direct opening of
encoded_video
atm. Is there an Immich CLI tool, that can be limited by file extension .mov
or similar? Otherwise I probably need to bite the bullet.
With "pcm is a pretty widely accepted standard" I don't disagree, but it seems it is not widely supported as raw audio stream by Debian/Firefox (also what serveral AI tools tell). On test machine Fedora didn't play audio either. There might be a limitation of Firefox on top, which doesn't make use of all OS codecs - e.g. on macOS same issue appears for this browser, whereas Safari is happy to play everything. But Chromium also had its issues, this doesn't make understanding easier 😁
A quick test with
showed, it's PCM audio limitation for sure. aac_file.mov
can be be played in Firefox with Immich web app(direct opening of
.mov
still doesn't work, as OS doesn't support video codec hevc
)
With HEIC being a popular Apple format and Linux being supported and on rise, does it make sense to disable "PCM (16 bit)" option as default, so it gets re-coded?there’s no cli tool for that. it is possible to make the db “forget” about those mov transcodes with a sql command though if you’re willing to fiddle with that.
Hm ... hard decision 😛
I don't feel comfortable enough to interfere with Immich's fast pace development. I guess, just re-transcoding everything then
up to you!
the assumption with allowing pcm by default was that it was supported across browsers. maybe it’s better to uncheck it by default
Jep, I also think this would be a good idea