Giter Site home page Giter Site logo

Comments (46)

ash3D avatar ash3D commented on June 29, 2024 2

“InterlockedIncrement” used inside WRL which is part of Windows SDK. UE 4.15+ starts to hide Windows platform atomics such as “InterlockedIncrement” which led to problems. Fortunately, only subset of WRL (namely, ComPtr) required for UEVideoRecorder, thus it is possible to include only required part of WRL (and that part does not use “InterlockedIncrement”). I have updated repository with that fix.

from uevideorecorder.

yvasquezmonoku avatar yvasquezmonoku commented on June 29, 2024 2

Hello again! Again, thank you so much ash3D for all the help and patience I've had. I told you that I already managed to make everything work as I wanted !. Now I already created the guide document that I had told you, but I do not know where I should upload it, while uploading it here. Again, Thank you very much for all the help. Regards !!
VideoRecorder_Guie.docx

from uevideorecorder.

telecom999 avatar telecom999 commented on June 29, 2024 1

@ash3D The latest plugin version is good. Thank you very much!
@JasonQWJ yes, please use the the latest plugin version , the recorded video can be played with VLC and Windows Media Player . for the old version, VLC can not play the recorded vedio , Windows Media Player can play it correctly.

from uevideorecorder.

SuperMustard avatar SuperMustard commented on June 29, 2024 1

@ash3D
Hi ash3D,
It works well now, thank you for your amazing plugin.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024 1

@Aqiang223
Hi Aqiang223.
Try older boost version such as 1.65.1.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

According to UE4 documentation Plugins directory should be located at project root directory, not in Content folder.

This plugin requires additional libraries to be installed:

  1. Boost. Download the latest version and extract archive. Then create directory named boost at /UE4 root/Engine/Source/ThirdParty and create there file boost.Build.cs with the following content:
using UnrealBuildTool;

public class boost : ModuleRules
{
    public boost(TargetInfo Target)
    {
        Type = ModuleType.External;

        const string LibraryPath = "BOOST_ROOT";

        PublicIncludePaths.Add(LibraryPath);
    }
}

where BOOST_ROOT is path to boost (it should have the form of .../boost_1_xx_x).

  1. VideoRecorder.
  • Clone repository (including submodule), open solution in Visual Studio 2015, select Release configuration and target platform (for example x64). Platform must match the platform of application being developed in UE4.

  • Add BOOST_ROOT to VC++ Directories/IncludeDirectories in property manager to Microsoft.Cpp.PLATFORM.user propery. Boost no longer required for VideoRecorder library. But it still used by plugin itself.

  • Download FFmpeg SDK, add paths to header and library files to corresponding VC++ Directories (IncludeDirectories and Library Directories) in property manager in Visual Studio to the same property as boost in previous step.

  • Build the solution.

  • Create directory with name VideoRecorder at /UE4 root/Engine/Source/ThirdParty, create there file VideoRecorder.Build.cs with the following content:

using UnrealBuildTool;
using System.IO;

public class VideoRecorder : ModuleRules
{
    public VideoRecorder(TargetInfo Target)
    {
        Type = ModuleType.External;

        const string LibraryPath = "PATH_TO_VIDEO_RECORDER_REPO/VideoRecorder";

        PublicIncludePaths.Add(Path.Combine(LibraryPath, "include"));

        if (Target.Platform == UnrealTargetPlatform.Win64)
        {
            PublicLibraryPaths.Add(Path.Combine(LibraryPath, "lib", "x64", "Release"));
            PublicAdditionalLibraries.Add("VideoRecorder.lib");
        }
    }
}

where PATH_TO_VIDEO_RECORDER_REPO is path to cloned repository.

Also do not forget to place FFmpeg dlls at appropriate location (for example along to application .exe this plugin is used with).

Note that this plugin has some DX11-specifiic performance optimizations so using it with other rendering APIs can result in poor performance.

from uevideorecorder.

rlfqudxo avatar rlfqudxo commented on June 29, 2024

Unable to load module 'C:/Users/a/Documents/Unreal Projects_Use/recordetest/Plugins/UEVideoRecorder-master/Binaries/Win64/UE4Editor-UEVideoRecorder.dll' because the file couldn't be loaded by the OS.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

This is probably due to lack of access to FFmpeg dlls. It makes sense to put FFmpeg dlls at Windows/System32 directory on development machine in order it to be accessible to UE4 editor for all projects and distribute them with packaged application to end users.

from uevideorecorder.

JasonQWJ avatar JasonQWJ commented on June 29, 2024

@ash3D I got problem follow the above method.

1>------ Rebuild All started: Project: UEVideo, Configuration: Development_Editor x64 ------
1> Cleaning UEVideoEditor Binaries...
1> Creating makefile for UEVideoEditor (no existing makefile)
1> Performing full C++ include scan (no include cache file)
1> Parsing headers for UEVideoEditor
1> Running UnrealHeaderTool "C:\Users\Jason\Documents\Unreal Projects\UEVideo\UEVideo.uproject" "C:\Users\Jason\Documents\Unreal Projects\UEVideo\Intermediate\Build\Win64\UEVideoEditor\Development\UEVideoEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -installed
1> Reflection code generated for UEVideoEditor in 1.9439201 seconds
1> Performing 13 actions (4 in parallel)
1> [2/13] Resource ModuleVersionResource.rc.inl
1> UEVideoRecorder.generated.cpp
1> Module.UEVideoRecorder.cpp
1> PCH.UEVideo.cpp
1> [5/13] Resource PCLaunch.rc
1> [6/13] Resource PCLaunch.rc
1>C:\Program Files (x86)\Windows Kits\8.1\include\winrt\wrl\implements.h(2033): error C3861: 'InterlockedIncrement': identifier not found
1>C:\Program Files (x86)\Windows Kits\8.1\include\winrt\wrl\implements.h(2040): error C3861: 'InterlockedDecrement': identifier not found
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/config/stdlib/dinkumware.hpp(99): warning C4668: '_HAS_NAMESPACE' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\Program Files (x86)\Windows Kits\8.1\include\winrt\wrl\implements.h(2033): error C3861: 'InterlockedIncrement': identifier not found
1>C:\Program Files (x86)\Windows Kits\8.1\include\winrt\wrl\implements.h(2040): error C3861: 'InterlockedDecrement': identifier not found
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/config/stdlib/dinkumware.hpp(99): warning C4668: '_HAS_NAMESPACE' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/throw_exception.hpp(3): warning C4668: 'GNUC' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/throw_exception.hpp(3): warning C4668: 'GNUC_MINOR' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/iostreams/detail/resolve.hpp(68): warning C4668: 'BOOST_IOSTREAMS_GCC' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/throw_exception.hpp(3): warning C4668: 'GNUC' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/throw_exception.hpp(3): warning C4668: 'GNUC_MINOR' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\Users\Jason\Documents\Unreal Projects\UEVideo\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(26): warning C4003: not enough actual parameters for macro 'DECL_MEMBER_FUNCTION_TRAITS'
1>C:\Users\Jason\Documents\Unreal Projects\UEVideo\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(261): warning C4238: nonstandard extension used: class rvalue used as lvalue
1>C:\Users\Jason\Documents\Unreal Projects\UEVideo\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(304): warning C4458: declaration of 'context' hides class member
1> D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\VideoRecorder\include/VideoRecorder.h(31): note: see declaration of 'CVideoRecorder::context'
1>D:\Program Files (x86)\UE_4.15\Engine\Source\ThirdParty\boost\boost/iostreams/detail/resolve.hpp(68): warning C4668: 'BOOST_IOSTREAMS_GCC' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1> UEVideoGameModeBase.cpp
1> UEVideo.cpp
1> UEVideo.generated.cpp
1> [10/13] Link UE4Editor-UEVideo.lib
1> Creating library C:\Users\Jason\Documents\Unreal Projects\UEVideo\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UEVideo.lib and object C:\Users\Jason\Documents\Unreal Projects\UEVideo\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UEVideo.exp
1>ERROR : UBT error : Failed to produce item: C:\Users\Jason\Documents\Unreal Projects\UEVideo\Plugins\UEVideoRecorder\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UEVideoRecorder.lib
1> Total build time: 31.57 seconds (Local executor: 0.00 seconds)
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets(46,5): error MSB3073: The command ""D:\Program Files (x86)\UE_4.15\Engine\Build\BatchFiles\Rebuild.bat" UEVideoEditor Win64 Development "C:\Users\Jason\Documents\Unreal Projects\UEVideo\UEVideo.uproject" -waitmutex" exited with code -1.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

from uevideorecorder.

bigbenzhao avatar bigbenzhao commented on June 29, 2024

Hi,ash3d:
I got the same problem just like JasonQWJ .After I added boost and VideoRecorder solution's build.cs to engine, I can generate the uproject which is installed the UEVideoRecorder and got the VS solution. But when I build the solution , the error C:\Program Files (x86)\Windows Kits\8.1\include\winrt\wrl\implements.h(2033): error C3861: “InterlockedIncrement”:Identifier not found happened, but I can‘t find any code which is using InterlockedIncrement ,so is there any problem with the library solution VideoRecoder will cause this problem? Or there is the system problems?

My operate system is Win10 and VS version is VS2015, besides the programing platform of VideoRecoder I chosed is Win8.1 Kit and v140 not v141.
My UE4 editor version is 4.15.3

So if you have any idea about this problem ,please help me , thank you very much.

from uevideorecorder.

JasonQWJ avatar JasonQWJ commented on June 29, 2024

Thank you @ash3D
I compiled the success, but I recorded the video player to very fast.
My setting:
image

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

In order to set veryfast performance preset provide non-negative crf (28 is default) and set performance to 7. Crf value -1 force default for both crf and performance.

from uevideorecorder.

pamz3ddesigns avatar pamz3ddesigns commented on June 29, 2024

Hi ash3D
Can You make a video about adding this plugin to the Unreal engine? if you do, it was very helpful for me and others as well.

from uevideorecorder.

telecom999 avatar telecom999 commented on June 29, 2024

Hi ash3D!
Thanks your great work!
I have successfully recorded UE4 video through your plugin. it is used soft encoder.
I change the encoder to NVENC encoder, I can record the video in UE4Editor environment.
After I package the game , or run it at alone windows in UE4Editor, When I startrecord, the os prints "This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information" , and then the app stops run.
Do you test your Plugin using NVENC encoder?

