Summary
I’d like Memories to support exporting Live Photos as Android/Google Motion Photo JPEGs.
Memories already detects Live Photos and can download the still image and video part separately. This feature would add a single export option that combines them into one Android-compatible Motion Photo .jpg.
Use case
This helps users who want to move Live Photos from Apple/iCloud/Nextcloud workflows into Android or Google Photos workflows.
Instead of downloading:
IMG_1234.HEIC or IMG_1234.JPG
IMG_1234.MOV
the user could download:
which Android/Google Photos can recognize as a Motion Photo.
Proposed UI
Add a Download Motion Photo action directly below the existing Download Video action in the Memories viewer for Live Photos.
Proposed behavior
- JPEG stills are used directly.
- HEIC/HEIF stills are converted to JPEG before export.
- MOV/QuickTime live videos are transcoded to MP4 using the existing Memories video transcoding/go-vod path.
- Existing embedded MP4 Motion Photos are reused when possible.
- If an MP4 cannot be produced, the export should fail rather than generate a non-compliant file.
Format
The output follows Android’s Motion Photo format:
https://developer.android.com/media/platform/motion-photo-format
The generated JPEG contains:
- XMP APP1 metadata with
Camera:MotionPhoto="1"
Camera:MotionPhotoVersion="1"
Camera:MotionPhotoPresentationTimestampUs
Container:Directory
- primary
image/jpeg item
- trailing
video/mp4 item with exact Item:Length
- MP4 bytes appended after the JPEG image
Prototype
I have a working prototype patch against Memories 8.1.0.
It adds:
- a small
MotionPhotoController
- a
OCA\Memories\Service\MotionPhoto service for export assembly
- a viewer action under Download Video
- HEIC/HEIF-to-JPEG conversion through Imagick
- MOV-to-MP4 conversion through existing go-vod behavior
I tested it with an iPhone Live Photo pair:
- source still:
.jpg
- source video:
.mov
- output: Android Motion Photo
.jpg
- verified XMP fields and exact trailing MP4 byte length/hash
Happy to open a PR if this is something the project would consider .
I would love it if somebody could help me with a way to test the code as it is my 1st time recommending a feature on anything and writing code for it.
Questions for maintainers:
- Would this fit Memories as a built-in export action?
- Should it be behind a config option?
- Is
Service\MotionPhoto the right place structurally, or would you prefer another service split?
- Should HEIC conversion rely on Imagick, previews, or another existing Memories path?
- Should their be a button when doing a multi-select of pictures to export them as motion pictures ?
Summary
I’d like Memories to support exporting Live Photos as Android/Google Motion Photo JPEGs.
Memories already detects Live Photos and can download the still image and video part separately. This feature would add a single export option that combines them into one Android-compatible Motion Photo
.jpg.Use case
This helps users who want to move Live Photos from Apple/iCloud/Nextcloud workflows into Android or Google Photos workflows.
Instead of downloading:
IMG_1234.HEICorIMG_1234.JPGIMG_1234.MOVthe user could download:
IMG_1234MP.jpgwhich Android/Google Photos can recognize as a Motion Photo.
Proposed UI
Add a Download Motion Photo action directly below the existing Download Video action in the Memories viewer for Live Photos.
Proposed behavior
Format
The output follows Android’s Motion Photo format:
https://developer.android.com/media/platform/motion-photo-format
The generated JPEG contains:
Camera:MotionPhoto="1"Camera:MotionPhotoVersion="1"Camera:MotionPhotoPresentationTimestampUsContainer:Directoryimage/jpegitemvideo/mp4item with exactItem:LengthPrototype
I have a working prototype patch against Memories 8.1.0.
It adds:
MotionPhotoControllerOCA\Memories\Service\MotionPhotoservice for export assemblyI tested it with an iPhone Live Photo pair:
.jpg.mov.jpgHappy to open a PR if this is something the project would consider .
I would love it if somebody could help me with a way to test the code as it is my 1st time recommending a feature on anything and writing code for it.
Questions for maintainers:
Service\MotionPhotothe right place structurally, or would you prefer another service split?