mirror of
https://github.com/rosenbjerg/FFMpegCore.git
synced 2024-11-10 08:34:12 +01:00
parent
0ceff3aa50
commit
33878ab605
11 changed files with 22 additions and 24 deletions
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using FFMpegCore.Enums;
|
||||
using FFMpegCore.Test.Resources;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System.IO;
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using FFMpegCore.Enums;
|
||||
|
||||
namespace FFMpegCore.Test.Resources
|
||||
namespace FFMpegCore.Test.Resources
|
||||
{
|
||||
public enum AudioType
|
||||
{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -24,7 +25,7 @@ public BitmapVideoFrameWrapper(Bitmap bitmap)
|
|||
Format = ConvertStreamFormat(bitmap.PixelFormat);
|
||||
}
|
||||
|
||||
public void Serialize(System.IO.Stream stream)
|
||||
public void Serialize(Stream stream)
|
||||
{
|
||||
var data = Source.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, Source.PixelFormat);
|
||||
|
||||
|
@ -40,7 +41,7 @@ public void Serialize(System.IO.Stream stream)
|
|||
}
|
||||
}
|
||||
|
||||
public async Task SerializeAsync(System.IO.Stream stream, CancellationToken token)
|
||||
public async Task SerializeAsync(Stream stream, CancellationToken token)
|
||||
{
|
||||
var data = Source.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, Source.PixelFormat);
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
using FFMpegCore.Enums;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace FFMpegCore.Arguments
|
||||
{
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System.Drawing;
|
||||
using FFMpegCore.Enums;
|
||||
|
||||
namespace FFMpegCore.Arguments
|
||||
{
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFMpegCore.Pipes
|
||||
{
|
||||
public interface IPipeSink
|
||||
{
|
||||
Task ReadAsync(System.IO.Stream inputStream, CancellationToken cancellationToken);
|
||||
Task ReadAsync(Stream inputStream, CancellationToken cancellationToken);
|
||||
string GetFormat();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFMpegCore.Pipes
|
||||
|
@ -9,6 +10,6 @@ namespace FFMpegCore.Pipes
|
|||
public interface IPipeSource
|
||||
{
|
||||
string GetStreamArguments();
|
||||
Task WriteAsync(System.IO.Stream outputStream, CancellationToken cancellationToken);
|
||||
Task WriteAsync(Stream outputStream, CancellationToken cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFMpegCore.Pipes
|
||||
|
@ -12,7 +13,7 @@ public interface IVideoFrame
|
|||
int Height { get; }
|
||||
string Format { get; }
|
||||
|
||||
void Serialize(System.IO.Stream pipe);
|
||||
Task SerializeAsync(System.IO.Stream pipe, CancellationToken token);
|
||||
void Serialize(Stream pipe);
|
||||
Task SerializeAsync(Stream pipe, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using FFMpegCore.Exceptions;
|
||||
|
@ -46,7 +47,7 @@ public string GetStreamArguments()
|
|||
return $"-f rawvideo -r {FrameRate.ToString(CultureInfo.InvariantCulture)} -pix_fmt {StreamFormat} -s {Width}x{Height}";
|
||||
}
|
||||
|
||||
public async Task WriteAsync(System.IO.Stream outputStream, CancellationToken cancellationToken)
|
||||
public async Task WriteAsync(Stream outputStream, CancellationToken cancellationToken)
|
||||
{
|
||||
if (_framesEnumerator.Current != null)
|
||||
{
|
||||
|
|
|
@ -20,7 +20,7 @@ public StreamPipeSink(Stream destination)
|
|||
Writer = (inputStream, cancellationToken) => inputStream.CopyToAsync(destination, BlockSize, cancellationToken);
|
||||
}
|
||||
|
||||
public Task ReadAsync(System.IO.Stream inputStream, CancellationToken cancellationToken)
|
||||
public Task ReadAsync(Stream inputStream, CancellationToken cancellationToken)
|
||||
=> Writer(inputStream, cancellationToken);
|
||||
|
||||
public string GetFormat() => Format;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFMpegCore.Pipes
|
||||
|
@ -8,17 +9,17 @@ namespace FFMpegCore.Pipes
|
|||
/// </summary>
|
||||
public class StreamPipeSource : IPipeSource
|
||||
{
|
||||
public System.IO.Stream Source { get; }
|
||||
public Stream Source { get; }
|
||||
public int BlockSize { get; } = 4096;
|
||||
public string StreamFormat { get; } = string.Empty;
|
||||
|
||||
public StreamPipeSource(System.IO.Stream source)
|
||||
public StreamPipeSource(Stream source)
|
||||
{
|
||||
Source = source;
|
||||
}
|
||||
|
||||
public string GetStreamArguments() => StreamFormat;
|
||||
|
||||
public Task WriteAsync(System.IO.Stream outputStream, CancellationToken cancellationToken) => Source.CopyToAsync(outputStream, BlockSize, cancellationToken);
|
||||
public Task WriteAsync(Stream outputStream, CancellationToken cancellationToken) => Source.CopyToAsync(outputStream, BlockSize, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue