mirror of
https://github.com/rosenbjerg/FFMpegCore.git
synced 2025-12-16 02:55:44 +00:00
* Move PosterWithAudio to FFMpegCore
* Reduce windows only tests
* Update Directory.Build.props
* Create .editorconfig
* More cleanup
* Enable implicit usings
* Remove unused method
* Apply dotnet format
* Fix unused variable in AudioGateArgument
* Fix boolean conditions in AudioGateArgument
* Merge boolean conditions into pattern
* Use target-typed new
* Add linting to CI
* Add CUDA to HardwareAccelerationDevice enum
* Increase timeout for Video_Join_Image_Sequence
* Adjust Video_Join_Image_Sequence timeout
* Fix expected seconds in Video_Join_Image_Sequence
* Increase timeout for Video_TranscodeToMemory due to macos agents
Former-commit-id: f9f7161686
69 lines
2 KiB
C#
69 lines
2 KiB
C#
using System.Text;
|
|
|
|
namespace FFMpegCore.Extend
|
|
{
|
|
internal static class StringExtensions
|
|
{
|
|
private static Dictionary<char, string> CharactersSubstitution { get; } = new()
|
|
{
|
|
{ '\\', @"\\" },
|
|
{ ':', @"\:" },
|
|
{ '[', @"\[" },
|
|
{ ']', @"\]" },
|
|
{ '\'', @"'\\\''" }
|
|
};
|
|
|
|
/// <summary>
|
|
/// Enclose string between quotes if contains an space character
|
|
/// </summary>
|
|
/// <param name="input">The input</param>
|
|
/// <returns>The enclosed string</returns>
|
|
public static string EncloseIfContainsSpace(string input)
|
|
{
|
|
return input.Contains(" ") ? $"'{input}'" : input;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Enclose an string in quotes
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
public static string EncloseInQuotes(string input)
|
|
{
|
|
return $"'{input}'";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Scape several characters in subtitle path used by FFmpeg
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This is needed because internally FFmpeg use Libav Filters
|
|
/// and the info send to it must be in an specific format
|
|
/// </remarks>
|
|
/// <param name="source"></param>
|
|
/// <returns>Scaped path</returns>
|
|
public static string ToFFmpegLibavfilterPath(string source)
|
|
{
|
|
return source.Replace(CharactersSubstitution);
|
|
}
|
|
|
|
public static string Replace(this string str, Dictionary<char, string> replaceList)
|
|
{
|
|
var parsedString = new StringBuilder();
|
|
|
|
foreach (var l in str)
|
|
{
|
|
if (replaceList.ContainsKey(l))
|
|
{
|
|
parsedString.Append(replaceList[l]);
|
|
}
|
|
else
|
|
{
|
|
parsedString.Append(l);
|
|
}
|
|
}
|
|
|
|
return parsedString.ToString();
|
|
}
|
|
}
|
|
}
|