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

[BUG] Live photos imported with the Library feature display as individual photos and videos #4209

Closed
1 of 3 tasks
APIUM opened this issue Sep 25, 2023 · 6 comments · Fixed by #4253
Closed
1 of 3 tasks
Labels
bug Something isn't working 🗄️server

Comments

@APIUM
Copy link

APIUM commented Sep 25, 2023

The bug

When imported with the new Libraries feature Live photos do not display correctly. They display as an individual photo and video, where the expected behavior is that they are combined. I've started using Immich due to the library feature, so I don't have a large backlog of other imported images, but I think from the documentation that my view of the expected behavior is correct.

The images also don't show up with the Live Photo filter that is present in the app under either:
(x) Library > Live Photos
(x) Search > Motion Photos

Live photos are stored in my library as direct uploads to my NAS from Photosync. These are stored for example as:
IMG_1313.HEIC
IMG_1313.MOV
In a flat folder structure next to the other images from that month. This is read correctly by PhotoPrism for reference.

The OS that Immich Server is running on

Host: Fedora 38, But using default docker-compose

Version of Immich Server

v1.79.1

Version of Immich Mobile App

v1.79.0 build.119

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "immich" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /mnt/photos:/mnt/photos:ro
    depends_on:
      - redis
      - database
      - typesense
    env_file:
      - stack.env
    networks:
      - immich_default
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "microservices" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /mnt/photos:/mnt/photos:ro
    env_file:
      - stack.env
    networks:
     - immich_default
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - model-cache:/cache
    networks:
     - immich_default
    env_file:
      - stack.env
    restart: always

  immich-web:
    container_name: immich_web
    image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
    env_file:
      - stack.env
    networks:
      - immich_default
    restart: always

  typesense:
    container_name: immich_typesense
    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
    networks:
     - immich_default
    logging:
      driver: none
    volumes:
      - tsdata:/data
    restart: always

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
    networks:
     - immich_default
    restart: always

  database:
    container_name: immich_postgres
    image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
    networks:
      - immich_default
    env_file:
      - stack.env
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

  immich-proxy:
    container_name: immich_proxy
    image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release}
    environment:
      # Make sure these values get passed through from the env file
      - IMMICH_SERVER_URL
      - IMMICH_WEB_URL
    ports:
      - 2283:8080
    depends_on:
      - immich-server
      - immich-web
    networks:
      - traefik_net
      - immich_default
    restart: always
    labels:
      - "traefik.enable=true"
      ## HTTP Routers
      - "traefik.http.routers.immich-rtr.entrypoints=https"
      - "traefik.http.routers.immich-rtr.rule=Host(`REDACTED`)"
      - "traefik.http.routers.immich-rtr.tls=true"
      ## Middlewares
      - "traefik.http.routers.immich-rtr.middlewares=chain-no-auth@file" # No Authentication
      - "traefik.http.routers.immich-rtr.middlewares=middlewares-basic-auth@file" # Basic Authentication
      - "traefik.http.routers.immich-rtr.middlewares=chain-oauth@file" # Google OAuth 2.0
      - "traefik.http.routers.immich-rtr.middlewares=ip-whitelist-internal@file" # Only allow internal access
      ## HTTP Services
      - "traefik.http.routers.immich-rtr.service=immich-svc"
      - "traefik.http.services.immich-svc.loadbalancer.server.port=8080"
      
volumes:
  pgdata:
  model-cache:
  tsdata:
  
networks:  
  immich_default:
  traefik_net:
    external: true

Your .env content

DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=REDACTED
DB_DATABASE_NAME=immich
REDIS_HOSTNAME=immich_redis
UPLOAD_LOCATION=/mnt/storage/immich_uploads
TYPESENSE_API_KEY=REDACTED
PUBLIC_LOGIN_PAGE_MESSAGE=
IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003

Reproduction steps

Given I am using immich v1.79.1
When using the Libraries feature to import Live Photos
Then the live photos display in Photos as an individual short video and photo

Additional information

No response

@APIUM APIUM added bug Something isn't working needs triage Bug that needs triage from maintainer labels Sep 25, 2023
@jrasm91
Copy link
Contributor

jrasm91 commented Sep 25, 2023

Thank you for reporting this. This is a regression and should be fixed soon.

@jrasm91 jrasm91 added 🗄️server and removed needs triage Bug that needs triage from maintainer labels Sep 25, 2023
@APIUM
Copy link
Author

APIUM commented Oct 4, 2023

On v1.18.0 removed the library and re-added and it appears to be working well now. Thanks again for the fix @jrasm91

@Nuuki9
Copy link

Nuuki9 commented Oct 4, 2023

Since the update to 1.80 I am now seeing some Live Photos showing up, though relatively few.

I picked a random example to investigate. If I check the database, I see that livePhotoVideoId is null, so its definitely not linked - ruling out a front end UI refresh type issue.

If I upload the same assets to the demo site, it links fine.

I did re-run the Library job, but am I missing something else I need to do to force previous uploads to re-evaluate?

@jrasm91
Copy link
Contributor

jrasm91 commented Oct 4, 2023

Since the update to 1.80 I am now seeing some Live Photos showing up, though relatively few.

I picked a random example to investigate. If I check the database, I see that livePhotoVideoId is null, so its definitely not linked - ruling out a front end UI refresh type issue.

If I upload the same assets to the demo site, it links fine.

I did re-run the Library job, but am I missing something else I need to do to force previous uploads to re-evaluate?

asset.livePhotoVideoId means the assets are linked, so this will obviously be empty for assets that are still showing up as individuals.

exif.livePhotoCID is populated during metadata extraction and is what actually we use to find and link two assets. This wasn't being properly originally. Re-running metadata extraction is necessary to fix that situation. This is also likely the issue, especially since it works in the demo environment.

@Nuuki9
Copy link

Nuuki9 commented Oct 4, 2023

Since the update to 1.80 I am now seeing some Live Photos showing up, though relatively few.
I picked a random example to investigate. If I check the database, I see that livePhotoVideoId is null, so its definitely not linked - ruling out a front end UI refresh type issue.
If I upload the same assets to the demo site, it links fine.
I did re-run the Library job, but am I missing something else I need to do to force previous uploads to re-evaluate?

asset.livePhotoVideoId means the assets are linked, so this will obviously be empty for assets that are still showing up as individuals.

Sorry for the confusion - yes, I was confirming that indeed the assets definitely aren't linked, rather than it being a front end cache or some other reason.

exif.livePhotoCID is populated during metadata extraction and is what actually we use to find and link two assets. This wasn't being properly originally. Re-running metadata extraction is necessary to fix that situation. This is also likely the issue, especially since it works in the demo environment.

Great - I'll re-run the metadata extraction now and report back.

@Nuuki9
Copy link

Nuuki9 commented Oct 4, 2023

Worked great - many thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working 🗄️server
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants