Play transcoded video & get remote thumbnail when local file format is unsupported #7823

Open
opened 2026-02-20 05:07:17 -05:00 by deekerman · 0 comments
Owner

Originally created by @meesfrensel on GitHub (Jan 21, 2026).

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

When local video files on the phone cannot be played in the app, it's worth trying to play the remote transcoded video. Same for getting remote thumbnails.

The local video might be downloaded from the internet or some other device, and have a weird format that the player doesn't support (some AVI video in a strange codec). Transcoding works just fine, and I can view the videos in the web app perfectly. If an invalid format is detected or an error happens with playback, the app should try to view the transcoded video.

Version of Immich Server

v2.4.1

Version of Immich Mobile App

v2.4.1

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

Samsung Galaxy A51

Reproduction steps

  1. Get video that cannot be played in the Immich app (mine can't be played by the samsung gallery app either)
  2. Try to play the video by opening it
  3. No good :)

Relevant log output

(the player hangs but no logs appear for that)
thumbnail related:

Error loading image: PlatformException(FileNotFoundException, java.io.FileNotFoundException: Failed to create thumbnail, Cause: null, Stacktrace: java.io.FileNotFoundException: Failed to create thumbnail
	at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:151)
	at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:780)
	at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2034)
	at android.content.ContentResolver.openTypedAssetFile(ContentResolver.java:1939)
	at android.content.ContentResolver.lambda$loadThumbnail$0(ContentResolver.java:4191)
	at android.content.ContentResolver$$ExternalSyntheticLambda1.call(Unknown Source:10)
	at android.graphics.ImageDecoder$CallableSource.createImageDecoder(ImageDecoder.java:684)
	at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:2015)
	at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:2008)
	at android.content.ContentResolver.loadThumbnail(ContentResolver.java:4190)
	at android.content.ContentResolver.loadThumbnail(ContentResolver.java:4174)
	at B3.w.d(Unknown Source:0)
	at app.alextran.immich.images.ThumbnailsImpl.a(Unknown Source:64)
	at e4.j.run(Unknown Source:20)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:520)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1154)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:652)
	at java.lang.Thread.run(Thread.java:1563)
, null)





#0      ThumbnailApi.requestImage (package:immich_mobile/platform/thumbnail_api.g.dart:77)
<asynchronous suspension>
#1      LocalImageRequest.load (package:immich_mobile/infrastructure/loaders/local_image_request.dart:19)
<asynchronous suspension>
#2      CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:61)
<asynchronous suspension>
#3      ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:724)
<asynchronous suspension>
Originally created by @meesfrensel on GitHub (Jan 21, 2026). ### I have searched the existing issues, both open and closed, to make sure this is not a duplicate report. - [x] Yes ### The bug When local video files on the phone cannot be played in the app, it's worth trying to play the remote transcoded video. Same for getting remote thumbnails. The local video might be downloaded from the internet or some other device, and have a weird format that the player doesn't support (some AVI video in a strange codec). Transcoding works just fine, and I can view the videos in the web app perfectly. If an invalid format is detected or an error happens with playback, the app should try to view the transcoded video. ### Version of Immich Server v2.4.1 ### Version of Immich Mobile App v2.4.1 ### Platform with the issue - [ ] Server - [ ] Web - [x] Mobile ### Device make and model Samsung Galaxy A51 ### Reproduction steps 1. Get video that cannot be played in the Immich app (mine can't be played by the samsung gallery app either) 2. Try to play the video by opening it 3. No good :) ### Relevant log output ```shell (the player hangs but no logs appear for that) thumbnail related: Error loading image: PlatformException(FileNotFoundException, java.io.FileNotFoundException: Failed to create thumbnail, Cause: null, Stacktrace: java.io.FileNotFoundException: Failed to create thumbnail at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:151) at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:780) at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2034) at android.content.ContentResolver.openTypedAssetFile(ContentResolver.java:1939) at android.content.ContentResolver.lambda$loadThumbnail$0(ContentResolver.java:4191) at android.content.ContentResolver$$ExternalSyntheticLambda1.call(Unknown Source:10) at android.graphics.ImageDecoder$CallableSource.createImageDecoder(ImageDecoder.java:684) at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:2015) at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:2008) at android.content.ContentResolver.loadThumbnail(ContentResolver.java:4190) at android.content.ContentResolver.loadThumbnail(ContentResolver.java:4174) at B3.w.d(Unknown Source:0) at app.alextran.immich.images.ThumbnailsImpl.a(Unknown Source:64) at e4.j.run(Unknown Source:20) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:520) at java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1154) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:652) at java.lang.Thread.run(Thread.java:1563) , null) #0 ThumbnailApi.requestImage (package:immich_mobile/platform/thumbnail_api.g.dart:77) <asynchronous suspension> #1 LocalImageRequest.load (package:immich_mobile/infrastructure/loaders/local_image_request.dart:19) <asynchronous suspension> #2 CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:61) <asynchronous suspension> #3 ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:724) <asynchronous suspension> ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/immich#7823
No description provided.