A downloadable tool

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 works with Linux, Windows, Android and MacOS.

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

Updated 14 hours ago
StatusReleased
CategoryTool
Rating
Rated 5.0 out of 5 stars
(5 total ratings)
AuthorVoylin
Tagsffmpeg, Godot, video
ContentNo generative AI was used

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_v9.6.zip 148 MB
GDE_GoZen_test_room_v9.6.zip 148 MB
GDE_GoZen_v9.6_csharp.zip 148 MB
GDE_GoZen_test_room_v9.6_csharp.zip 148 MB
GDE_GoZen_v9.7.zip 147 MB
GDE_GoZen_test_room_v9.7.zip 148 MB
GDE_GoZen_v9.7_csharp.zip 147 MB
GDE_GoZen_test_room_v9.7_csharp.zip 148 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

Voylin, when I exported the project, with all the required file I am not able to see the video in my game :(

Did you add *.mp4 and such (the file extensions of your video files) to the list of files which need to be in the export? By default video files don’t get added to the executables. Can be easily checked if your exported project size is lower than your video size. ;)

could you kindly let me know where to add it?

When you go to the export window, click on your export prests and select the Resources tab. In there add the *.mp4 and such to “Filters to export non-resource files/folders”

thank you for the response, I did everything you said and followed the README, my videos are still not showing :(

Than I recommend you to join the discord server as helping you through here would be troublesome. When you join we can figure out what you’re doing wrong.

Could you please make the older versions available?

For what use case would this be useful?

Backward compatibility. I'm still on 4.3 and the latest version was built with 4.6 in mind. The latest version does not work for me.

I’ll see what I can do, normally there is backwards compatibility to some degree with GDExtensions, but I’ll have to look into it. ;)

(+1)

It only took 5 minutes to setup on my local debug build,

Will try to do on an release build next, so far, it has been pretty smooth!

I had everything working well once i set it up. But i checked again sometime later and noticed the videos are brighter/ have their gamma turned up without me changing any settings. The mp4 isn't the issue, because it works in the test room. I tried removing and re-importing the addon but the issue persists. Any chance you know what the issue could be?

Difficult to tell without looking at the project. Possible issue could be that the modulate value got changed, or project settings changed which affect all things displayed in the project. Most of the time if the test room works and it works slightly different in a project, it’s due to the project settings or scene which it is in. You could ty creating an empty scene to see if the same effect is happening or not.

Empty scene still has the same issue. Not modulating the node, so I guess it must be a project setting somewhere. I did run the debug option for both, and the only difference is the Padding value. I don't think that should affect it though.

It actually could be a possible explanation, but most likely not. After you using the same render profile as the test room?

I think so, but I'm not sure how to check that.

The test room is in compatibility, are you using Mobile or Forward+? You can check it in the top right corner of the godot editor

In the test_room, when I use RTSP for streaming, I can clearly feel stuttering or frame drops. However, this issue doesn't occur when using VLC media player. Is it a performance issue?

It is a format I haven’t tested for so there’s probably a bug happening, I’ll look into it ;)

Great, thank you! Looking forward to your response.

After looking more into this, it’s most likely happening as it’s using UDP by default, which is a format which drops packages. I’ll look into forcing TCP in the next update.

Thank you so much for looking into this! I really appreciate you taking the time to troubleshoot the issue. Looking forward to the next update with TCP support to fix the stuttering problem!

I am using Macbook, when I dragged the file under addons, it automatically shut down my godot, when I opened the project again it was not opened properly what should I do? It asked me to enter safe editor mode

I haven’t heard of this issue before. I do know that Mac developers sometimes need to manually approve the mac libraries inside the addon folder so that might be worth a try.

Another way to see what’s happening is by opening Godot through the terminal and opening the project, there should be some logs indicating of what’s going wrong.

(+1)

i solved it, my addon folder was under audio lol

Hello! Great work on the plug-in. Thank you for this. When exporting my Godot project, my videos aren't loading. Instead, I'm getting a gray screen til I press a button and my game runs (game runs with no issues). I've disabled library validation, enabled AppSandbox under Export > MacOS Project Options. Still no luck. Any guidance here? Thanks!

If your videos are playing in the editor, but not in the exported builds, it’s most likely that you didn’t add the video for formats to your export settings. By default Godot doesn’t put your videos in the finished export. It’s just a matter of adding ‘*.mp4’ (or any other video formats you use) to the expert settings for each platform you want to build for ;)

Thanks. Yeah, had those already as my pathways under the export tab. Been having real challenges today getting it to work. Been in it all afternoon, troubleshooting with AI best I can. Still showing a gray screen, even for dummy projects I open and test with the asset. Feel like it's probably a matter of one button not being pressed.

Have you tried exporting the twst room to see if that works?

Hello mate, thanks for the stuff, works way better than the built in videoplayer!

I have a question, cos i thought the preset to build for mac was inside the package but i dont see it, is there a guide on how to do it with your package?

Thanks and keep it up!!!

Het, thanks for using this Gdextension! What exactly do you mean with presets for Mac? :o

(1 edit)

Hey! I meant to build for IOS as it shows the pic of the apple there hhe, is that possible? cos I just see the preset for Windows/Linux/Android

(+1)

Ah, I see! Both MacOS for intel and the new arm processors are supported, iPhone isn’t at this moment due to Apple making it kind of difficult. For the test room you should be able to just create a MacOS one and export the project without (too many) issues. ;)

Any chance we are getting a precompiled addon that supports Apple Silicon?

What do you mean with Apple silicon exactly? MacOS is already supported.

(2 edits)

M4 instead of intel? Am I doing something wrong because I think I followed the steps correctly but whenever I hit play it doesnt even reach _init before it throws godot out of play mode (no errors or warnings). I have a script setup to set the path and call play on ready.

Macos support for arm was implemented first, it’s only since recent that there’s intel support. Knowing MacOS you might have to go to the libraries in the Gdextension folder and give permission to run them. Else you can run Godot through the terminal with the --verbose flag and open your project as that will give more information of what’s going wrong.

(+1)

I figured it out! All my samples just happened to be opus or av01. Found a h264 and it worked just fine. Great plugin!

I have buy last version,but my linux glibc version is 2.31,how to download gozen7.3?

I’ll make a Linux release at an older Ubuntu version, I’ll let it build overnight and add it to the available downloads when I can (evening now where I live).

Great! Thanks Voylin!

I had it running over night but there appears to be some issues when using an older version. Is there any way you can update your system? Which distro are you using at the moment?

Debian 11

I’ll look into more possible options for this but I’ll need a bit more time. However Debian 12 and 13 got released already so updating to a more recent version could solve this issue as well.

Thanks, voylin.

I have successfully run test_room on macos13 and Godot4.4.1, and the video and audio are loading normally. Complete the following steps:

1.brew install aom

2.brew install libx11

3. All dylibs under addons/gde-gozen/bin should be executed once and allowed to be completed safely by the system


But in the demo I remade myself, there was an issue where an error was reported when enable_audio=true. It ran seamlessly until it changed to false:

E 0:00:02:404   video_playback.gd:406 @ _open_audio(): Caller thread can't call this function in this node (/root). Use call_deferred() or call_thread_group() instead.

Request help

The same video was manually loaded using test_room, and both audio and video played normally. In the demo I wrote myself, as long as I checked to enable audio, it couldn't run

I am using GDE_GoZen-v8.3

In the next update AV1 support will be disabled so installing AOM won’t be needed anymore. There will most likely be a separate build with AV1 support which I’ll add here for the people who do use it though.

When exactly are you changing it to false? Whilst a video has been loaded? It’s difficult to know what exactly went wrong without seeing more of the code. Feel free to hop onto the discord server as that will probably be easier to troubleshoot where things are going wrong.

Works great, thanks! 

Would also be really cool if you could select different audio streams from a file.


A lot of the issues I complained about were fixed in the last update, thank you! I managed to actually play video this time.
But there are few comments I'd like to make:

- A lot of printing happens even when the debugging option is off. It probably shouldn't print anything. For example
"GoZenAudio: Stream duration: 223. 

GoZenAudio: Total size: 39374848."

- I had an issue in my project code where it would call «set_video_path()» multiple times. This made the plugin cause a crash. Probably trying to load a video while not finished with the last one. You should probably throw an error or ignore further calls until the current loading is ready.

- The "playback_ready" signal seems to not do anything. It is called when the player is first ready, but even if a video path is set in the inspector, variables like «_resolution» and the «get_video_frame_count()» function return zero. Calling «set_video_path()» will never emit this signal again.

- The video seeking functions, including signals for change of frame are working under frame numbers, but in most cases, video timestamps are more useful. You should have helper functions that take or return values in seconds, or at least a function to convert between frame count and seconds of video. It would need to take into account frame rate and such.

- I was interested in getting video dimensions in my project. But it would also be cool to have a function that returns a given frame of video given the frame number. Then we may use the Image class for further processing or inspection.

- I find it useful that the video frame scales with the space available to it, but could you have an option to constrain to the video's nominal resolution without stretching, like the native player does?

Yeah, the printing of the audio stuff is some personal debugging stuff which I accidentally left in.

I’ll look into adding extra safety to the set_video_path function. And for the other things I’ll see what I can do and try to get an update out in the next couple of days.

Hi. I've used Godot to make a transparent overlay program for streaming. Do you know if using FFmpeg through this addon would let me use transparent video files in my overlay?

(+1)

At this moment transparent videos aren’t supported yet, but there are plans to include support in the best future ;)

Oh hey, do you have any sample code on how to change the video being played dynamically?

I would like to have a different video playing in the scene holding VideoPlayback depending on how it was called.


I am trying to do this as an experiment:

func _ready() -> void:

    Dialogic.signal_event.connect(DialogicSignal)

    get_node("VideoPlayback").set_video_path("res://art/chars/Knight/mansuit.gif")

But this crashes the game when I try to run it.

Any tips?

Run Godot through the terminal with --verbose as this reveals what might be going wrong. I would recommend joining the Discord server as it’ll be easier to figure out a solution since I don’t have any samples readily available atm 😅

I’m planning on adding samples in the nest future though.

(+1)

I spent HOURS fighting ffmpeg. Thank you for making this!

(+1)

Enjoy ;)

Luckily you only spend hours xD I’m at years xD

it is only for 4.3? if yes Will you upgrade to 4.4? Also i brought on itch.io... out i got a error open the project, if this is only for 4.3 maybe this is the reason.Bug im getting teses Errors on testroom

Line 32:Could not find type "GoZenVideo" in the current scope. Line 128:Could not find type "GoZenVideo" in the current scope. Line 137:Could not find type "GoZenVideo" in the current scope. Line 114:Identifier "GoZenVideo" not declared in the current scope. Line 381:Identifier "GoZenAudio" not declared in the current scope.

It is compatible with all future 4.x version releases.

Because of the way GDExtensions work you often have to re-open the project and enable the GDExtension in the project settings on the first time after adding the addon.

Let me know if that worked or not.

(2 edits)

well is not working yet.. i already opened Ann reopenerd re imported and nothing



and i not the same results on windows and linux (pop os)

I do notice that you’re on MacOS, can you install aom with brew?

(1 edit)

Can you explain a lintel bit more???
Do a tutorial please, and once again i have here windows, and linux machines as well, and in all i not the same Problem, im using the default Godot Engine not the c# Version.

I do have a tutorial available ;) https://youtu.be/7h0Epsq6r7Q

Even with AOM instalei i still not the error

I'm disappointed with this addon. It looks as if it was artificially made to be hard to use.

Firstly, why is there a path to the developer's home directory in the zip structure? It's like "/../../home/voylin/Downloads/gde_gozen/". When I try to uncompress, my computer tries to place the files in a "voylin" folder that doesn't exist, so it fails. I have to uncheck the "respect file structure" option in the zip extractor, but then the files get all placed in the same folder, rather than their proper subfolders.

Second, the demo video talks about "Godot's native player doesn't allow you to seek in the video". This is wrong, you use the "stream_position"property for that. I didn't put much thought into it at first, because maybe the demo video is outdated, but then I notice that the methods and properties all have different names than their equivalent parts in the native player and that is a pain to refactor.

The Test Room project also shouldn't be its own project. I should be able to drop an example scene into my own project to experiment and not throw errors because there's a second "project.godot" file inside. The Test Room doesn't even come with an example video to make sure we have a working reference. When I tried to load my own video it didn't work.

When using the player node in my own project, dragging an MP4 into the file path didn't work either. It complains that "video isn't open".

I’m sorry that this is happening and it’s quite confusing since I’m not zipping this GDExtension on my machine so the fact that it say’s “voylin” is very confusing. O.O

The native player had the seek property for some time but only recently got the actual functionality for seeking in one of the recent PR’s. The reason why I used my own naming is because they are going to remove the native player in the future anyway to make an officially supported plugin.

The reason that the test room is a separate project is for the following reason: Video playback is difficult, having a reliable way to check performance outside of personal projects is a must to make certain that the video playback isn’t broken because of personal project stuff causing issues (which has been the case in the past).

If you struggle with getting it to work, there is our Discord server full of amazing people willing to help.

Sorry about your experience so far, I will check the whole zip file issue as I have no idea how that’s even possible. 😅 Right now I’m struggling with a lot of pain in my arm so it’ll take a bit of time though, so sorry for any delays.

I found out the possible cause of the zip location issue. I wanted to get a quick fix out for Windows users and did it manually on my pc and must have zipped it with the wrong settings, sorry about that. Will be fixed in the next update ;)

(1 edit)

Alright. I'll give the next update a try once it comes out. Thank you. BTW, is there a possibility, in an exported project, to load videos external to the exported datapack?

Yep, that was the only way for a very long time that this plugin could be used. It’s since the recent big update that video’s can be added to the project itself. Just make certain that you have the absolute path. ;)

I fixed the zipping issue in the latest update.

(3 edits)

This plugin has been amazing to use so far! Unfortunately I can't seem to export it without this error:

  ERROR: Failed to open '[project_file_path]/addons/gde_gozen/bin/windows_arm64/libaom.dll'.

  ERROR: editor/export/editor_export_platform.h:243 - GDExtension: Failed to copy shared object "[project_file_path]/addons/gde_gozen/bin/windows_arm64/libaom.dll".

Couldn't help but notice there's no folder in the bin named windows_arm64. 


I'm also having this issue with the demo project, so it's not my project that's the issue as far as I'm aware. I'm also on Godot 4.4.1 stable if that helps at all.

My export settings have the architecture set to x86_64, not arm64. Any idea on how I could fix this?

Are you using the latest build of the GDExtension? Unfortunately I have an arm injury making it painful to use my pc, I’ll have a look at this problem tomorrow to see if there’s a mistake in the building process.

Yeah, I'm currently using the most recent build available, still no luck exporting my project. There's no rush, so please take your time and let your arm heal if you need to! 

Are you building on Windows Arm or on x86_64?

the architecture is set to x86_64, i've tried exporting on the other options as well with no luck

So none of the exporting for Linux and Windows are working? Hmmm, I’ll look at what the problem might be.

This plugin is a godsend, I'm making a game with some FMV stuff and it's so much better using this than having to use the built-in video formats supported by Godot on its own.

It works amazing for the FMVs in my game and I was also able to get it working with 3D light projectors by putting the videoplayback node in a subviewport and updating the projector texture with the video image from the subviewport. 

However this isn't super great on performance as it has to update the projector image every frame (or in my case I have it update on a timer closer to 24 fps). Do you have any idea how I can make this work more efficiently? My way feels pretty hacky right now.

How is performance of your video playback inside of the test room?

The test room runs great, I think what's tanking performance is updating the projector image the way I am (which is probably not the best way but i don't know a better way).


This is the code I have that gets the video into the projector:


extends SpotLight3D

@export var video_viewport: SubViewport

var projector_texture:ImageTexture

var timer:Timer

var image:Image

func _ready() -> void:

    timer = Timer.new()

    timer.connect("timeout",update_image)

    #Only update the projector video every 1/24 of a second (the video framerate)

    timer.wait_time = 0.042

    add_child(timer)

    timer.start()

    image = video_viewport.get_texture().get_image()

    projector_texture = ImageTexture.create_from_image(image)

    light_projector = projector_texture


func update_image() -> void:

    image = video_viewport.get_texture().get_image()

    projector_texture.set_image(image)

Don’t use a timer for updating the image, not a great way of doing it. I don’t understand your code and what you’re trying to achieve very well to give better advice.

For updating the frame, use _process and use the delta for having the correct time to update the frame.

You might get more useful help in the discord server in the GoZen channel ;)

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?

(+1)

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!

(1 edit)

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.

(1 edit)

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.

(+1)

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 ;)

(1 edit)

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?

(+1)

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!