1. 下载ue录屏插件 并解压到Plugins目录
https://github.com/ash3D/UEVideoRecorder
2. 下载录屏实现lib工程
https://github.com/ash3D/VideoRecorder
打开项目并编译出供UE使用的第三方lib库 VideoRecorder.lib
将编译的lib和include拷贝到项目ThirdParty(与Plugins同级)目录下
3. 下载FFmpeg SDK.
https://ffmpeg.org/
1. 在项目的Source / ThirdParty 创建脚本boost.Build.cs
using UnrealBuildTool;
public class boost : ModuleRules
{
public boost(ReadOnlyTargetRules Target) : base(Target)
{
Type = ModuleType.External;
const string LibraryPath = "../ThirdParty/boost_1_70_0";
PublicIncludePaths.Add(LibraryPath);
}
}
2. 在项目的Source / ThirdParty 创建脚本 VideoRecorder.Build.cs
using UnrealBuildTool;
using System.IO;
public class VideoRecorder : ModuleRules
{
public VideoRecorder(ReadOnlyTargetRules Target) : base(Target)
{
Type = ModuleType.External;
const string LibraryPath = "../ThirdParty/VideoRecorder";
PublicIncludePaths.Add(Path.Combine(LibraryPath, "include"));
if (Target.Platform == UnrealTargetPlatform.Win64)
{
PublicLibraryPaths.Add(Path.Combine(LibraryPath, "lib", "x64", "Release"));
PublicAdditionalLibraries.Add("VideoRecorder.lib");
}
}
}
设置GameViewportClass为视频录制的view 否则会使录制失效
在场景中添加VideoRecorderActor,并提升为蓝图
开始录制(1.filename需写入完整路径 可以使用GetProjectDirectory来获取相对路径 2.不要在begin里面开始 会无法成功启动 Actor需要准备)
停止录制
打开VideoRecorder.sln
添加用户自定义宏
BOOS_ROOT
FFMPEG_ROOT
调整编译器参数
下载zip的时候会下载不到DirectXTex部分 需手动添加拷贝放入
没有将“__cplusplus”定义为预处理器宏,用“0”替换“#if/#elif”解决方法
在*.build.cs里加 bEnableUndefinedIdentifierWarnings = false;
Log打印方法报Formatting string must be a TCHAR array错误
Logger<>::Log(__FILE__, __LINE__, VideoRecorder.GetCategoryName(), verbosity, msgStr.c_str());
修改为
const wchar_t* w = msgStr.c_str();
Logger<>::Log(__FILE__, __LINE__, VideoRecorder.GetCategoryName(), verbosity, TEXT("%s"),w);