2025-07-27 23:33:05 -05:00
|
|
|
using System.Diagnostics.CodeAnalysis;
|
|
|
|
|
|
|
|
|
|
using FFMpegCore;
|
|
|
|
|
using FFMpegCore.Enums;
|
|
|
|
|
using FFMpegCore.Pipes;
|
|
|
|
|
|
|
|
|
|
namespace StreamShorts.Library.Media;
|
|
|
|
|
|
2025-07-29 18:00:09 -05:00
|
|
|
/// <summary>
|
|
|
|
|
/// Represents a service for processing video files using FFMpeg.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
internal class FFMpegService : IVideoService
|
2025-07-27 23:33:05 -05:00
|
|
|
{
|
|
|
|
|
public async Task<bool> ExtractAudioFromVideoAsync(Stream video, Stream audio)
|
|
|
|
|
{
|
|
|
|
|
return await FFMpegArguments
|
|
|
|
|
.FromPipeInput(new StreamPipeSource(video))
|
|
|
|
|
.OutputToPipe(
|
|
|
|
|
new StreamPipeSink(audio),
|
|
|
|
|
static o => o.DisableChannel(Channel.Video).ForceFormat("mp3")
|
|
|
|
|
)
|
|
|
|
|
.ProcessAsynchronously()
|
|
|
|
|
.ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
}
|