Describe the project you are working on:
Project with Level selection, character selection, viewports that are supposed to show looping video.
Describe the problem or limitation you are having in your project:
I would like to play short looping video in my projects at numerous places (think level selection, character selection, character ingame portraits like in Starcraft2), and love how amazingly good the VideoPlayer Node is for playing video, however it does not have a loop bool which is a shame.
So for every single VideoPlayer Node I have to connect the finished signal to a script to play the short video again. It's more than annoying to say the least.
Describe how this feature / enhancement will help you overcome this problem or limitation:
With a loop property I would not have to create and connect a management node/and script for VideoPlayer nodes that does nothing but start the video once it's finished.
Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:
A "loop video"checkbox in the Inspector.
Describe implementation detail for your proposal (in code), if possible:
I can't write C++ code.
If this enhancement will not be used often, can it be worked around with a few lines of script?:
It would be used by anyone who wants to loop video. Since most of us are making games, the VideoPlayer node is actually often used to play short files that need looping, not necessarily movie-length files that don't need looping as much.
Is there a reason why this should be core and not an add-on in the asset library?:
It's a tiny small but very meaningful improvement to an already existing great Node in Godot.
Both play and finished don't take any arguments, so you can connect them directly without a script.
@KoBeWi
Both play and finished don't take any arguments, so you can connect them directly without a script.
I don't follow. Would you mind trying to explain it again? How would I "connect them directly" (whatever that means) to make the video loop?

Basically, you don't even need to attach script.
That's a pretty amazing trick @KoBeWi ! Thank you so much for sharing!
While genius simple, it's not exactly self explanatory, or beginner friendly. So even from a purely UX perspective, I would still think there is a need for a "loop video" checkbox.
I would prefer to see a consistent way to handle media resources within Godot, and have nodes that operate in a similar manner. Right now VideoPlayer and AudioStreamPlayer are a lot alike, if looping were to be added to VideoPlayer it would make sense to do the same for AudioStreamPlayer.
AudioStream ogg resources have the loop property set on them on import. It would make sense in the current implementation to do the same for video resources. However, it would make more sense to me to manage looping in both AudioStreamPlayer and VideoPlayer so then it's not a responsibility of the resource importer. Having the property on the player instead of the resource would also allow the use of the same resource where in some situations you can have it loop and in others play once.
I think I reported this issue years ago lol time flies
edit: Last time I did something similar to Kobe's suggestion, there would be a small hiccup of xxMS when it starts to loop. Could be different nowadays, though
Most helpful comment
I would prefer to see a consistent way to handle media resources within Godot, and have nodes that operate in a similar manner. Right now VideoPlayer and AudioStreamPlayer are a lot alike, if looping were to be added to VideoPlayer it would make sense to do the same for AudioStreamPlayer.
AudioStream ogg resources have the loop property set on them on import. It would make sense in the current implementation to do the same for video resources. However, it would make more sense to me to manage looping in both AudioStreamPlayer and VideoPlayer so then it's not a responsibility of the resource importer. Having the property on the player instead of the resource would also allow the use of the same resource where in some situations you can have it loop and in others play once.