ScnLib_SetLayoutContext()

ScnLib_SetLayoutContext()

标准版专业版超级版至尊版
C++ __declspec(dllimport) int __stdcall ScnLib_SetLayoutContext(int nBlock);
C# [DllImport("ScnLib.dll")] public static extern int ScnLib_SetLayoutContext(int Block);
Basic Public Declare Function ScnLib_SetLayoutContext Lib "ScnLib.dll" (ByVal Block As Int32) As Int32
Delphi function ScnLib_SetLayoutContext(Block: Integer): Integer; stdcall; external 'ScnLib.dll';
  • 描述
    设置当前布局上下文的块索引。

  • 参数
    • Block [in]
      当前布局上下文的块索引,范围从-1到3。
      • 0 : 主屏幕块,可以选择叠加一个摄像头视图。这是默认块。
      • 1 ~ 3 : 摄像头视图块,将叠加在主屏幕上。每个摄像头视图块都可以选择输出单独的视频和/或音频文件。
      • -1 : 合成屏幕块,也可以选择叠加一个摄像头视图。此块将包含主屏幕和所有摄像头视图。
  • 返回值
    前一个布局上下文的块索引。

  • 备注
    本SDK不仅支持常规屏幕录制,还支持多源屏幕录制,最多可以同时录制五个摄像头和主屏幕,可以根据您设置的布局将主屏幕块和摄像头视图块合成为一个视频输出,甚至可以同时将每个块输出为单独的视频。每个布局块都有其独立的设置来设定输出视频路径、音频路径、直播 URL、徽标图像、徽标文本、音频源、摄像头设备、摄像头视图位置等等。请注意,本手册其他 API 文档页面中提到的默认设置特指块 #0 的布局上下文的默认设置。下表显示了每个块的不同默认初始设置:
    块 #0
    (主屏幕)
    块 #1 ~ #3
    (摄像头视图)
    块 #-1
    (合成屏幕)
    屏幕捕获
    视频输出"C:\Users\YourName\Videos\Rec <num>.mp4"""""
    音频输出""""""
    串流网址""""""
    标识图像""""""
    标识文本""""""
    扬声器音频
    麦克风音频
    摄像头设备
    摄像头视图位置主屏幕右下角紧靠主屏幕右边主屏幕右上角
    全幅摄像头视图只有开只有关
    您可以调整这些设置以达到您想要的结果。调整的具体步骤通常如下:首先,调用该API将布局上下文切换到需要调整的块,该API的返回值是前一个布局上下文的块索引,强烈建议您保存此块索引,以便设置完成后可以恢复到之前的布局上下文。然后,您可以调用SDK的其他一些API将当前块配置为您需要的设置。最后,恢复到之前的布局上下文,或者切换到另一个布局上下文进行设置。要获取当前布局上下文的块索引,可以调用ScnLib_GetLayoutContext()

    注意:您可以将摄像头视图放置在合成屏幕的任意位置。虽然将摄像头视图放置在主屏幕的角落很常见并且通常不引人注目,但将其与主屏幕的一侧对齐实际上是最佳位置,因为它可以避免遮盖掉主屏幕的任何部分。将摄像头视图与主屏幕一侧对齐的关键是设置负边距值以将其偏移其宽度或高度,使其显示在主屏幕侧边。下面是一个示例 C++ 代码片段,用于将 3 个垂直堆叠的摄像头视图与主屏幕的右侧对齐:
    // 将布局上下文切换到主屏幕块并存储前一个块索引 int oldBlock = ScnLib_SetLayoutContext(0); // 设置主屏幕输出单独的视频(可选) ScnLib_SetVideoPathW(L"C:\\Recordings\\MainScreen.mp4"); // 获取主屏幕视频分辨率 int videoWidth = 0, videoHeight = 0; ScnLib_GetVideoResolution(&videoWidth, &videoHeight); // 我们将把 3 个垂直堆叠的摄像头视图与主屏幕的右侧靠齐,每个视图都是视频高度的 1/3 videoHeight /= 3; // 我们偏好长宽比为 4:3 的摄像头视图 videoWidth = videoHeight * 4 / 3; // 将布局上下文切换到摄像头视图块 #1 ScnLib_SetLayoutContext(1); // 设置摄像头 #1 视图输出单独的视频(可选) ScnLib_SetVideoPathW(L"C:\\Recordings\\Webcam#1.mp4"); // 假定有不少于 3 个摄像头设备连接到了电脑,为摄像头 #1 视图选择第一个摄像头设备 ScnLib_SelectWebcamDevice(0); // 将摄像头 #1 视图与右上角对齐,向右偏移其宽度,使其显示在主屏幕侧边 ScnLib_SetWebcamPosition(SCNLIB_POSITION_TOP_RIGHT, -videoWidth, 0); ScnLib_SetWebcamViewSize(videoWidth, videoHeight); // 将布局上下文切换到摄像头视图块 #2 ScnLib_SetLayoutContext(2); // 设置摄像头 #2 视图输出单独的视频(可选) ScnLib_SetVideoPathW(L"C:\\Recordings\\Webcam#2.mp4"); // 假定有不少于 3 个摄像头设备连接到了电脑,为摄像头 #2 视图选择第二个摄像头设备 ScnLib_SelectWebcamDevice(1); // 将摄像头 #2 视图与右侧对齐,同时向右偏移其宽度,使其显示在主屏幕侧边 ScnLib_SetWebcamPosition(SCNLIB_POSITION_RIGHT, -videoWidth, 0); ScnLib_SetWebcamViewSize(videoWidth, videoHeight); // 将布局上下文切换到摄像头视图块#3 ScnLib_SetLayoutContext(3); // 设置摄像头 #3 视图输出单独的视频(可选) ScnLib_SetVideoPathW(L"C:\\Recordings\\Webcam#3.mp4"); // 假定有不少于 3 个摄像头设备连接到了电脑,为摄像头 #3 视图选择第三个摄像头设备 ScnLib_SelectWebcamDevice(2); // 将摄像头 #3 视图与右下角对齐,向右偏移其宽度,使其显示在主屏幕侧边 ScnLib_SetWebcamPosition(SCNLIB_POSITION_BOTTOM_RIGHT, -videoWidth, 0); ScnLib_SetWebcamViewSize(videoWidth, videoHeight); // 将布局上下文切换到合成屏幕 ScnLib_SetLayoutContext(-1); // 设置合成屏幕输出单独的视频 ScnLib_SetVideoPathW(L"C:\\Recordings\\CompositionScreen.mp4"); // 恢复到之前的布局上下文 ScnLib_SetLayoutContext(oldBlock);
  • 参见
    ScnLib_GetLayoutContext()
    ScnLib_SetVideoPathA/W()
    ScnLib_SetAudioPathA/W()
    ScnLib_SetStreamingUrlA/W()
    ScnLib_SetLogoImageA/W()
    ScnLib_SetLogoTextA/W()
    ScnLib_SetCaptureRegion()
    ScnLib_RecordAudioSource()
    ScnLib_SelectWebcamDevice()
    ScnLib_SetWebcamPosition()
    ScnLib_InputWebcamFrame()
    ScnLib_RecordWebcamOnly()

下载 SDK API 总览