immich-app / immich

High performance self-hosted photo and video management solution.
https://immich.app
GNU Affero General Public License v3.0
38.3k stars 1.82k forks source link

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

Open viktordd opened 2 weeks ago

viktordd commented 2 weeks ago

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

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 commented 2 weeks ago

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

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 commented 1 week ago

+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 commented 3 days ago

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

Cpainy commented 17 hours ago

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