diff --git a/FFMpegCore/FFMpeg/Arguments/CopyCodecArgument.cs b/FFMpegCore/FFMpeg/Arguments/CopyCodecArgument.cs new file mode 100644 index 0000000..8ea3484 --- /dev/null +++ b/FFMpegCore/FFMpeg/Arguments/CopyCodecArgument.cs @@ -0,0 +1,10 @@ +namespace FFMpegCore.Arguments +{ + /// + /// Represents a copy codec parameter + /// + public class CopyCodecArgument : IArgument + { + public string Text => $"-codec copy"; + } +} diff --git a/FFMpegCore/FFMpeg/FFMpeg.cs b/FFMpegCore/FFMpeg/FFMpeg.cs index a8de12b..820d9fb 100644 --- a/FFMpegCore/FFMpeg/FFMpeg.cs +++ b/FFMpegCore/FFMpeg/FFMpeg.cs @@ -333,7 +333,10 @@ public static bool SaveM3U8Stream(Uri uri, string output) } return FFMpegArguments - .FromUrlInput(uri) + .FromUrlInput(uri, options => + { + options.WithCopyCodec(); + }) .OutputToFile(output) .ProcessSynchronously(); } diff --git a/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs b/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs index 4930b52..6a6586c 100644 --- a/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs +++ b/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs @@ -77,6 +77,7 @@ public FFMpegArgumentOptions DeselectStreams(IEnumerable streamIndices, int public FFMpegArgumentOptions WithAudibleActivationBytes(string activationBytes) => WithArgument(new AudibleEncryptionKeyArgument(activationBytes)); public FFMpegArgumentOptions WithTagVersion(int id3v2Version = 3) => WithArgument(new ID3V2VersionArgument(id3v2Version)); public FFMpegArgumentOptions WithGifPaletteArgument(int streamIndex, Size? size, int fps = 12) => WithArgument(new GifPaletteArgument(streamIndex, fps, size)); + public FFMpegArgumentOptions WithCopyCodec() => WithArgument(new CopyCodecArgument()); public FFMpegArgumentOptions WithArgument(IArgument argument) { diff --git a/README.md b/README.md index 365d0be..b2df37a 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ FFMpeg.Join(@"..\joined_video.mp4", ``` csharp FFMpeg.SubVideo(inputPath, outputPath, - TimeSpan.FromSeconds(0) + TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(30) ); ``` @@ -162,7 +162,19 @@ If you want to use `System.Drawing.Bitmap`s as `IVideoFrame`s, a `BitmapVideoFra # Binaries -## Installation +## Runtime Auto Installation +You can install a version of ffmpeg suite at runtime using `FFMpegDownloader.DownloadFFMpegSuite();` + +Or you can download only the desired binary using `FFMpegDownloader.DownloadFFMpeg()`, `FFMpegDownloader.DownloadFFProbe()`, `FFMpegDownloader.DownloadFFPlay()`. + +| OS | Support | +|---------|:-------------------------------------------------:| +| Windows | x64 Fully Supported, x86 Up to version V4.2.1 | +| Mac OSX | NOT YET | +| Linux | NOT YET | + + +## Manual Installation If you prefer to manually download them, visit [ffbinaries](https://ffbinaries.com/downloads) or [zeranoe Windows builds](https://ffmpeg.zeranoe.com/builds/). ### Windows (using choco)