I only change the VideoRecorder.cpp :
#define CODEC_ID AV_CODEC_ID_HEVC
//const AVCodec *const CVideoRecorder::codec = (avcodec_register_all(), avcodec_find_encoder(CODEC_ID));
const AVCodec *const CVideoRecorder::codec = (avcodec_register_all(), avcodec_find_encoder_by_name("nvenc_hevc"));
//const AVCodec *const CVideoRecorder::codec = (avcodec_register_all(), avcodec_find_encoder_by_name("nvenc_h264"));

thanks !

from uevideorecorder.

JasonQWJ avatar JasonQWJ commented on June 29, 2024

@telecom999 Did the video you recorded look normal?
I recorded out, the playback speed is very fast.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@telecom999 Thanks for the idea of hardware encoding.
I was able to reproduce behavior you described. The reason for the different behavior in UE4Editor environment and standalone window/packaged game turned out to be different frame format being used (8 bit in editor, 10 bit for standalone/packaged). I encountered this problem previously with software encoders too and implemented a workaround. But it turned out that this workaround is in not complete. I have fixed that as well as some other issues and update the repository.

from uevideorecorder.

SuperMustard avatar SuperMustard commented on June 29, 2024

@ash3D
Hi ash3D!
I got an error follow the above method.
error CS1729: 'UnrealBuildTool.ModuleRules' does not contain a constructor that takes 1 arguments in File UEVideoRecorder.Build.cs

could you help with this?

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@SuperMustard Wich UE4 version do you use?
The plugin targets UE4.15+, if you have older version try to replace line public UEVideoRecorder(ReadOnlyTargetRules Target) : base(Target) in UEVideoRecorder.Build.cs with public UEVideoRecorder(TargetInfo Target).

from uevideorecorder.

SuperMustard avatar SuperMustard commented on June 29, 2024

@ash3D
Hi ash3D!
Thank you for your help.

I am using UE4.15.3. After applying the change you mentioned, there is no more error.
However, I still can't record the video.
default

maybe it's because I don't use the plugin in a correct way.
Thanks again.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@SuperMustard Hi SuperMustard.
Look at Log output. It can contain possible errors descriptions.
Maybe you forget to set VideoRecordGameViewportClient in UE4 project settings? Omitting that will result in ignoring any video record operations.

from uevideorecorder.

Wilson-w avatar Wilson-w commented on June 29, 2024

@SuperMustard
Hi, SuperMustard
image
I set VideoRecordGameViewportClient in UE4 project setting , but still can not record .
Is it because I don't use the plugin in a correct way ?

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@xiangbw What does the Log print?

from uevideorecorder.

Wilson-w avatar Wilson-w commented on June 29, 2024

@ash3D
Hi,ash3D
I have already sloved the previous question , but now a new problem have appeared at packaging.
[2018.03.05-02.07.31:119][389]UATHelper: Packaging (Windows (64-bit)): xgConsole: D:\work\BVIV_Engine_WBX\Development\Engine\Plugins\UEVideoRecorder\Intermediate\Build\Win64\BVIVApp\Inc\UEVideoRecorder\UEVideoRecorder.generated.cpp(85): error C2027: use of undefined type 'UEngine'
[2018.03.05-02.07.31:119][389]UATHelper: Packaging (Windows (64-bit)): xgConsole: D:\work\BVIV_Engine_WBX\Development\Engine\Source\Runtime\Engine\Classes\Engine/GameViewportClient.h(63): note: see declaration of 'UEngine'
I have tried adding the "Engine.h" to the "UEVideoRecorder.cpp" . But it's useless.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@xiangbw
Hi XiangBW.
What UE version do you use? And what packaging settings (development, shipping)?
"Engine.h" has already been included in "UEVideoRecorderPrivatePCH.h" which is included in "UEVideoRecorder.cpp", so adding it to "UEVideoRecorder.cpp" once more should not have any effect.

from uevideorecorder.

Aqiang223 avatar Aqiang223 commented on June 29, 2024

Hi,ash3D. @ash3D
I got problem follow the above method.
1>F:\plq\boost_1_67_0\boost/type_traits/is_complete.hpp(65): error C2059: syntax error:“”
1>F:\plq\boost_1_67_0\boost/type_traits/is_complete.hpp(62): error C2238: unexpected mark located ";"
Before
1>F:\plq\boost_1_67_0\boost/type_traits/is_complete.hpp(65): error C2988: Unrecognized template declaration/definition

from uevideorecorder.

NCMcClure avatar NCMcClure commented on June 29, 2024

Okay, so I've got everything working finally! I'm forever thankful that you made this plugin... But I've got two pretty big questions.

  1. How do I change the output path for the video? When typing in a directory into the "filename" field I get the error:

VideoRecorder: Error: Fail to create file
VideoRecorder: Error: for video "
VideoRecorder: Error: ‪C:\Users\User\Videos\test.mp4
VideoRecorder: Error: ":
VideoRecorder: Error: Invalid argument
VideoRecorder: Error: .

