pulsejet/memories

Video Playback Fails for Large Files in Memories App, Works in Files App

Opened this issue · 4 comments

Describe the bug

When attempting to play large video files (e.g., .mov) using the Memories app, the playback fails, while the same files play correctly in the Files app. Upon inspecting via Safari's web inspector, it was observed that the Memories app starts downloading the video but fails to complete the download. In contrast, the Files app downloads a portion of the video and waits for the user to press play before continuing to download and stream the file. The transcoding option is disabled as the video file is natively supported by iOS and if the size is small the file plays correctly.

Steps To Reproduce

  1. Record a large video file using iPhone
  2. Upload the video to Nextcloud
  3. Playback via Memories

Platform

- OS: iOS 18.0
- Browser: Safari
- Memories Version: 7.4.1
- Nextcloud Version: 30.0.0 (fpm-alpine)
- PHP Version: 8.2.24
- Web server: nginx/1.26.2

Screenshots

c53c938b-c5e4-432d-8608-b9fbdfed3815

How large?

I had a feeling this question would come... I was not providing figures because I changed so much cache sizes, buffer sizes, timeouts, keepalives (all in search for a solution for this not that this is the consequence). But, here you have my test results:

  • Video capture: iPhone 13pro
  • Resolution: 4K 60fps HDR
  • Codec: HEVC
  • Container: .mov
Test # File Size Duration WebApp Result Safari Result
Test 1 166MB 46s Pass Pass
Test 2 335MB 47s Fail Pass
Test 3 405MB 80s Fail Pass
Test 4 475MB 90s Fail Fail

Note: All videos come from the same original, only trimmed to different lengths.
Observation: Test results are inconsistent (~90% variability), suggesting the issue may be caused by buffer or timeout configurations ( All files play fine thru the Files app ).

Is it possible to add an option to Memories so it uses the standard file serving and not stream thru the API?

To add to the conversation, I see somewhat similar behavior with Safari on macOS instead of iOS.

check ffprobe with your file. my ios movies had

unsupported codec with id 0 for input stream 2
Unsupported codec with id 0 for input stream 3
Unsupported codec with id 0 for input stream 4

and had to be manually cleaned with
ffmpeg -i input.mov -map 0:v:0 -map 0:a:0 -c:v copy -c:a copy output_cleaned.mp4

That worked for a lower res video for me, but not the higher res one.