The Android Motion Photos in my library only display as photos.
The bug
The newest Android app doesn't recognize motion photos anymore. I've tried uploading from google takeout, and importing from external library, All attempts do not recognize that they are motion photos.
I'm using a Pixel 7 Pro, and have some motion photos in my library. In the Google photos app, they show as motion photos, but in Immich app they appear as just normal photos. Same when I upload them to the server.
Sample motion photos takeout-motion-test.zip
The OS that Immich Server is running on
Unraid
Version of Immich Server
v1.106.4
Version of Immich Mobile App
1.106.3
Platform with the issue
- [X] Server
- [X] Web
- [X] Mobile
Your docker-compose.yml content
#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${EXTERNAL_LIB}:/usr/src/app/external:ro
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
restart: always
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:d6c2911ac51b289db208767581a5d154544f2b2fe4914ea5056443f62dc6e900
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m
# start_interval: 30s
start_period: 5m
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
restart: always
volumes:
model-cache:
Your .env content
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=xxxxxxx
# The location where your database files are stored
DB_DATA_LOCATION=xxxxxxx
EXTERNAL_LIB=xxxxxxx
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=xxxxxxx
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
Reproduction steps
1. Have a google phone with motion pictures
2. Open Immich app, and view one photo
Relevant log output
No response
Additional information
No response
Hi,
I encountered the same problem. I want to clarify that this issue is not related to the previous issues involving Google Takeout, and it seems to be a separate bug.
The Issue
I have a Google Pixel 6 Pro, and when I take a new photo with Motion Photo enabled, the Immich app does not recognize it as a Motion Photo. This issue occurs directly in the app, without any involvement of Google Takeout or uploading to the Immich server. The photo is displayed as a regular photo in the app itself.
When I then upload the photo to the Immich server, it also appears as a simple photo in the web version, not as a Motion Photo.
(Interestingly, I also tried using the iOS app, and Live Photos are recognized correctly and function as expected in the Immich app.)
Device and App Information
- Device: Google Pixel 6 Pro
- Immich Mobile App Version: 1.106.3 build.143
- Server Verion: 1.106.4
Steps to Reproduce
- Take a photo with Motion Photo enabled on a Google Pixel 6 Pro.
- Open the Immich app and view the photo. It will not be recognized as a Motion Photo.
- Upload the photo to the Immich server. The photo still appears as a regular photo in the web version.
It seems that the app itself does not properly handle Motion Photos taken directly on the device, which might be a different root cause compared to the Google Takeout issue and therefore also seems not related to immich-go.
Thank you for investigating this issue.
+1
In my case, I am using an external library. I upload my photos using Nextcloud. Nextcloud memories can perfectly detect and play motion photos, but not immich.
What is even more strange is that immich is detecting motion photos in some old photos (also uploaded through nextcloud) I had taken from a Motorola device using ported gcam. Immich can display and play those photos. But it can't play motion photos I have taken with my Pixel device.
Same issue here. Hope It can be fixed without reuploading the last assets.
Same here. Photos from a couple of months ago from same device play fine. Both directly uploaded from device to immich app. Only difference since than I can think of is that the upload now happens trough reverse proxy and I delayed the upload with 2 minutes in app settings. And Immich updates ofc
Also experiencing this on a Pixel 8 Pro. Images uploaded do not show the motion playback on the web or phone applications.
Thankfully, it looks like the motion data is still being uploaded, it's just playing it back that is the issue.
A motion photo taken on my Pixel 7 will not display as a motion photo on Immich in the Android app, web app, or iPadOS app, regardless of where I upload it from (or in the case of the Android app, even if it hasn't been uploaded).
Uploading the photo to Immich, deleting it locally, and redownloading it proved that the motion data is all there, as I can play it back in Google Photos just fine even after this.
Motion photos taken on my iPad work as expected across platforms. Given the other reports here, this might be specific to Pixel motion photos.
The problem is exiftool-vendored not returning the Directory file tag as structured object. There have been some changes regarding that in https://github.com/photostructure/exiftool-vendored.js/releases/tag/v27.0.0.
I'm looking into it.
It is actually more of the directory tag exists in the xmp group and the file group and with exiftool 12.85 the file group has been prioritized higher than the xmp group. So directory now shows the folder path for the file.
Ah thank you.
In exiftool 12.87 the information we want is available as ContainerDirectory, so we need exiftool-vendored to update. I created a PR: https://github.com/photostructure/exiftool-vendored.js/pull/189
This should be fixed in 1.109. Can anyone suggest how to quickly fix old photos?
This should be fixed in 1.109. Can anyone suggest how to quickly fix old photos?
I guess you need to scan everything again. Not ideal. But I scanned a few photos and in my case, they are still glitchy. The motion photos only show one or two frames.
@mccarverone you can run metadata extraction job for those affected assets
That did the trick, I chose "extract metadata" directly from the gallery. Cheers
PS: I can confirm motion photos playback is broken from app but this is another story
I've run the job 'extract metadata' twice now, and also via context menu in individual photo 'refresh' metadata. Compared to before update it now shows the motion photo icon but when I press play it just says 'No video with supported format and mime type found' in browser and I see the first and last frame on android app.
That's a separate issue, which is related to you encoding settings and being incompatible with the client/device that's playing it.
This is only the case with the motion photo's in the timeframe of this bug, not with newer ones and not with older ones
@jrasm91 the problem still persists. As per the previous comment from @Cpainy , I uploaded a new motion photo. It gets inverted in immich. It plays fine on nextcloud memories.
This is on immich:
https://github.com/user-attachments/assets/7c6ad810-1d84-4361-9463-f9a4856da7b8
This is on nextcloud memories:
https://github.com/user-attachments/assets/1816bbb6-592e-4f33-bd50-d9befa758015
Here is the photo in question (location metadata removed): PXL_20240721_120013586 MP
Edit:
Immich server: 1.109.2
App: 1.109.0 build.149
Will this issue be reopened or should I create a new issue?