Yet when I just type in a filename such as test.mp4 with no directory, the video is saved in Engine\Binaries\Win64 and not even in my project directory... Is this how it's supposed to work?

  1. Why don't the encoded videos work with Unreal Engine 4? No matter what format I try, UE4's media player refuses to play the video. How can I go about making this work? I feel like it's pretty critical that the videos we encode in UE4... can be played back in UE4.

UPDATE:

  1. So I got the file path working by using forward slashes ( / ) instead of backslashes ( \ ). I sort of wish that was documented somewhere, but nevertheless, it works! So if anyone else was confused by that, then there's the solution.

  2. Okay, so along the same lines as the other problem, change the actual file extension to something else besides .mp4 will result in some videos working with the Media Player in Unreal. I changed the file extension to .wmv and it successfully played in the Media Player, however it's only at 30fps.

Again, I sort of wish this was documented somewhere, as this plugin is really one of a kind. Ash, you've made such an awesome and incredibly useful plugin, why let it go so unnoticed with such little documentation?

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@XilentRival
This plugin was originally developed for specific project and placed on GitHub for development facilities. I didn't expect much interest from other people at that time, thus documentation is poor. Another point is than I'm not actively using and developing it now and some subtle details such as / vs \ in paths are mostly undiscovered.
Unreal's Media Player has some restrictions regarding various formats support, I faced this problem with several videos (which was not recorded with this plugin) on player's early version. But I didn't try to play plugin's generated files in Media Player, so I haven't info on which formats/settings is compatible with Media Player.

Generally I agree that it is good idea to add more documentation and track known limitations and issues reported by users in single place. I'll probably do something in that regard in future when I'll take up the plugin development next time (I have several minor ideas which I plan to implement in next version sometime). And I'll probably then fix \ problem.

from uevideorecorder.

yvasquezmonoku avatar yvasquezmonoku commented on June 29, 2024

Hello, thank you in advance for the great contribution with this plugin. I also apologize for my bad English.
Following the tutorial found here, I still can not get the plugin to work on my project.
These are the steps I do once I create the boot and videorecoder folders in the UE directory.

  1. I open the videoRecorder solution, and in properties I add the ffmpeg directories that you download from https://ffmpeg.org/
    1
    2

  2. Then I recompile the whole solution which it does but it gives me some warnings. But since I do not have errors, I continue with the installation.
    3
    4

  3. I am directed to my project and add the plugin in the corresponding folder. then I open the solution and add the ffmpeg directory as I did with the videorecorder solution.
    5
    6

  4. At the time I recompile my solution and it gives me the following errors.
    7
    I do not really know what I'm doing wrong. And put the dll of ffmpeg in the folder system32 and installed the sdk in my visual as it was said above. These are my installed add-ons.
    8
    Could someone help me, telling me what I'm doing wrong? Many thanks in advance for the help and sorry for the inconvenience

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

Hello, @yvasquezmonoku
Your English is clear in contradistinction to text in screenshots ). Though by dint of google translate + error codes I got it.

In step 1 your VC++ Directories configuration is somewhat redundant. You can leave it untouched from repository and add FFMPEG_ROOT macro in Microsoft.Cpp.x64.user property sheet instead.
image

In step 3 there is no need to add ffmpeg directory to UE project settings. All the needed configuration done in VideoRecorder.Build.cs.

