68 lines
2.2 KiB
C#
68 lines
2.2 KiB
C#
using System;
|
|
using Paca.Core;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Core;
|
|
|
|
public class SubtitleBurnInEngineGateTests
|
|
{
|
|
[Fact]
|
|
public void Gate357_SubtitleBurnInEngine_BuildsForceStyleString_Correctly()
|
|
{
|
|
var style = new SubtitleBurnInStyle
|
|
{
|
|
FontName = "Arial",
|
|
FontSize = 24,
|
|
PrimaryColor = "&H00FFFFFF",
|
|
OutlineColor = "&H00000000",
|
|
OutlineWidth = 2,
|
|
MarginV = 40,
|
|
Alignment = 2 // Bottom center
|
|
};
|
|
|
|
var forceStyle = SubtitleBurnInEngine.BuildForceStyleString(style);
|
|
|
|
Assert.Contains("FontName=Arial", forceStyle);
|
|
Assert.Contains("FontSize=24", forceStyle);
|
|
Assert.Contains("PrimaryColour=&H00FFFFFF", forceStyle);
|
|
Assert.Contains("Outline=2", forceStyle);
|
|
Assert.Contains("MarginV=40", forceStyle);
|
|
Assert.Contains("Alignment=2", forceStyle);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate358_SubtitleBurnInEngine_EscapesWindowsPath_ForFfmpegFilter()
|
|
{
|
|
var winPath = "C:\\subtitles\\video_track.srt";
|
|
var escaped = SubtitleBurnInEngine.EscapeSubtitlePathForFfmpeg(winPath);
|
|
|
|
// In ffmpeg filtergraph, colon must be escaped as '\:' and backslashes replaced with forward slashes
|
|
Assert.Equal("C\\:/subtitles/video_track.srt", escaped);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate359_SubtitleBurnInEngine_ProvidesDefaultReadableStyle()
|
|
{
|
|
var def = SubtitleBurnInStyle.Default;
|
|
|
|
Assert.Equal(22, def.FontSize);
|
|
Assert.Equal(2, def.Alignment); // Bottom center
|
|
Assert.True(def.OutlineWidth >= 2);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate360_SubtitleBurnInEngine_BuildsFullCommandLine_WithAudioCopy()
|
|
{
|
|
var cmd = SubtitleBurnInEngine.BuildBurnInCommandLine(
|
|
inputVideoPath: "C:\\videos\\clip.mp4",
|
|
subtitlePath: "C:\\videos\\clip.srt",
|
|
outputVideoPath: "C:\\videos\\clip_subbed.mp4"
|
|
);
|
|
|
|
Assert.Contains("-i \"C:\\videos\\clip.mp4\"", cmd);
|
|
Assert.Contains("-vf \"subtitles='C\\:/videos/clip.srt'", cmd);
|
|
Assert.Contains("force_style=", cmd);
|
|
Assert.Contains("-c:v libx264 -crf 20 -c:a copy", cmd);
|
|
Assert.EndsWith("\"C:\\videos\\clip_subbed.mp4\" -y", cmd);
|
|
}
|
|
}
|