gianni-rosato / aviator

A lightweight, Flatpak-first, easy-to-use GUI utility for encoding with SVT-AV1 & Opus.
GNU General Public License v3.0
172 stars 15 forks source link

Feature: Video background preview in new export AdwStatusPage #51

Closed TriVoxel closed 11 months ago

TriVoxel commented 11 months ago

Had an idea for an alternative to a simple loading bar. What if instead, we filled the window background with a GtkVideo element with the source video file, and set the progress of the video playback to the % of the transcoding completion, or something similar? This would give a more visual indication of how far along the transcode is, and could look really nice! Video element could fade out once the transcode completes.

Here's my design idea:

After "Export" is clicked, the interface changes. All UI disappears (with the exception of the main menu button), the window becomes a simple Adw.StatusPage, perhaps with an animated spinner for the icon (similar to current one), and a big destructive button to "Stop" the transcode, accompanied by a warning dialog popup. The entire background is a video element using the original file, set to the position of the "Encoding %". This would be very clean and would provide good visual feedback. Perhaps we could also have a thin loading bar spanning the bottom of the screen like a timeline? File information could be placed in the description maybe.

Additionally, we should add an estimated time remaining, as video transcodes tend to be consistent in speed. This way, users don't need to calculate this themselves, or guess. Would be nice to know how long to expect for a conversion to finish!

gianni-rosato commented 11 months ago

I like this, but I think a progress bar needs to accompany something like this in the end anyway. Also, decoding something like lossless H.264 is actually quite difficult and may slow down AV1 encoding. I'm going to close this as not planned because it is too opinionated for my design goals.

TriVoxel commented 11 months ago

I like this, but I think a progress bar needs to accompany something like this in the end anyway. Also, decoding something like lossless H.264 is actually quite difficult and may slow down AV1 encoding. I'm going to close this as not planned because it is too opinionated for my design goals.

Totally understandable. However, I ask once more if you might just reconsider this feature. I think it would be super handy to be able to "live preview" the process. Perhaps we could only update the video once every 2-5 seconds, and only for 1 frame? Also, we could NOT do this by default, but rather, have a simple check box to enable "Live preview" with an info button next to it which, when hovered, will display a prominent warning that it may impact the performance. Also, from a UX POV, this tick box should probably have a persistent state, so the next conversion remembers the last setting for convenience sake. I also agree, a loading bar is essential and should be displayed regardless.

I think it would be possible to have this feature, which would add a lot of value to the user experience as it is a very clear indication to users of where the video is at, so good, intuitive, simple visual feedback. It would add an extra layer of polish, and wouldn't overcomplicate things (from the user's perspective, anyways). I personally have had this idea since I first conceived of a similar app (before discovering this project), and it just seemed too cool for me to not try pushing the idea one last time! I'd be willing to try implementing it when I have time, and perhaps we could at least keep the idea open as a possibility, until we have a prototype to see how it actually runs and feels?

Anyways, either way I respect your decision, just thought it was a cool idea. And my post is so specific because I had a pretty clear design goal with the whole thing that I thought would be clean and simple. Feel free to provide feedback if you have any interest, of course! Perhaps a PR on the horizons...?

Regards

gianni-rosato commented 11 months ago

If it is opt-in, I'd be happy to accept a PR implementing such functionality

TriVoxel commented 11 months ago

If it is opt-in, I'd be happy to accept a PR implementing such functionality

That is the goal. It's not something everyone would want to use, but some might find it extremely useful...