Files
stream-shorts/src/StreamShorts.Library/Media/Video/ShortsCreator.cs
T

42 lines
1.3 KiB
C#
Raw Normal View History

using StreamShorts.Library.Analysis;
2025-08-03 22:50:30 -05:00
namespace StreamShorts.Library.Media.Video;
/// <summary>
/// Represents a service that creates video shorts.
/// </summary>
/// <inheritdoc/>
2025-08-03 22:50:30 -05:00
public class ShortsCreator : IShortsCreator
{
private readonly IVideoService _videoService = new FFMpegService();
public ShortsCreator()
{
}
internal ShortsCreator(IVideoService videoService)
{
_videoService = videoService ?? throw new ArgumentNullException(nameof(videoService), $"{nameof(videoService)} cannot be null");
}
public async Task CreateShortAsync(string sourcePath, ShortCandidate candidate, string destinationPath, TimeSpan? buffer = null)
{
if (string.IsNullOrWhiteSpace(sourcePath))
{
throw new ArgumentNullException(nameof(sourcePath), $"{nameof(sourcePath)} cannot be null or whitespace");
}
if (candidate is null)
{
throw new ArgumentNullException(nameof(candidate), $"{nameof(candidate)} cannot be null");
}
if (string.IsNullOrWhiteSpace(destinationPath))
{
throw new ArgumentNullException(nameof(destinationPath), $"{nameof(destinationPath)} cannot be null or whitespace");
}
await _videoService.CreateClipFromVideoAsync(sourcePath, destinationPath, candidate.StartTime, candidate.EndTime, buffer)
.ConfigureAwait(false);
}
}