Skip to content

[full-ci] feat: support Apple Live Photos - #3548

Open
dschmidt wants to merge 7 commits into
mainfrom
feat/live-photo-support
Open

dschmidt wants to merge 7 commits into
mainfrom
feat/live-photo-support

Conversation

@dschmidt

@dschmidt dschmidt commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Description

Plays Apple Live Photos like Motion Photos. A Live Photo is two files, a still and a .mov, that share a livePhoto.contentId. The still now gets the same badge and playback in the files list, the sidebar and the preview app.

  • web-client: oc:live-photo is requested by default and exposed as Resource.livePhoto.
  • web-pkg: the paired video is looked up when playback starts, first among the listed resources, then through a search for the content id.
  • Labels: the new kind is called "Live Photo". The existing labels now read "Motion Photo" and say "video" instead of "clip", so those strings need new translations.

The video half stays a separate file, and file actions do not carry it along.

Bumps OPENCLOUD_COMMITID to include opencloud-eu/opencloud#3651 (Live Photo facet with Tika 4). Until opencloud-eu/opencloud#3652 (facets in search results) is available, a file info request loads the facet of a video found through the search. It is marked with a FIXME.

Related Issue

  • None

How Has This Been Tested?

  • test environment: local dev stack with fix(search): tika key fixes聽opencloud#3651 and #3652, Tika 4.1.0-SNAPSHOT, Playwright Chromium
  • test case 1: unit tests
  • test case 2: new e2e feature livePhoto.feature, existing Motion Photo e2e feature
  • not tested: real iPhone videos (HEVC), Firefox, Safari

Types of changes

  • Bugfix
  • Enhancement (a change that doesn't break existing code or deployments)
  • Breaking change (a modification that affects current functionality)
  • Technical debt (addressing code that needs refactoring or improvements)
  • Tests (adding or improving tests)
  • Documentation (updates or additions to documentation)
  • Maintenance (like dependency updates or tooling adjustments)

@dschmidt dschmidt self-assigned this Oct 3, 2026
@dschmidt
dschmidt force-pushed the feat/live-photo-support branch from deafe0f to 38f22e4 Compare October 3, 2026 12:29
Request the oc:live-photo property by default and expose it as
Resource.livePhoto, so listings, public links, search results and file
info lookups carry the Apple Live Photo facet.
A live photo keeps its video in a separate QuickTime file that shares the
content id of the still. The paired video is resolved lazily when
playback is requested: first among the listed resources, then through a
search by content id. Public links have no search, the lookup stops at
the listed resources there. The video is downloaded by its id, so a move
or rename does not break playback.

The resolved video is kept per player next to its blob url and cleaned up
with it. A missing video is only remembered for a short time, because the
facet is indexed with a delay after an upload.

isMotionPhoto and isLivePhoto each match their own kind,
isMotionOrLivePhoto covers both.
The badge, the inline player and the media viewer treat the still of a
live photo like a motion photo and label it as a Live Photo.

The existing labels write Motion Photo as a proper name as well and say
video instead of clip.
The fixture pair is a small JPEG with an Apple maker note content
identifier and a QuickTime video with the matching item list entry. The
video lives in another folder than the still, so playback goes through
the search by content id.

The motion photo step says video instead of clip, like the labels.
@dschmidt
dschmidt marked this pull request as ready for review October 3, 2026 12:41
The search REPORT only returns the facets of its hits with
opencloud-eu/opencloud#3652. Until that is available the still image
time of a video found through the search comes from a file info request.
Includes opencloud-eu/opencloud#3651, which makes the search service read
the Tika 4 keys of the live photo facet.
@dschmidt dschmidt changed the title feat: support Apple Live Photos [full-ci] feat: support Apple Live Photos Oct 3, 2026
The opencloud main branch requires go 1.26 since its go.mod bump.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant