theothernt / AerialViews

A screensaver for Android TV devices including Nvidia Shield, Fire TV, and Chromecast with Google TV. Inspired by Apple TV's video screensaver.
GNU General Public License v3.0
418 stars 32 forks source link

Does the app support still images? #95

Closed jagjordi closed 2 weeks ago

theothernt commented 1 year ago

Currently, Aerial Views only supports video but I have started looking into supporting images.

There there any other image-only screensavers you've tried or are you looking to mix both videos and images in a screensaver?

jagjordi commented 1 year ago

I have tried others payed solutions. But I'm looking for an open source solution. Do you have any suggestions?

theothernt commented 1 year ago

I don't have any suggestions, but I'll update you when I make some progress with showing images.

BenJamesAndo commented 1 year ago

As a workaround I got an image and made it into a long .mp4 file. Native image support with the ability to specify how long each image shows for would be really nice. Then we could mix between videos and images. Handy for samba shares where we might want to dump videos and images from a recent trip for example.

theothernt commented 1 year ago

@BenJamesAndo that's a good solution in the meantime, did you use a video app or an online service to do that?

And to the bigger question, yes, I do hope to add support for images in future. Not sure on a timeline yet, but it may be a couple of months. I will keep this issue open and updated when I make progress.

BenJamesAndo commented 1 year ago

I just used Shutter Encoder. Any video editor would suffice just paste the still image into the timeline multiple times. There'd probably be some online services as well.

I had a thought that could make it even cooler. If the images did slow zooms in/out. That way there's always movement and the images won't look as super still compared to the videos. Then allow for choosing how long each image stays active.

m0wer commented 11 months ago

Any updates on this? How complex is the change (approximately)? Does anyone know any alternative apps for this functionality?

theothernt commented 11 months ago

Any updates on this? How complex is the change (approximately)? Does anyone know any alternative apps for this functionality?

No updates yet I have a list of smaller features i'd like to implement first like more language support, weather and a few other overlays.

The change isn't too complex, it's more that it requires most of the app's code to be modified. Plus there is no 'player' for images, only video.

In the meantime, you could try Photo Gallery and Screensaver ?

fivestones commented 8 months ago

I've tried Photo Gallery and Screensaver, and support for getting files from a network device seems to be broken. At least, I can't get it to work, and there are lots of reviews saying the developer seems to not respond to emails any more. I emailed him today about it, we'll see if he writes back. However, I'd much rather use AerialViews for this if I could.

theothernt commented 8 months ago

I've tried Photo Gallery and Screensaver, and support for getting files from a network device seems to be broken. At least, I can't get it to work, and there are lots of reviews saying the developer seems to not respond to emails any more. I emailed him today about it, we'll see if he writes back. However, I'd much rather use AerialViews for this if I could.

I understand. Image support for Aerial Views is under way but I have been working on other features as well. I'm hoping to have image support before the end of the year but I'll update this issue/thread when there's progress.

theothernt commented 8 months ago

Also, I should mention - when it comes to images, these are the features I'm thinking about...

  1. Fade in/out like videos (not configurable, will be in future)
  2. Image changes every... 10sec, 30sec, 1min, 3min, 5mins
  3. Slow image panning/zooming mode (aka. Ben Burns effect)
  4. Vignette effect on/off (slight darkness around the edge of photos)

Any feedback or ideas?

fivestones commented 8 months ago

All of those sound good to me. It would be nice to have options for transitions between photos (fade in/out, just directly switch from one to the next, and maybe other nice looking transitions).

Another feature that is really important (maybe it goes without saying for you which is why you didn't mention it?) is for each image to get preloaded before it's displayed. I've seen other apps that get images from a network share, and they get to the point where one image is finished being shown, and then spent a bit of time on a loading screen while the next image is obtained from the network share. Obviously this is sub-optimal, and the previous image should continue to be shown until the new one is ready to show (even if for some reason it takes longer to get the image ready than the timeout of 10 seconds or whatever it's set to).

Another thing that was mentioned above by @theothernt is for it to be able to show a mix of videos and images. I've seen people post about other slideshow apps that when they were doing this, if the time per file was set to say 10 seconds, when a video was shown, it would only play the first 10 seconds. Or if the timeout per image was long, like 3 minutes, and the video was short, the video would end and nothing would happen until the 3 minutes were up. I think most people would want any video to play in its entirety and then immediately switch to the next file, regardless of the amount of time set to show each image.

fivestones commented 8 months ago

For situations with an overlay with other info on top of the image somewhere:

One other thing I've seen other places that looks good with images is to have a gradient of black over the image, starting maybe 3/4 of the way down, starting with 100% transparency and getting to maybe 50% transparency at the bottom. The look is kind of like a vignette effect but applied horrizontally only at the bottom of the image. Then overlays are put over the darkened area making it look great. I've seen this used in the brave browser new tab, and in other places too.

An example (looks like this one applies this kind of effect at both the top and bottom):

Screenshot 2023-10-26 at 3 33 48 PM

Here's the original image: image

theothernt commented 8 months ago

Thanks for the feedback. So, images are treated the same as videos in a number of ways.

I want the transitions between images and videos to be the same, ie. fading in and out - and there are some technical reasons why this probably won't change anytime soon (ie. different transition options)

Obviously, videos have different lengths where as images do not. Images will have their own timer, the default might be 30sec or 1min but you'll be able to change it.

Gradients, etc is something I'll be adding but it will be after the initial release of this feature. I'll have to see how development goes.

As for pre-loading. Currently there is none due to memory issues on most Android TV devices (the long story is that a pre-loading issue was why I forked Aerial Dream in the first place!). Images are tiny compared to videos so I don't see a need for pre-loading, especially from local/USB storage or SMB - loading even a 2MB image should be instant. Also, the image will only fade-in when the image has loaded, much like videos do know.

fivestones commented 8 months ago

As for pre-loading: how much of a limitation is this in android tvs? I think you're right about how there won't be a noticeable delay when loading from usb, but honestly one of the reasons I am hoping for photos to be implemented is that I can't find any other apps for android tv that show photos from a network store as a slideshow. It's certainly my use case--not from a usb drive. And coming from a network share I expect that without preloading from a network share there may be a noticeable break between photos? I guess what I'm saying is that if the android tv is able to play video where the entire screen contents are constantly changing, shouldn't they be able to preload one frame--a photo? Maybe an alternative for photos coming from a network share is to copy the next photo to local storage while showing the current photo, then switch photos to show the one that was just copied, then delete the previous photo.

theothernt commented 8 months ago

On Android TV, as opposed to Android phones, one of the main limitations is RAM. Plus, my app is not a normal app. It usually runs on-top of an existing app which is usually paused or suspended - then resumed when you exist the screensaver.

Playing video requires a lot of RAM as video is a) decompressed from the video file into larger pieces for actual playback and b) a buffer stores multiple pieces. So simply loading a 1080p video and pausing it requires at least 300MB - and the figure is a lot higher with 4K HDR video.

As for both images and video, I mask the initial loading by showing a black screen - and only after a) the video has loaded an initial amount or b) the image had loaded, do I fade out the black screen. As images are tiny compared to video, loading should be instant from USB storage or SMB - there will be no partial loading or jarring transition.

Also, for the purposes of loading an image, there wouldn't be much speed different between local storage vs SMB.

the-little-wave commented 6 months ago

For several years now I've been trying to find a video + image screensaver for Android that is similar to gPhotoShow on Windows but could be used on AndroidTV or tablets (for digital photo frames). I've been using it to display curated home videos and photos as it has some great customisation options but after initially sounding positive the developer for that app gave up on creating an Android version. Adding still images to Aerial Views could well provide a good Android alternative to that gPhotoShow so I'm definitely interested in trying it out.

I'm not sure how easy it would be to add but one thing I've found valuable when displaying home video footage is a 50% scale option (for video) as when full screen on a large TV or projector the bumpy hand held video is quite an abrupt change next to the smooth pan/zoom on still images. The large black border also provides a nostalgic feel of projected 8mm film.

At any rate, it could be worth looking at gPhotoShow for implementation ideas for mixing videos and still images. The sheer number of options might be overkill for Aerial Views but there's some good ideas there.

brjhaverkamp commented 6 months ago

Hello theothernt,

I came across your nice app when looking for a screensaver capable of accessing the photos/videos on my NAS. I read here and in https://www.reddit.com/r/AndroidTV/comments/17eckeo/screensaver_that_can_pul I hope you are still on that path. I would love to see that addition. It would make this the perfect screensaver app for my google TV.

Just out of curiosity, Can you update us on your plan and progres? No presure, I know this is open source and we should chip in if we are really desperate for it:-)

Kind regards,

Bert

theothernt commented 5 months ago

Just out of curiosity, Can you update us on your plan and progres? No presure, I know this is open source and we should chip in if we are really desperate for it:-)

Hi Bert - no update just yet. I had planned to work on the app over the Christmas break but that didn't happen. I do hope to add image support in the next couple of releases - but I will post a test version here first. I expect to make progress over the next 2 or 3 weeks.

Also, thank you to everyone for their patience and input on the feature!

brjhaverkamp commented 5 months ago

Hi Neil,

Thanks for your update. Over the Christmas break would have been great. But I hope you used that break to enjoy family and friends.

And don't worry, we will be waiting (im)patiently for the test version and new release. I'm looking forward to using my google TV screensaver as an image carousel for my home video and photo collection!

Btw, I have the same experience with Photo Gallery and Screensaver as fivestones mentioned above. I have tried about every variant of the smb settings I could think of, but without luck. It seems to be broken or not implemented at all.

So you are our last hope! No pressure:-)

Bert

theothernt commented 5 months ago

Quick question for everyone - what images formats do you use - PNG, JPEG, HIEF, anything else?

the-little-wave commented 5 months ago

For images that would be accessed by Aerial Views it's currently all jpeg for me. I use dng raw but can't see that ever needing to be read by this.

On Wed, 31 Jan 2024, 16:19 Neil Turner, @.***> wrote:

Quick question for everyone - what images formats do you use - PNG, JPEG, HIEF, anything else?

— Reply to this email directly, view it on GitHub https://github.com/theothernt/AerialViews/issues/95#issuecomment-1919443282, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARHGAZ646NZK4CCFOFCWDTLYRJVIVAVCNFSM6AAAAAAWFQ2G46VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMJZGQ2DGMRYGI . You are receiving this because you commented.Message ID: @.***>

BenJamesAndo commented 5 months ago

I'd likely mostly use JPG or PNG. AVIF looks like it could get more popular in the future and support for WebP would be nice also.

theothernt commented 5 months ago

For images that would be accessed by Aerial Views it's currently all jpeg for me. I use dng raw but can't see that ever needing to be read by this.

JPEG support will definitely be supported anyway.

theothernt commented 5 months ago

I'd likely mostly use JPG or PNG. AVIF looks like it could get more popular in the future and support for WebP would be nice also.

AVIF, I'll add that to the list. It looks like it requires Android 12+ btw.

brjhaverkamp commented 5 months ago

Same here my photo library is 100% jpeg. Great to hear you moving forward with this Neil!

bertremCA commented 5 months ago

Sorry that I'm late to the party, but in response to your request for feature suggestions of October 25... One additional feature I'd really love to see (and that I don't think has been suggested yet) would be some kind of tiled image display. This is one of the things that I really like about "Photo Gallery and Screensaver", even though that app is a piece of abominable crud in just about every other respect. It does do a nice job of showing a handful of images (up to about 7, i think) on the screen at the same time, and I like the "slide" transition that it uses for that. Looking forward to your beta!

theothernt commented 4 months ago

Here are two versions to test depending on your setup...

To use the image feature, look in...

  1. Settings > Video Sources > SMB/Samba Share > Choose media type > set to 'Images only' or 'Videos and images'
  2. Settings > Playlists > Slideshow speed and Image scaling options added

Displaying image only works for SMB, not local or USB devices - I'm hoping to add this in beta2 in the next week or so.

Please let me know if you find any issues or if existing features don't work as expected as many internal changes were made for this update.

theothernt commented 4 months ago

Here is a small update...

Local and USB device support for displaying images was added in this build.

I hope it's working well for everyone so far!

Also, I'll probably leave this build up for a week or so. If you run into any issues, please let me know.

In regards to more animations, features, etc - I will look into that after this initial version is released as I need to confirm the feature works and is stable for everyone, then I can build on that.

bertremCA commented 4 months ago

Still so far so good with the beta!

And I thought of one other thing that would be really nice to have... captions read from EXIF data. The frustrating thing is that there seems to be little consensus about what field should be populated with these, but I personally ended up using "ImageDescription", though various online sources also suggest the use of "Description", "UserComment", and "XPTitle". For videos, it seems even less clear, but I ended up settling on "Description" which at least VLC seems to recognize. As my Dad says... the great thing about standards is that you have so many to choose from.

theothernt commented 4 months ago

And I thought of one other thing that would be really nice to have... captions read from EXIF data. The frustrating thing is that there seems to be little consensus about what field should be populated with these, but I personally ended up using "ImageDescription", though various online sources also suggest the use of "Description", "UserComment", and "XPTitle". For videos, it seems even less clear, but I ended up settling on "Description" which at least VLC seems to recognize. As my Dad says... the great thing about standards is that you have so many to choose from.

I just had a quick look and EXIF data extraction is supported on Android so it should be straight forward enough to add the feature in the next update or two.

My idea is to add the option to Appearance > Location screen. There'll be an Images and Video section. In images, you can select which EXIF field will be used at the Location or Title.

Also, I hope to add the option for a gradient or background for the text displayed on the screen so it's easier to see. I notice that Google uses the gradient approach.

burzka commented 4 months ago

Oh, that is a really good feature. I am currently testing it out. My humble suggestion is a better way of handling vertical images. Google's idea of splitting the screen in two and showing two vertical photos together seems to be the best way.

theothernt commented 4 months ago

Small update. I'll be releasing this build of the app in a couple of days, just waiting on some translations.

Testing did show a couple of bugs, one crash bug but I'm not sure if anyone noticed it, which have been fixed.

Question - roughly speaking, how many images are people using with the screensaver - a few hundred? a few thousand?

Also, if the number is large, how long do you see "loading..." for?

brjhaverkamp commented 4 months ago

That is great news! Looking forward to try it. I didn't get around to testing the betas.. sorry. I plan to point it at my family photo album, possibly only the last decade. This is thousands of photos. If I use the whole album it will be 10s of thousands.

That triggers a question, I just realize: Will the app be able to traverse subfolders for photos? My album hierarchy is Photalbum/decade/year/topic/photoxxx.jpg " So for instance Photo album Bert/2020s/2023/2023-01-01 New years party" Will that be picked up ?

Regards,

Bert

theothernt commented 4 months ago

That triggers a question, I just realize: Will the app be able to traverse subfolders for photos? My album hierarchy is Photalbum/decade/year/topic/photoxxx.jpg " So for instance Photo album Bert/2020s/2023/2023-01-01 New years party" Will that be picked up ?

Yes, the app will search subfolders - that feature was added a few releases ago. When you get the update, do let me know how long Aerial Views takes to start, I'm guessing it'll be several seconds or so.

koolaidOHYeah commented 4 months ago

This is so wonderful. Thank you for all your hard work. Great question!

I have about 22,000 pictures My "loading..." runs for about 50-60 seconds before the first picture shows. I would like to see this load much faster but I am happy to have something that works!

Subfolders work great.

brjhaverkamp commented 4 months ago

Ouch, 50-60 would be a bit much. Hope there is some way Neil can make it to show the first image(s) before the total loading is ready:-) Even if those are only "semi random" or similar.

Good to hear the subfolders are no issue. Looking forward to testing. When are you releasing new version of the app?

theothernt commented 4 months ago

I have about 22,000 pictures My "loading..." runs for about 50-60 seconds before the first picture shows. I would like to see this load much faster but I am happy to have something that works!

Thanks for that info. I have a few ideas on how to solve this issue but I'll test against 30,000 images.

EDIT: After some testing, the major bottleneck is not in the listing of 35k files. That takes 15 seconds for me using the 'test connection' feature whereas the 'loading...' takes 1min 30secs. I'll have a new build to test on Sunday with a fix.

theothernt commented 4 months ago

Ok, here is an update with a few fixes...

(links removed)

If you have 20k+ images, loading should be a lot faster. I have a lot of work to do in this area, but it'll happen over the next couple of releases. In the meantime, let me know if this helps...

koolaidOHYeah commented 4 months ago

Initial testing of Aerial Views 1.6.4 beta3 is awesome! Loading time down to 5-7 seconds!!

curtisbarnard commented 4 months ago

@theothernt just wanted to say thanks for your hard work on this! I found the repo after some googling for a way to do video + photo screensaver on my Android TV. I'll try to install the beta and give any feedback. Is SMB currently working with the beta or still just local/USB?

theothernt commented 4 months ago

@theothernt just wanted to say thanks for your hard work on this! I found the repo after some googling for a way to do video + photo screensaver on my Android TV. I'll try to install the beta and give any feedback. Is SMB currently working with the beta or still just local/USB?

Thanks! If you try beta 3, it supports both local storage and SMB for images. I'm planning on releasing this version in a few days but any feedback is welcome. After its release, I'll start talking/thinking about what features to add in the next couple of releases.

bertremCA commented 4 months ago

With ~9000 images, 1.6.4 beta3 has reduced the loading time from 34 seconds to 7 seconds. Much improved! Thanks! I have yet to see any other issues with either beta1 or beta3

curtisbarnard commented 4 months ago

I installed beta and the following works great:

However Loading and playing videos over SMB is not working for me. It just sits with a loading screen forever. I've done the following to try and root cause:

theothernt commented 4 months ago

I installed beta and the following works great:

Thanks for testing the app and running through all those steps to narrow down the issue.

Just to rule out one more, can you try changing the version of SMB from 3.x to 2x? Also, are the videos your own and not the Apple or community videos?

curtisbarnard commented 4 months ago

@theothernt The videos are one's that I own/recorded. I tried with three different MP4's from three different cameras as well as one webm that I downloaded from Youtube.

The Apple and community videos seem to work fine when choosing 1080p H.264, 1080p HEVC or 4k HEVC. Also another data point is that this is a Sony XBR-75X90CH TV.

Switching to SMB v2 only or SMB v3 only doesn't seem to fix it either.

I also tried rebooting the TV just in case, but it still doesn't work.

I'm going to try installing the current release from the play store and see if it works. Will report back.

theothernt commented 4 months ago

The Apple and community videos seem to work fine when choosing 1080p H.264, 1080p HEVC or 4k HEVC. Also another data point is that this is a Sony XBR-75X90CH TV.

Can you try downloading a couple of videos from the Aerial Videos website and see if they play from SMB?

Switching to SMB v2 only or SMB v3 only doesn't seem to fix it either.

That's fine, it was a long shot.

I also tried rebooting the TV just in case, but it still doesn't work. I'm going to try installing the current release from the play store and see if it works. Will report back.

I doubt either will do anything, but do let me know.

As you've noticed before, the issue is with video playback from SMB - but some video formats work, others don't. There is another person with the same issue although they have a Nvidia Shield, not a Sony TV.

bertremCA commented 4 months ago

FWIW, videos work fine for me with an nVidia Shield, though I don't have any 4K videos. Mine are mostly mp4's generated by my Pixel phone, typically at 1920x1080.

One other thing I noticed while testing videos though... a "center" option (as opposed to fill) like the one offered for images would be great. Vertical videos are cropped pretty badly.

theothernt commented 4 months ago

FWIW, videos work fine for me with an nVidia Shield, though I don't have any 4K videos. Mine are mostly mp4's generated by my Pixel phone, typically at 1920x1080.

I don't know the cause of the video + Samba issue but it doesn't seem to happen to most people - but I'd still like to fix it, if possible. It's just frustrating that the same videos will play from one location but not another.

One other thing I noticed while testing videos though... a "center" option (as opposed to fill) like the one offered for images would be great. Vertical videos are cropped pretty badly.

I've added that to the list, it should be possible in the next release or two.

bertremCA commented 4 months ago

I don't know the cause of the video + Samba issue but it doesn't seem to happen to most people - but I'd still like to fix it, if possible. It's just frustrating that the same videos will play from one location but not another.

maybe a function of the samba server? i'm pulling from a server running FreeNAS v. 11.1-U7.