diff --git a/FFMpegCore/FFMpeg/Arguments/MetaDataArgument.cs b/FFMpegCore/FFMpeg/Arguments/MetaDataArgument.cs new file mode 100644 index 0000000..7e9ffc6 --- /dev/null +++ b/FFMpegCore/FFMpeg/Arguments/MetaDataArgument.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace FFMpegCore.Arguments +{ + public class MetaDataArgument : IInputArgument + { + private readonly string _metaDataContent; + private readonly string _tempFileName = Path.Combine(GlobalFFOptions.Current.TemporaryFilesFolder, $"metadata_{Guid.NewGuid()}.txt"); + + public MetaDataArgument(string metaDataContent) + { + _metaDataContent = metaDataContent; + } + + public string Text => $"-i \"{_tempFileName}\" -map_metadata 1"; + + public Task During(CancellationToken cancellationToken = default) => Task.CompletedTask; + + + public void Pre() => File.WriteAllText(_tempFileName, _metaDataContent); + + public void Post() => File.Delete(_tempFileName); + } +} diff --git a/FFMpegCore/FFMpeg/FFMpegArguments.cs b/FFMpegCore/FFMpeg/FFMpegArguments.cs index 847e68c..45750c6 100644 --- a/FFMpegCore/FFMpeg/FFMpegArguments.cs +++ b/FFMpegCore/FFMpeg/FFMpegArguments.cs @@ -38,6 +38,7 @@ public FFMpegArguments WithGlobalOptions(Action configure public FFMpegArguments AddFileInput(FileInfo fileInfo, Action? addArguments = null) => WithInput(new InputArgument(fileInfo.FullName, false), addArguments); public FFMpegArguments AddUrlInput(Uri uri, Action? addArguments = null) => WithInput(new InputArgument(uri.AbsoluteUri, false), addArguments); public FFMpegArguments AddPipeInput(IPipeSource sourcePipe, Action? addArguments = null) => WithInput(new InputPipeArgument(sourcePipe), addArguments); + public FFMpegArguments AddMetaData(string content, Action? addArguments = null) => WithInput(new MetaDataArgument(content), addArguments); private FFMpegArguments WithInput(IInputArgument inputArgument, Action? addArguments) {