Error in step 4 is probably due to toolchain version mismatch between VideoRecorder solution and UE project. Try to choose v140 toolset for VideoRecorder if your UE project uses VS 2015 to compile (note that it can still been using VS 2017 IDE for editing).
image
You need to install VC++ 2015 toolset to be able to do this - check this box (you don't have to do this if you have VS 2015 installed):
image
Or alternatively build VideoRecorder with VS 2015.

from uevideorecorder.

yvasquezmonoku avatar yvasquezmonoku commented on June 29, 2024

Thank you very much for all the help, a thousand apologies for the screenshots that are not in English. Following what you tell me, I get the error.
Libavutil / avconfig.h No such file or directory. Looking for the file manually in the ffmepg SDK I can not find it, then search the internet and find it. It is the following
https://github.com/mooncatventures-group/ffmpegDecoder
the only thing I do is copy the file in the folder that the visual asks me for. but now I get another error where it says that it can not open the input file avcodec.lib with the code LNK1181, I do not know if this error is because of the Libavutil / avconfig.h that was downloaded.
Again, thank you very much for all the help.
these are the alerts generated by me and the error
9

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@yvasquezmonoku
avconfig.h should be in FFmpeg SDK at the path FFMPEG_ROOT/include/libavutil, I just checked it with latest FFmpeg version (ffmpeg-4.0-win64-dev/include/libavutil/avconfig.h).
Failure to open avcodec.lib is due to improper FFmpeg lib path.

Considering you had already successfully built VideoRecorder earlier, you probably break something with latest changes. If you moved to specifying FFmpeg paths via FFMPEG_ROOT macro in property sheet, check back the path. And do not forget to save property sheet after editing.

from uevideorecorder.

yvasquezmonoku avatar yvasquezmonoku commented on June 29, 2024

Thank you very much for all your help and patience.
Looking at your message I notice that your FFMPEG sdk has a folder called include and I assume that it will also have a lib call. I downloaded the FFMPEG sdk here.
https://ffmpeg.org/
and I download in the green button.
1
But when I unzip the sdk I do not get the lib folder nor the include folder.
2
Maybe all these errors are due to the fact that I have not completed my FFMPEG sdk. Previously I managed to compile it, but it was because I downloaded the library from another repository https://github.com/mooncatventures-group/ffmpegDecoder
to complete the files that I needed.
But I want to believe that when mixing two different repositories many errors occur.
I would be very grateful if you told me where you downloaded the full FFMPEG sdk, and if it is the same part of where I downloaded it (https://ffmpeg.org/) in which option you gave it to download it completely.

Now, as I commented, I managed to compile the VideoRecorder solution again, downloading the remaining files that I was asked for, but when trying to compile my project where I installed the plugin, the following errors are displayed. Which I think are due to the mix of the 2 different FFMPEG repositories.
3
Again, thank you very much and apologize for all this inconvenience.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@yvasquezmonoku you are right, FFmpeg SDK should have both include and lib directories.
What you downloaded from https://ffmpeg.org/ is actually not SDK but rather FFmpeg sources. It's intended if you want to build FFmpeg manually by yourself instead of using ready build.
Instead of pressing green button you should select Windows build at the same page below:
image
It will directed you to FFmpeg Builds:
image
Here you can download both SDK (Dev) for building and Shared to get dlls which are required at runtime.

from uevideorecorder.

yvasquezmonoku avatar yvasquezmonoku commented on June 29, 2024

hello Thank you again for all the support. I downloaded the sdk and finally I was able to compile my project. But when trying to open it, the following message.
11
(My operating system is windows 10 Pro 64 bit)
When compiling again in visual, I do not get errors. I only get a few alerts, but I think that these should not influence.

  1. alerts on videorecorder.sln
    13
  2. Alerts in my project of unreal
    12
    To be sure that I am doing everything right, I will show my configuration. Again, a thousand thanks for all the help, I would not have been able to get here without her.
    14
    15

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@yvasquezmonoku
Looks like it can't find FFmpeg dlls.
Download FFmpeg build with Shared Linking (at the same place where you downloaded SDK) and copy dlls to location where OS can find it during plugin module loading (e.g. Binaries/Win64 folder).
image
Exact dll names can differ depending on FFmpeg version.

In fact the error message is too generic to find out the actual reason with certainty. Look at UE log, it can contain more details.

Note on boost.Build.cs content: BOOST_ROOT is intended to be replaced with the actual path to boost. Though seeing you successfully build the plugin, the path has been provided to compiler somewhere else (maybe via property sheet) thus making boost.Build.cs redundant.
Anyway, it should not affect anything given you able to build the plugin.

from uevideorecorder.

yvasquezmonoku avatar yvasquezmonoku commented on June 29, 2024

Hi. Thank you very much for all the help. It turns out that I copied the dlls as you told me and it worked!
But at the time I do not know how to make it work, seeing the comments above I see that I must configure VideoRecordGameViewportClient in UE4 project setting. and to start making the recording I call the start record function. But two questions come up.

  1. In this function I am not clear that I must connect to the target.
    16
  2. Can I call this function in umg by means of a button?

A thousand thanks for all the help given. I really feel in debt with all the help I have. I would like to be able to make a document explaining all the procedure that you do to make the complement work and for future users do not have difficulties. I hope you allow me to do it.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@yvasquezmonoku

  1. You should create VideoRecordActor somewhere if you want to access plugin functionality via blueprints (it is not needed if you are using C++). That actor should be connected to Target pin. If StartRecord node is inside VideoRecordActor blueprint, leave Target as self.

  2. All that needed is to somehow wire button click event to StartRecord node. This may be helpful:

Also note that default performance settings for software encoding are not designed for realtime encoding, especially with HEVC codec. You may ended up with unbounded RAM consumption if CPU is unable to keep up - unprocessed frames will be queued up and it will take a while to finish processing them after recording been stopped.
So be aware of it and if you notice continuously increasing of RAM usage or delays after StopRecord, consider to select other Preset (e.g. Fast).
You may also try hardware encoding (StartRecordNV). The performance problem is not so relevant in that case. The plugin currently support hardware encoding on NVIDIA GPUs, so attempt to using it on unsupported GPUs will fail.

I would like to be able to make a document explaining all the procedure that you do to make the complement work and for future users do not have difficulties. I hope you allow me to do it.

It would be great.
In fact I didn't create wiki page, someone created it based on my first comment in this issue.

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@yvasquezmonoku thanks for the guide!
I've inserted link to it in readme and wiki.

from uevideorecorder.

juneleung avatar juneleung commented on June 29, 2024

Hello, my unreal version is 4.20. After i copy the UEVideoRecorder in "Plugins" in the uproject folder, I tried to open the unreal project, but it tell me is fail to rebuild it. I tried to check the log file, file said:

Log file open, 10/31/19 11:02:12
LogWindows: Failed to load 'aqProf.dll' (GetLastError=126)
LogWindows: File 'aqProf.dll' does not exist
LogWindows: Failed to load 'VSPerf140.dll' (GetLastError=126)
LogWindows: File 'VSPerf140.dll' does not exist
LogWindows: Failed to load 'VtuneApi.dll' (GetLastError=126)
LogWindows: File 'VtuneApi.dll' does not exist
LogWindows: Failed to load 'VtuneApi32e.dll' (GetLastError=126)
LogWindows: File 'VtuneApi32e.dll' does not exist
LogInit: Display: Running engine for game: test11
LogPlatformFile: Not using cached read wrapper
LogTaskGraph: Started task graph with 5 named threads and 35 total threads with 3 sets of task threads.
LogStats: Stats thread started at 0.409858
LogD3D11RHI: Loaded GFSDK_Aftermath_Lib.x64.dll
LogICUInternationalization: Display: ICU TimeZone Detection - Raw Offset: +8:00, Platform Override: ''
LogPluginManager: Mounting plugin Paper2D
LogPluginManager: Mounting plugin AISupport
LogPluginManager: Mounting plugin LightPropagationVolume
LogPluginManager: Mounting plugin CLionSourceCodeAccess
LogPluginManager: Mounting plugin CodeLiteSourceCodeAccess
LogPluginManager: Mounting plugin GitSourceControl
LogPluginManager: Mounting plugin KDevelopSourceCodeAccess
LogPluginManager: Mounting plugin NullSourceCodeAccess
LogPluginManager: Mounting plugin PerforceSourceControl
LogPluginManager: Mounting plugin SubversionSourceControl
LogPluginManager: Mounting plugin UObjectPlugin
LogPluginManager: Mounting plugin VisualStudioCodeSourceCodeAccess
LogPluginManager: Mounting plugin VisualStudioSourceCodeAccess
LogPluginManager: Mounting plugin XCodeSourceCodeAccess
LogPluginManager: Mounting plugin AssetManagerEditor
LogPluginManager: Mounting plugin CryptoKeys
LogPluginManager: Mounting plugin DataValidation
LogPluginManager: Mounting plugin FacialAnimation
LogPluginManager: Mounting plugin GameplayTagsEditor
LogPluginManager: Mounting plugin MacGraphicsSwitching
LogPluginManager: Mounting plugin MeshEditor
LogPluginManager: Mounting plugin MobileLauncherProfileWizard
LogPluginManager: Mounting plugin PluginBrowser
LogPluginManager: Mounting plugin SpeedTreeImporter
LogPluginManager: Mounting plugin DatasmithContent
LogPluginManager: Mounting plugin AlembicImporter
LogPluginManager: Mounting plugin AppleImageUtils
LogPluginManager: Mounting plugin AppleVision
LogPluginManager: Mounting plugin BackChannel
LogPluginManager: Mounting plugin CharacterAI
LogPluginManager: Mounting plugin GeometryCache
LogPluginManager: Mounting plugin HTML5Networking
LogPluginManager: Mounting plugin ProxyLODPlugin
LogPluginManager: Mounting plugin MagicLeap
LogPluginManager: Mounting plugin MagicLeapEmulator
LogPluginManager: Mounting plugin MagicLeapMedia
LogPluginManager: Mounting plugin AndroidMedia
LogPluginManager: Mounting plugin AvfMedia
LogPluginManager: Mounting plugin ImgMedia
LogPluginManager: Mounting plugin LinearTimecode
LogPluginManager: Mounting plugin MediaCompositing
LogPluginManager: Mounting plugin MediaPlayerEditor
LogPluginManager: Mounting plugin WmfMedia
LogPluginManager: Mounting plugin TcpMessaging
LogPluginManager: Mounting plugin UdpMessaging
LogPluginManager: Mounting plugin ActorSequence
LogPluginManager: Mounting plugin LevelSequenceEditor
LogPluginManager: Mounting plugin MatineeToLevelSequence
LogPluginManager: Mounting plugin NetcodeUnitTest
LogPluginManager: Mounting plugin NUTUnrealEngine4
LogPluginManager: Mounting plugin OnlineSubsystemGooglePlay
LogPluginManager: Mounting plugin OnlineSubsystemIOS
LogPluginManager: Mounting plugin OnlineSubsystem
LogPluginManager: Mounting plugin OnlineSubsystemNull
LogPluginManager: Mounting plugin OnlineSubsystemUtils
LogPluginManager: Mounting plugin LauncherChunkInstaller
LogPluginManager: Mounting plugin AndroidDeviceProfileSelector
LogPluginManager: Mounting plugin AndroidMoviePlayer
LogPluginManager: Mounting plugin AndroidPermission
LogPluginManager: Mounting plugin AppleMoviePlayer
LogPluginManager: Mounting plugin ArchVisCharacter
LogPluginManager: Mounting plugin AudioCapture
LogPluginManager: Mounting plugin CableComponent
LogPluginManager: Mounting plugin CustomMeshComponent
LogPluginManager: Mounting plugin EditableMesh
LogPluginManager: Mounting plugin ExampleDeviceProfileSelector
LogPluginManager: Mounting plugin GoogleCloudMessaging
LogPluginManager: Mounting plugin ImmediatePhysics
LogPluginManager: Mounting plugin IOSDeviceProfileSelector
LogPluginManager: Mounting plugin LinuxDeviceProfileSelector
LogPluginManager: Mounting plugin LocationServicesBPLibrary
LogPluginManager: Mounting plugin MobilePatchingUtils
LogPluginManager: Mounting plugin Ansel
LogPluginManager: Mounting plugin OculusVR
LogPluginManager: Plugin shader directory ../../../Engine/Plugins/Runtime/Oculus/OculusVR/Shaders found
LogPluginManager: Mapping shader source directory ../../../Engine/Plugins/Runtime/Oculus/OculusVR/Shaders to virtual directory /Plugin/OculusVR
LogPluginManager: Mounting plugin PhysXVehicles
LogPluginManager: Mounting plugin ProceduralMeshComponent
LogPluginManager: Mounting plugin RuntimePhysXCooking
LogPluginManager: Mounting plugin SteamVR
LogPluginManager: Mounting plugin WindowsMoviePlayer
LogPluginManager: Mounting plugin UEVideoRecorder
LogStreaming: Display: Took  0.232s to configure plugins.
LogInit: Warning: Incompatible or missing module: UEVideoRecorder
Running C:/Program Files/Epic Games/UE_4.20/Engine/Binaries/DotNET/UnrealBuildTool.exe Development Win64 -Project="C:/Users/84703/Desktop/test11/test11.uproject" -TargetType=Editor -Progress -NoHotReloadFromIDE
@progress push 5%
@progress pop
Building 4 actions with 12 processes...
  @progress 'Compiling C++ source code...' 0%
  @progress 'Compiling C++ source code...' 25%
  [1/4] Module.UEVideoRecorder.gen.cpp
  C:\Users\84703\Desktop\boost_1_71_0\boost/type_traits/detail/config.hpp(85): error C4668: '__clang_major___WORKAROUND_GUARD' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
  C:\Users\84703\Desktop\boost_1_71_0\boost/type_traits/detail/config.hpp(85): error C4668: '__clang_major__' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
  C:\Users\84703\Desktop\boost_1_71_0\boost/iostreams/detail/resolve.hpp(68): error C4668: 'BOOST_IOSTREAMS_GCC' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
  C:\Users\84703\Desktop\VideoRecorder-master\VideoRecorder\include\VideoRecorder.h(171): warning C4265: 'CVideoRecorder::CFrame': class has virtual functions, but destructor is not virtual
           instances of this class may not be destructed correctly
  @progress 'Compiling C++ source code...' 50%
  [2/4] Module.UEVideoRecorder.cpp
  C:\Users\84703\Desktop\boost_1_71_0\boost/type_traits/detail/config.hpp(85): error C4668: '__clang_major___WORKAROUND_GUARD' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
  C:\Users\84703\Desktop\boost_1_71_0\boost/type_traits/detail/config.hpp(85): error C4668: '__clang_major__' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
  C:\Users\84703\Desktop\boost_1_71_0\boost/iostreams/detail/resolve.hpp(68): error C4668: 'BOOST_IOSTREAMS_GCC' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
  C:\Users\84703\Desktop\VideoRecorder-master\VideoRecorder\include\VideoRecorder.h(171): warning C4265: 'CVideoRecorder::CFrame': class has virtual functions, but destructor is not virtual
           instances of this class may not be destructed correctly
  C:\Users\84703\Desktop\test11\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(26): warning C4003: not enough arguments for function-like macro invocation 'DECL_MEMBER_FUNCTION_TRAITS'
  C:\Users\84703\Desktop\test11\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(266): warning C4238: nonstandard extension used: class rvalue used as lvalue
  C:\Program Files\Epic Games\UE_4.20\Engine\Source\Runtime\Core\Public\Logging/LogMacros.h(47): error C2338: Formatting string must be a TCHAR array.
  C:\Users\84703\Desktop\test11\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(122): note: see reference to function template instantiation 'void FMsg::Logf<const _Elem*,>(const ANSICHAR *,int32,const FName &,ELogVerbosity::Type,const FmtType &)' being compiled
          with
          [
              _Elem=wchar_t,
              FmtType=const wchar_t *
          ]
  C:\Users\84703\Desktop\test11\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(145): note: see reference to function template instantiation 'void Logger<true,void>::Log<const char(&)[119],int,FName,ELogVerbosity::Type&,const _Elem*>(const char (&)[119],int &&,FName &&,ELogVerbosity::Type &,const _Elem *&&)' being compiled
          with
          [
              _Elem=wchar_t
          ]
  C:\Users\84703\Desktop\test11\Plugins\UEVideoRecorder\Source\UEVideoRecorder\Private\VideoRecordGameViewportClient.cpp(145): note: see reference to function template instantiation 'void Logger<true,void>::Log<const char(&)[119],int,FName,ELogVerbosity::Type&,const _Elem*>(const char (&)[119],int &&,FName &&,ELogVerbosity::Type &,const _Elem *&&)' being compiled
          with
          [
              _Elem=wchar_t
          ]
ERROR: UBT ERROR: Failed to produce item: C:\Users\84703\Desktop\test11\Plugins\UEVideoRecorder\Binaries\Win64\UE4Editor-UEVideoRecorder.dll
       (see ../Programs/UnrealBuildTool/Log.txt for full exception trace)
Total build time: 15.86 seconds (Parallel executor: 0.00 seconds)
LogInit: Warning: Still incompatible or missing module: UEVideoRecorder
LogExit: Preparing to exit.
LogModuleManager: Shutting down and abandoning module DesktopPlatform (38)
LogModuleManager: Shutting down and abandoning module AnimationModifiers (36)
LogModuleManager: Shutting down and abandoning module PropertyEditor (35)
LogModuleManager: Shutting down and abandoning module AudioEditor (32)
LogModuleManager: Shutting down and abandoning module TextureCompressor (30)
LogModuleManager: Shutting down and abandoning module ShaderCore (28)
LogModuleManager: Shutting down and abandoning module Landscape (26)
LogModuleManager: Shutting down and abandoning module SlateRHIRenderer (24)
LogModuleManager: Shutting down and abandoning module OpenGLDrv (22)
LogModuleManager: Shutting down and abandoning module D3D11RHI (20)
LogModuleManager: Shutting down and abandoning module AnimGraphRuntime (18)
LogModuleManager: Shutting down and abandoning module Renderer (16)
LogModuleManager: Shutting down and abandoning module Engine (14)
LogModuleManager: Shutting down and abandoning module CoreUObject (12)
LogModuleManager: Shutting down and abandoning module NetworkFile (10)
LogModuleManager: Shutting down and abandoning module CookedIterativeFile (8)
LogModuleManager: Shutting down and abandoning module StreamingFile (6)
LogModuleManager: Shutting down and abandoning module SandboxFile (4)
LogModuleManager: Shutting down and abandoning module PakFile (2)
LogExit: Exiting.
Log file closed, 10/31/19 11:02:34

Could you tell me what should i do now? Thank you!!!

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@juneleung
New UE version changes broke things up. I've fixed it and updated the plugin, try to check it out. I tested it with the latest UE version (4.23.1), but I assume it should work with 4.20 too - error messages was identical to those you've submitted.

from uevideorecorder.

juneleung avatar juneleung commented on June 29, 2024

@ash3D > @juneleung

New UE version changes broke things up. I've fixed it and updated the plugin, try to check it out. I tested it with the latest UE version (4.23.1), but I assume it should work with 4.20 too - error messages was identical to those you've submitted.

Hi, I have tried to download the new file and build the VideoRecoder.lib successfully. But when I tried to open unreal engine, it still tell me this error, how can i fix it?
Log file open, 11/12/19 23:06:23 LogWindows: Failed to load 'aqProf.dll' (GetLastError=126) LogWindows: File 'aqProf.dll' does not exist LogWindows: Failed to load 'VtuneApi.dll' (GetLastError=126) LogWindows: File 'VtuneApi.dll' does not exist LogWindows: Failed to load 'VtuneApi32e.dll' (GetLastError=126) LogWindows: File 'VtuneApi32e.dll' does not exist LogInit: Display: Running engine for game: testRec LogPlatformFile: Not using cached read wrapper LogTaskGraph: Started task graph with 5 named threads and 35 total threads with 3 sets of task threads. LogStats: Stats thread started at 0.384915

from uevideorecorder.

juneleung avatar juneleung commented on June 29, 2024

where can i build these dll or if somewhere can i download them?

LogWindows: Failed to load 'aqProf.dll' (GetLastError=126) LogWindows: File 'aqProf.dll' does not exist LogWindows: Failed to load 'VtuneApi.dll' (GetLastError=126) LogWindows: File 'VtuneApi.dll' does not exist LogWindows: Failed to load 'VtuneApi32e.dll' (GetLastError=126) LogWindows: File 'VtuneApi32e.dll' does not exist

from uevideorecorder.

ash3D avatar ash3D commented on June 29, 2024

@juneleung
Those dlls are unrelated to this plugin. VTune is Intel's CPU profiling tool, it is not used by plugin in any way. Maybe your game or UE itself require it.
I have looked through UE4 forum and found others facing similar problem:

Maybe it'll help you. There are also other posts but without proposed solution.

from uevideorecorder.

juneleung avatar juneleung commented on June 29, 2024

I created other project but also found these dll problems, i think may be something wrong when i build this plugin. I follow the guide doc(https://github.com/ash3D/UEVideoRecorder/files/2088127/VideoRecorder_Guie.docx) but it seems not work. VS had build the lib sucessfully, what should i do after build the lib? I tried to open unreal project but failed. Log is normal except the dll error.
I wonder if somwhere i can i found the error?
Can you provide me a video clip which can show me how to build it step by step? Thank you!!! >n<

from uevideorecorder.

juneleung avatar juneleung commented on June 29, 2024

I put the boost.Build.cs file on D:\UnrealEngine-4.20\Engine\Source\ThirdParty, and VideoRecorder.Build.cs file is on the D:\UnrealEngine-4.20\Engine\Source\ThirdParty\VideoRecorder. Is it correct?

from uevideorecorder.

muzixu avatar muzixu commented on June 29, 2024

image
fail to find codec.I want to know what caused this error?Thank you!

from uevideorecorder.

Related Issues (19)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.