GDE GoZen - Video Playback addon for Godot
A downloadable tool for Windows, macOS, Linux, and Android
Buy Now$5.00 USD or more
This Godot addon provides video playback through utilizing FFmpeg. There is a readme inside to notify you on how to use the project, it comes with a new Node type called `VideoPlayback` which also has documentation inside of it.
This ONLY works with Linux, Windows, and MacOS! Web and Android support is being worked upon.
Source code is available at: https://github.com/VoylinsGamedevJourney/gde_gozen
Available to my ko-fi supporters for free: https://ko-fi.com/voylin/shop
Purchase
Buy Now$5.00 USD or more
In order to download this tool you must purchase it at or above the minimum price of $5 USD. You will get access to the following files:
GDE_GoZen_test_room_v7.2.zip 80 MB
GDE_GoZen_v7.2.zip 80 MB
GDE_GoZen_test_room_v7.3.zip 80 MB
GDE_GoZen_v7.3.zip 80 MB
Development log
- Version 7.36 days ago
- Version 7.2!10 days ago
- Version 7.117 days ago
- Version 7.018 days ago
- Version 6.226 days ago
- MacOS Fix61 days ago
- Version 6.1.170 days ago
- Version 6.089 days ago
Comments
Log in with itch.io to leave a comment.
Hi! Thank you so much for your hard work! I tried to test the project for ARM v7, using player v 7.1, but the compilation revealed errors:
ERROR: Can't open file from path 'res://addons/gde_gozen/bin/android_arm32/libgozen.android.template_debug.arm32.so'.
ERROR: Can't open file from path 'res://addons/gde_gozen/bin/android_arm32/libavcodec.so'.
ERROR: Can't open file from path 'res://addons/gde_gozen/bin/android_arm32/libavformat.so'.
ERROR: Can't open file from path 'res://addons/gde_gozen/bin/android_arm32/libavutil.so'.
ERROR: Can't open file from path 'res://addons/gde_gozen/bin/android_arm32/libswresample.so'.
ERROR: Can't open file from path 'res://addons/gde_gozen/bin/android_arm32/libswscale.so'.
I checked the bin folder, and there really is no "android_arm32". What should I do?
Right now there is only Android arm64 support, I can look into getting support woking for arm32, give me a few day’s. ;)
Thanks!
Version 7.2 will be out in the next few hours, that version will have the Armv7a support ;)
Thank you very much!
Hello Voylin,
I am using version 6.2 on MacOS with Godot 4.4. But it isn´t working. I think this error is already known.
Error:
ERROR: Can't open dynamic library: /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib. Error: dlopen(/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib, 0x0002): tried: '/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib' (no such file), '/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib' (no such file).
ERROR: Can't open GDExtension dynamic library: 'res://addons/gde_gozen/gozen.gdextension'.
ERROR: res://addons/gde_gozen/plugin.gd:2 - Parse Error: Class "GoZenServer" hides a global script class.
ERROR: res://addons/gde_gozen/video_playback.gd:1 - Parse Error: Class "VideoPlayback" hides a global script class.
ERROR: res://addons/gde_gozen/video_playback.gd:36 - Parse Error: Could not find type "GoZenVideo" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:133 - Parse Error: Could not find type "GoZenVideo" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:141 - Parse Error: Could not find type "GoZenVideo" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:119 - Parse Error: Identifier "GoZenVideo" not declared in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:379 - Parse Error: Identifier "GoZenAudio" not declared in the current scope.
I was able to solve part of the issue but I am stuck now:
1. the path that Godot expects was different than how you named your folder. You use: /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos/debug/libgozen.macos.template_debug.arm64.dylib
but
/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib
is expected. At least on my Mac.
The second issue I encountered is that Apple doesn´t allow the file to be opened since it´s a third party lib and hasn´t been notarized by Apple.
This terminal command fixed it:
xattr -d com.apple.quarantine /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib
But now I am stuck.
ERROR: Can't open dynamic library: /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib. Error: dlopen(/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib, 0x0002): Library not loaded: ./bin/lib/libavcodec.60.dylib
ERROR: Referenced from: <3A52ED05-1418-35B4-AB3C-A4C92852ACB3> /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib
ERROR: Reason: tried: './bin/lib/libavcodec.60.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS./bin/lib/libavcodec.60.dylib' (no such file), './bin/lib/libavcodec.60.dylib' (no such file).
ERROR: Can't open GDExtension dynamic library: 'res://addons/gde_gozen/gozen.gdextension'.
ERROR: res://addons/gde_gozen/video_playback.gd:36 - Parse Error: Could not find type "GoZenVideo" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:133 - Parse Error: Could not find type "GoZenVideo" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:141 - Parse Error: Could not find type "GoZenVideo" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:119 - Parse Error: Identifier "GoZenVideo" not declared in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:379 - Parse Error: Identifier "GoZenAudio" not declared in the current scope.
ERROR: modules/gdscript/gdscript.cpp:3022 - Failed to load script "res://addons/gde_gozen/video_playback.gd" with error "Parse error".
ERROR: Can't open dynamic library: /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib. Error: dlopen(/Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib, 0x0002): Library not loaded: ./bin/lib/libavcodec.60.dylib
ERROR: Referenced from: <3A52ED05-1418-35B4-AB3C-A4C92852ACB3> /Users/user_name/The_Endless_Race_For_Space_V1_60/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib
ERROR: Reason: tried: './bin/lib/libavcodec.60.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS./bin/lib/libavcodec.60.dylib' (no such file), './bin/lib/libavcodec.60.dylib' (no such file).
ERROR: Can't open GDExtension dynamic library: 'res://addons/gde_gozen/gozen.gdextension'.
Can you try version 7.1, that one has some fixes for MacOS. I’ll be asking the person who has worked on the MacOS build to see if there’s anything which needs changing.
About the files being from a third party, that’s an Apple thing and is one of the downsides for me not having an Apple machine. It’s something I’ll look more into at a later point.
If you still have issues with the MacOS build in version 7.2 (which will come out in the next few hours), try installing aom with brew to see if this fixes the issue. If it does I’ll look into building statically for MacOS or to include the aom.dylib file with the builds.
You. Are. AWESOME.
Hello! I am having an issue with the Mac ARM version of this plug in.
I am getting this error output when booting up the test room as well as my own project. I cross develop on a Windows computer and a Mac Laptop. Everything works fine in the windows environment. I am using your latest version.
ERROR: Can't open dynamic library: /Users/kenziekatsu/Downloads/gde_gozen_test_room_v6.1.1/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib. Error: dlopen(/Users/kenziekatsu/Downloads/gde_gozen_test_room_v6.1.1/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib, 0x0002): tried: '/Users/kenziekatsu/Downloads/gde_gozen_test_room_v6.1.1/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/kenziekatsu/Downloads/gde_gozen_test_room_v6.1.1/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib' (no such file), '/Users/kenziekatsu/Downloads/gde_gozen_test_room_v6.1.1/addons/gde_gozen/bin/macos_arm64/debug/libgozen.macos.template_debug.arm64.dylib' (no such file).
ERROR: Can't open GDExtension dynamic library: 'res://addons/gde_gozen/gozen.gdextension'.
ERROR: res://addons/gde_gozen/video_playback.gd:37 - Parse Error: Could not find type "Video" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:138 - Parse Error: Could not find type "Video" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:146 - Parse Error: Could not find type "Video" in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:120 - Parse Error: Identifier "Video" not declared in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:390 - Parse Error: Identifier "Audio" not declared in the current scope.
ERROR: res://addons/gde_gozen/video_playback.gd:405 - Parse Error: Identifier "Video" not declared in the current scope.
ERROR: modules/gdscript/gdscript.cpp:3022 - Failed to load script "res://addons/gde_gozen/video_playback.gd" with error "Parse error".
ERROR: Failed loading resource: res://addons/gde_gozen/icon.webp. Make sure resources have been imported by opening the project in the editor at least once.
I noticed that all of the files in the debug and release folder were in a sub folder titled "lib" This was not the path represented in the .gdextension file so I moved all of the files out of that directory into the release and debug directory respectively thinking this was the issue. It was not, libgozen.macos.template_debug.arm64.dylib just actually doesn't exist in the files. I just wanted to bring this to your attention.Hi and thanks for reporting this issue!
Yeah, that’s why I have the note on the itch.io page saying
MacOS should work, but not guaranteed.
as I don’t have a Mac machine available to properly test things out. I’ll have a look and see if I can fix this issue and try to get an update out when it’s fixed (and if I can fix it).At some point in the future I might be able to afford a Macbook so I can make certain that each release will work. ;)
But your comment helps a lot especially with
libgozen.macos.template_debug.arm64.dylib
not even existing, makes it a lot easier to troubleshoot this! ^^Understandable. Let me know if and when you update it and I can test it to see if everything works!
Sorry for the wait! I think that I managed to fix the issue in version 6.1.2 ;)
Hello Voylin,
I am using 6.2 and I still get the same error on MacOS.
Any idea if I am doing something wrong?
I am using Godot 4.4
I'm really looking forward to working Web support!
Can we get any timeline?
Sadly, due to limitations with FFmpeg, a web export won’t be possible. At this moment this isn’t going to happen anytime soon, but if I end up making my own video demuxer, this might become possible … however that would be a very big task and take several months if I were to even be able to do this.
If I could find another library which could help with video demuxing for the web, then it could be a matter of weeks, but it’ll still require quite a bit of work and will most likely come with other limitations.
Hey, I was considering purchasing this GDExtension of yours, since it includes the only working Godot video player node on the entire planet. I have a few questions though, if I may.
1. Is it possible to apply a playback speed multiplier to a video, for instance, if I wanted to play a video at 0.75 or 1.25 speed?
2. With the VideoPlayback node requiring an absolute video file path, is it possible at all to access video files inside the res:// directory when running a release build?
Hey there, first question is an easy to answer one. For one of the next updates I’ll have video playback speed implemented, main troublesome point at the moment to implement is just audio but I may have found a fix for that one so it should be coming in the next weeks.
At this moment the video files should be in the folder of the executable for it to work, but apparently someone got it working with including the video files in the project itself so I’ll have to get back to you on that one.
Hello! I had been using the 2.0 version from Github for a while and it's been working great! I decided to give this newer version a try (and wanted to support the project).
I ran the sample room just to make sure everything was working for me, but pretty much all videos do not display correctly. They seem to load and begin playback (I can see some movement and hear audio) but the video itself is a bunch of random colored lines.
It's like that for about 90% of videos I'd say. I cannot figure out what is triggering it as it doesn't seem to depend on encoding (videos with same encoding some fail, others don't).
I'll hop on the Discord in a week or 2 to check in. Not a big deal as I will continue using the old version for now. Just thought you might want to look into it. I am running the Windows version on Godot 4.3, default everything.
Thanks for letting me know! Would be helpful to see some error logs to know more of what’s going wrong. I will check to see if I can replicate it, must probably have something to do with the compute shader which is being used so I guess it’s the format which is probably not yuv420p. I’ll make the necessary adjustments and hopefully this fixes it ^^” Sorry about that!