Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Android Motion Photos in my library only display as photos. #10374

Closed
3 tasks done
viktordd opened this issue Jun 16, 2024 · 18 comments
Closed
3 tasks done

The Android Motion Photos in my library only display as photos. #10374

viktordd opened this issue Jun 16, 2024 · 18 comments

Comments

@viktordd
Copy link

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

  • Server
  • Web
  • 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

@sfunck
Copy link

sfunck commented Jun 16, 2024

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

  1. Take a photo with Motion Photo enabled on a Google Pixel 6 Pro.
  2. Open the Immich app and view the photo. It will not be recognized as a Motion Photo.
  3. 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.

@SayantanRC
Copy link

+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.

@mccarverone
Copy link

Same issue here. Hope It can be fixed without reuploading the last assets.

@Cpainy
Copy link

Cpainy commented Jun 30, 2024

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

@uninvitedguest
Copy link

Also experiencing this on a Pixel 8 Pro. Images uploaded do not show the motion playback on the web or phone applications.

@fadialzammar
Copy link

fadialzammar commented Jul 3, 2024

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.

@lukashass
Copy link
Contributor

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.

@jrasm91
Copy link
Contributor

jrasm91 commented Jul 11, 2024

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.

@lukashass
Copy link
Contributor

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: photostructure/exiftool-vendored.js#189

@mccarverone
Copy link

This should be fixed in 1.109. Can anyone suggest how to quickly fix old photos?

@SayantanRC
Copy link

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.

@alextran1502
Copy link
Contributor

@mccarverone you can run metadata extraction job for those affected assets

@mccarverone
Copy link

mccarverone commented Jul 20, 2024

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

@jrasm91 jrasm91 closed this as completed Jul 20, 2024
@Cpainy
Copy link

Cpainy commented Jul 21, 2024

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.

@jrasm91
Copy link
Contributor

jrasm91 commented Jul 21, 2024

That's a separate issue, which is related to you encoding settings and being incompatible with the client/device that's playing it.

@Cpainy
Copy link

Cpainy commented Jul 21, 2024

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

@SayantanRC
Copy link

SayantanRC commented Jul 22, 2024

@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:

immich.mp4

This is on nextcloud memories:

memories.mp4

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

@SayantanRC
Copy link

Will this issue be reopened or should I create a new issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants