Unity Recorder broken after I installed Universal RP (2D project)

In a few words, in a 2D project,recording a gif worked perfectly until I installed URP. Now all gifs are completely black.

It’s apparently a known bug: Unity Recorder is not capturing Post Processing Volume in URP - #2 by cguertin

Is anyone working on this, one year after, and can we hope for a fix, soon?

Recorder is still completely unusable in 0a19.

  • no gif choice,
  • image sequence recorded from game view works but the images are flipped vertically and, no, there is no possibility to change that,
  • image sequence recoded from target camera doesn’t work, the images are black (using URP),
  • video recording doesn’t work, the error messages in console say:
VideoMediaEncoder::Create got unsupported format.
#0 GetStacktrace(int)
#1 DebugStringToFile(DebugStringToFileData const&)
#2 VideoMediaEncoder::Create(core::basic_string<char, core::StringStorageDefault<char> > const&, dynamic_array<Media::MediaEncoder::VideoTrackAttributes, 0ul> const&, dynamic_array<Media::MediaEncoder::AudioTrackAttributes, 0ul> const&)
#3 MediaEncoder_CUSTOM_Internal_Create(ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeArrayPtrOpaque*, ScriptingBackendNativeArrayPtrOpaque*)
#4  (Mono JIT Code) (wrapper managed-to-native) UnityEditor.Media.MediaEncoder:Internal_Create (string,UnityEditor.Media.VideoTrackAttributes[],UnityEditor.Media.AudioTrackAttributes[])
[MovieRecorder: Movie] Recording failed. Unable to create encoder: 'MediaEncoder: Output file creation failed for /media/anne/SSDSamsungT1/Faire/Unity Technologies/Projets/Personnels/Le Jeu sans Nom (2D tools - 2021.2)/Enregistrements/movie_001.mp4'
#0 GetStacktrace(int)
#1 DebugStringToFile(DebugStringToFileData const&)
#2 DebugLogHandler_CUSTOM_Internal_Log(LogType, LogOption, ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*)
#3  (Mono JIT Code) (wrapper managed-to-native) UnityEngine.DebugLogHandler:Internal_Log (UnityEngine.LogType,UnityEngine.LogOption,string,UnityEngine.Object)
#4  (Mono JIT Code) [RecordingSession.cs:126] UnityEditor.Recorder.RecordingSession:BeginRecording ()
#5  (Mono JIT Code) [RecorderController.cs:140] UnityEditor.Recorder.RecorderController:StartRecording ()
#6  (Mono JIT Code) [RecorderWindow.cs:876] UnityEditor.Recorder.RecorderWindow:StartRecordingInternal ()
#7  (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)
#8 mono_get_runtime_build_info
#9 mono_runtime_invoke
#10 mono_runtime_invoke
#11 scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool)
#12 ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)
#13 Scripting::UnityEditor::EditorApplicationProxy::Internal_CallUpdateFunctions(ScriptingExceptionPtr*)
#14 SceneTracker::Update()
#15 Application::TickTimer()
#16 MainMessageIteration(void*)
#17 g_main_context_dispatch
#18 g_main_context_dispatch
#19 g_main_loop_run
#20 gtk_main
#21 main
#22 __libc_start_main
#23 _start

Anyway, gif recorder makes Recorder useless for me.

@unitybru Is anyone looking into this?

In addition, Recorder is never fully deinstalled, the following warnings show up in the console on entering play mode, deleting the Recorder folder in Library doesn’t help:

The referenced script on this Behaviour (Game Object 'Unity-RecorderBindings') is missing!
#0 GetStacktrace(int)
#1 DebugStringToFile(DebugStringToFileData const&)
#2 ManagedMonoBehaviourRef::smile:oScriptRebuildWarning(Object*)
#3 void SerializableManagedRefTransfer::Transfer<SerializableManagedRefBackupGenerator>(Object*, SerializableManagedRef&, SafeBinaryRead&, bool)
#4 void MonoBehaviour::Transfer<SafeBinaryRead>(SafeBinaryRead&, bool)
#5 ManagedObjectHostTransferRedirect<MonoBehaviour>::Transfer(MonoBehaviour&, SafeBinaryRead&)
#6 SerializedFile::ReadObject(long, ObjectCreationMode, bool, TypeTree const**, bool*, Object&)
#7 PersistentManager::ReadAndActivateObjectThreaded(int, SerializedObjectIdentifier const&, SerializedFile*, bool, bool, PersistentManager::LockFlags)
#8 PersistentManager::LoadFileCompletelyThreaded(core::basic_string_ref<char>, long*, int*, int, PersistentManager::LoadFlags, LoadProgress&, PersistentManager::LockFlags)
#9 LoadSceneOperation::Perform()
#10 PreloadManager::ProcessSingleOperation()
#11 PreloadManager::Run()
#12 PreloadManager::Run(void*)
#13 Thread::RunThreadWrapper(void*)
#14 start_thread
#15 clone
The referenced script on this Behaviour (Game Object 'Unity-RecorderBindings') is missing!
#0 GetStacktrace(int)
#1 DebugStringToFile(DebugStringToFileData const&)
#2 ManagedMonoBehaviourRef::smile:oScriptRebuildWarning(Object*)
#3 void SerializableManagedRefTransfer::Transfer<SerializableManagedRefBackupGenerator>(Object*, SerializableManagedRef&, SafeBinaryRead&, bool)
#4 void MonoBehaviour::Transfer<SafeBinaryRead>(SafeBinaryRead&, bool)
#5 ManagedObjectHostTransferRedirect<MonoBehaviour>::Transfer(MonoBehaviour&, SafeBinaryRead&)
#6 SerializedFile::ReadObject(long, ObjectCreationMode, bool, TypeTree const**, bool*, Object&)
#7 PersistentManager::ReadAndActivateObjectThreaded(int, SerializedObjectIdentifier const&, SerializedFile*, bool, bool, PersistentManager::LockFlags)
#8 PersistentManager::LoadFileCompletelyThreaded(core::basic_string_ref<char>, long*, int*, int, PersistentManager::LoadFlags, LoadProgress&, PersistentManager::LockFlags)
#9 LoadSceneOperation::Perform()
#10 PreloadManager::ProcessSingleOperation()
#11 PreloadManager::Run()
#12 PreloadManager::Run(void*)
#13 Thread::RunThreadWrapper(void*)
#14 start_thread
#15 clone

Which version of Recorder are you using? You mention versions of Unity but not of Recorder.
Please send screenshots of your Recorder Window setup.

GIF support was removed in 3.0.0-pre.1

BTW I just managed to export a GIF in Recorder 2.5.5 with Unity 2019.4.23f1 with a Target Camera after having created a new URP project.

I’ve never seen your issue with RecorderBindings

The only available version of Recorder in 2021.2 is precisely “Version 3.0.0-pre.1 - April 21, 2021”.

I have removed Recorder already, I won’t put it back unless you add gif support again in the future, or, could you provide me with a version older than 3.0.0.-pre.1?. :slight_smile:

Installing Recorder and deinstalling it might trigger the RecorderBinding warning.

You can install 2.5.5 from the Package Manager window.

Didn’t I mention that the only available version of Recorder in 2021.2 is 3.0.0?

I assumed you knew how to use the Package Manager.

Then find Recorder and install 2.5.5

Are you kidding me?

7220638--868342--screenshot1.png
Select the last option in the popup comes up when you hit the “+” button.

Well, thank you for the tip. I didn’t know we could install packages that were not listed in “Previous Version”. Good to know.

I tried it in a 3D project and this version works with URP; I need to test it with a 2D project now. :thumb up:

1 Like

Doesn’t work in a 2D project.

With “Camera: MainCamera”, I get this:

7220887--868441--gif_animation_006.gif

and with “Camera: active camera”, I get this:

7220887--868444--gif_animation_007.gif

Game view:

Settings:

I deinstalled Recorder 2.5.5 and didn’t get the warning about RecorderBndings this time; I get it’s something linked to version 3.0.0.

Thanks for your efforts @ ! :slight_smile:

I’m still having this warning, how do I get rid of it?

The referenced script on this Behaviour (Game Object 'Unity-RecorderBindings') is missing!
#0 GetStacktrace(int)
#1 DebugStringToFile(DebugStringToFileData const&)
#2 ManagedMonoBehaviourRef::smile:oScriptRebuildWarning(Object*)
#3 void MonoBehaviour::Transfer<StreamedBinaryRead>(StreamedBinaryRead&, bool)
#4 ManagedObjectHostTransferRedirect<MonoBehaviour>::Transfer(MonoBehaviour&, StreamedBinaryRead&)
#5 SerializedFile::ReadObject(long, ObjectCreationMode, bool, TypeTree const**, bool*, Object&)
#6 PersistentManager::ReadAndActivateObjectThreaded(int, SerializedObjectIdentifier const&, SerializedFile*, bool, bool, PersistentManager::LockFlags)
#7 PersistentManager::LoadFileCompletelyThreaded(core::basic_string_ref<char>, long*, int*, int, PersistentManager::LoadFlags, LoadProgress&, PersistentManager::LockFlags)
#8 LoadSceneOperation::Perform()
#9 PreloadManager::ProcessSingleOperation()
#10 PreloadManager::Run()
#11 PreloadManager::Run(void*)
#12 Thread::RunThreadWrapper(void*)
#13 start_thread
#14 clone

Edit: it’s linked to the scene where the recorder is usually used:

You know what to do now. :slight_smile: