/// <inheritdoc /> public IVideoStream SetSize(VideoSize size) { _size = $"-s {size.ToFFmpegFormat()} "; return(this); }
public static IConversion VisualiseAudio(string inputPath, string outputPath, VideoSize size, PixelFormat pixelFormat = PixelFormat.yuv420p, VisualisationMode mode = VisualisationMode.bar, AmplitudeScale amplitudeScale = AmplitudeScale.lin, FrequencyScale frequencyScale = FrequencyScale.log) { IMediaInfo inputInfo = FFmpeg.GetMediaInfo(inputPath).GetAwaiter().GetResult(); IAudioStream audioStream = inputInfo.AudioStreams.FirstOrDefault(); IVideoStream videoStream = inputInfo.VideoStreams.FirstOrDefault(); string filter = $"\"[0:a]showfreqs=mode={mode}:fscale={frequencyScale}:ascale={amplitudeScale},format={pixelFormat},scale={size.ToFFmpegFormat()} [v]\""; return(New() .AddStream(audioStream) .AddParameter($"-filter_complex {filter}") .AddParameter("-map [v]") .SetFrameRate(videoStream != null ? videoStream.Framerate : 30) // Pin framerate at the original rate or 30 fps to stop dropped or duplicated frames .SetOutput(outputPath)); }
/// <inheritdoc /> public IConversion AddDesktopStream(VideoSize videoSize, double framerate = 30, int xOffset = 0, int yOffset = 0) { return(AddDesktopStream(videoSize.ToFFmpegFormat(), framerate, xOffset, yOffset)); }
/// <inheritdoc /> public IConversion GetScreenCapture(double frameRate, int xOffset = 0, int yOffset = 0, VideoSize?videoSize = null) => GetScreenCapture(frameRate, xOffset, yOffset, videoSize?.ToFFmpegFormat());
/// <inheritdoc /> public IVideoStream SetSize(VideoSize size) { _parameters.Add(new ConversionParameter($"-s {size.ToFFmpegFormat()}")); return(this); }