UE4录屏

 

UE引用插件流程

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/

UE4录屏_第1张图片

  1. 下载FFmpeg  Dll(dll在项目运行同级目录下要放 运行时需调用)
    https://ffmpeg.zeranoe.com/builds/  UE4录屏_第2张图片
  2. 下载 Boost.并解压到项目ThirdParty(与Plugins同级)目录下
    https://www.boost.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需要准备)

UE4录屏_第3张图片

停止录制

UE4录屏_第4张图片

VideoRecorder.lib编译流程

打开VideoRecorder.sln

UE4录屏_第5张图片

添加用户自定义宏

BOOS_ROOT

FFMPEG_ROOT

UE4录屏_第6张图片

UE4录屏_第7张图片

调整编译器参数

UE4录屏_第8张图片

UE4录屏_第9张图片

异常处理

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

 

你可能感兴趣的:(UE4)