I have a similar issue I believe. The TLDR is that I think it is caused by the videos not having an etry in the asset_files table. I don't know what this table does, but all of the videos that I have tested that match the following query have this issue:
select count(*) from assets where not exists (select 1 from asset_files where asset_files."assetId" = assets.id);
I first noticed this issue when some of my videos wouldn't show up in the timeline or play (though, playback compatibility seems to be browser related). For me, my hardware transcoding was messed up (due to other stuff I did on the server, I can give a longer description if desired). Fixing it and rerunning transcoding fixed SOME videos. While looking into the remainder, I believe that they were videos that the immich default settings chose not to transcode. Additionally, I found that they do not have an entry in the asset_files table in the database ( found via select count(*) from assets where not exists (select 1 from asset_files where asset_files."assetId" = assets.id); ). It seems to me the following is happening:
- something causes the transcoding process to fail or not happen
- an entry is not being made in the
asset_files table
- these videos do not show up in the timeline and don't fully work for playback.
- setting the transcoding settings to all videos and transcoding them does not seem to fix these videos. I may try deleting and re-uploading them.
Finally, I think immich could use some better error handling for these files. when the video can't play, other parts of the webUI are unresponsive. It would be better if an error could be displayed. Additionally, if a video cannot be processed properly, and won't appear in the timeline, there should be some way to surface it in the UI so that the user know about the issue.