GithubHelp home page GithubHelp logo

rosenbjerg / ffmpegcore Goto Github PK

View Code? Open in Web Editor NEW
1.6K 1.6K 281.0 83.09 MB

A .NET FFMpeg/FFProbe wrapper for easily integrating media analysis and conversion into your C# applications

License: MIT License

C# 100.00%
analysis audio conversion ffmpeg ffprobe video

ffmpegcore's Introduction

Hello there πŸ‘‹

Rosenbjerg's GitHub stats Rosenbjerg's GitHub stats

ffmpegcore's People

Contributors

alex6dj avatar assassinater avatar bobsilent avatar crydsch avatar ep1kt3t0s avatar feodoros avatar gorobvictor avatar hey-red avatar jkamsker avatar jogibear9988 avatar keg247 avatar lostmsu avatar max619 avatar mii9000 avatar namaneo avatar notheisz57 avatar pklaes avatar qe201020335 avatar rosenbjerg avatar rpaschoal avatar samburovkv avatar slugger7 avatar test-in-prod avatar tfleury avatar tugrulelmas avatar vfrz avatar vladjerca avatar weihanli avatar xxbiohazrdxx avatar zhuker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffmpegcore's Issues

I'm having problems with FromConcatenation

FFMpegArguments.FromConcatenation is only concatenating the first file.

            var videosDirectory = $@"C:\Users\afrom\Source\Repos\kameeyo\Tests\videos\output\";
            var files = Directory.EnumerateFiles(videosDirectory).ToArray();

            FFMpegArguments
                    .FromConcatenation(files)
                    .OverwriteExisting()
                    .OutputToFile($"{videosDirectory}output.mp4")
                    .ProcessSynchronously();

Target netstandard2.0 instead of netstandard 2.1

Is there any reason why NetStandard 2.1 is needed?

NetStandard 2.1 cannot be consumed from Net Framework 4.71, even Net Framework 4.8 still uses NetStandard 2.0.

From the documentation:

Library authors who need to support .NET Framework customers should stay on .NET Standard 2.0. In fact, most libraries should be able to stay on .NET Standard 2.0, as the API additions are largely for advanced scenarios. However, this doesn’t mean that library authors cannot take advantage of these APIs even if they have to support .NET Framework. In those cases they can use multi-targeting to compile for both .NET Standard 2.0 as well as .NET Standard 2.1. This allows writing code that can expose more features or provide a more efficient implementation on runtimes that support .NET Standard 2.1 while not giving up on the bigger reach that .NET Standard 2.0 offers.

So, could you lower the version requirement to 2.0? or at least, multitarget 2.0 and 2.1?

Delphi

How about translate it to delphi headers.
Thank you

Quite Trivial to set Up Live Video Streaming

Hi,
I need to encode live Webcam footage, which has become quite trivial to me and the docs also didn't help :(
`private void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap Video = (Bitmap)eventArgs.Frame.Clone();
_pictureBox.Image = Video;

        BitmapVideoFrameWrapper wrapper = new BitmapVideoFrameWrapper((Bitmap)eventArgs.Frame.Clone());
        _videoFrames.Add(wrapper);
        _ffmpeg.OnProgress += (progress) => Debug.WriteLine("Encode Progress: {0}", progress);

        if (_videoFrames.Count == 30)
        {
            StreamPipeDataReader output = new StreamPipeDataReader(new MemoryStream());
            RawVideoPipeDataWriter _rawVideo = new RawVideoPipeDataWriter(CreateFrames(30))
            {
                FrameRate = 15
            };

            ArgumentContainer _codecArgs = new ArgumentContainer()
            {
                new InputPipeArgument(_rawVideo),
                new OutputPipeArgument(output)

            };

            var Result = _ffmpeg.Convert(_codecArgs);
            Debug.WriteLine("RESUTL: " + Result.Size);
        }
    }`

This Action is called when a new Frame arrives from AForgeManager camera.

       `private IEnumerable<IVideoFrame> CreateFrames(int count)
    {
        for (int i = 0; i < count; i++)
        {
            yield return _videoFrames[i];
        }
        _videoFrames.Clear();
    }
     `

This is how the 'docs' in ReadMe implements it and is how is implemented them but sadly no positive result.
I create a List of 'IVideoFrame' and Append every new frame to it then wait for it to reach at least 30 frames then encode them, clear the list and restart the procedure I don't know if this is the right way but any help is appreciated πŸ‘

Transcode in Memory

I am having an issue attempting to transcode a video in memory. AIl I get for an error is "Pipe is broken". I have tried debugging the project with no luck. I followed the example I found in the tests, but I suspect I am missing something.

Test Followed:

Do I need to inherit from IPipeSink in order to output properly?

Here is the code I have. I am trying to convert an AVI to MP4 in memory,

                var path = @"path_to_my_video.avi";
                var input = FFProbe.Analyse(path);
                using (FileStream fs = new FileStream(input.Path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                using (var output = new MemoryStream())
                {
                    try
                    {
                        var pipeSource = new StreamPipeSource(fs);
                        var arguments = FFMpegArguments.FromPipe(pipeSource)
                            .WithVideoCodec(VideoCodec.LibX264)
                            .ForceFormat("mp4");

                         var processor = arguments.OutputToPipe(new StreamPipeSink(output)); // Doesn't Work
                         // This Works var processor = arguments.OutputToFile(@"output_test.mp4");

                        var success = processor.ProcessSynchronously();
                    }
                    catch (Exception ex)
                    {

                        throw;
                    }
                }

Version: 2.0.1

I'm having a problem with Join

i'm trying this in a test project. this is your input.mp4 file.

            FFMpeg.Join(@"..\..\..\joined_video.mp4",
                @"..\..\..\videos\output\input.mp4"
            );

this is error I'm getting

FFMpegCore.Exceptions.FFMpegException : Invalid output file. File extension should be '.mpegts' required.

Join Method is Problem : Repeat last frame from first input

hello
i use your powerful library
but join method have proble two mp4 :
some last frame from first input have repat after join
i use this code :
FFMpeg encoder = new FFMpeg(); VideoInfo vf=encoder.Join( new FileInfo(@"C:\joined_video.mp4"), VideoInfo.FromPath(@"C:\part2.mp4"), VideoInfo.FromPath(@"C:\part2after.mp4") )
please down load and see my joined video from this link :
my joined video

How to convert H264 Annex B NALU arrays to rgb frame?

I wan't to display 100 android phones screen.
The phones will send me H264 Annex B NALU arrays.(by header [00 00 00 01 xx xx xx .......])
It can be played directly by ffmpeg but vlc could not.

Question1:
How to enqueue my array datas to ffmpeg? I try named pipe stream, but doesn't work:

// Fault...
VideoInfo.FromPath(@"\\.\pipe\MyName1")

Question2:
How to enqueue All I/B/P NALU array, and return all decode frames? I will use it in WPF app, and draw it by WriteableBitmap .

    public class BitmapDecodeInfo
    {
        public Size CurSize;    
        public int Framerate;      
        public byte[] RgbData { get; internal set; }  
    }
       WriteableBitmap _drawBitmap;
        public WriteableBitmap GetWriteableBitmap(BitmapDecodeInfo bitmapInfo, out bool newBitmap)
        {
            if (_drawBitmap == null
                || _drawBitmap.Width != bitmapInfo.CurSize.Width
                || _drawBitmap.Height != bitmapInfo.CurSize.Height)
            {
                newBitmap = true;
                _drawBitmap = new WriteableBitmap(bitmapInfo.CurSize.Width, bitmapInfo.CurSize.Height, 96, 96, PixelFormats.Bgr24, null);
                _drawBitmap.WritePixels(new Int32Rect(0, 0, bitmapInfo.CurSize.Width, bitmapInfo.CurSize.Height),
                    bitmapInfo.RgbData, _drawBitmap.BackBufferStride, 0);
                return _drawBitmap;
            }
            else
            {
                newBitmap = false;
                _drawBitmap.WritePixels(new Int32Rect(0, 0, bitmapInfo.CurSize.Width, bitmapInfo.CurSize.Height),
                   bitmapInfo.RgbData, _drawBitmap.BackBufferStride, 0);
                return _drawBitmap;
            }
        }

''ffmpeg version git-... the FFmpeg developers built with gcc 9.3.1 (GCC) 20200523' Exception thrown when piping from and to stream

Version : 2.0.1, installed via nuget

I'm getting this exception message when trying to convert videos piping from and out to MemoryStream. Please see as below:

 public byte[] ConvertVideo(Stream inputStream)
 {
     var arguments = FFMpegArguments
     .FromPipe(new StreamPipeSource(inputStream))
     .WithVideoCodec(VideoCodec.LibX264)
     .Scale(VideoSize.Ld);

     using var outputStream = new MemoryStream();
     var streamPipeDataReader = new StreamPipeSink(outputStream);
     var processor = arguments.OutputToPipe(streamPipeDataReader);
     var success = processor.ProcessSynchronously();

     return outputStream.ToArray();
}

The exception message is

"FFMpegCore.Exceptions.FFMpegException: 'ffmpeg version git-2020-06-03-b6d7c4c Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200523
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 49.100 / 56. 49.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
\.\pipe\FFMpegCore_cae723fa-0c8c-4ec8-8ede-9668006b2432: Invalid data found when processing input'"

How can I fix it? Your help is greatly appreciated!

Regards,
Claire

Ffmpeg one seconds have freeze when use overlay

I Use Ffmpeg For Overlay Png on short video : For Example 5 seconds video I Use This Command :
-i C:\\part1.mp4 -i C:\\txt1.png -filter_complex \"overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2\" -c:v libx264 -pix_fmt yuv420p -codec:a copy C:\\outputtext1.mp4
one seconds freeze in playing ...
please help me
please download and see my output video :
Output Above Command

Can't get it to work

Hi,
I can't get this lib to work and it seems to be the only one that has what I want.
It crashes like this
Picture

Am I doing something wrong ?

Metadata

Would be useful to capture some metadata from the ffprobe data.

rotate - is my main need, looks like this shows up on the video stream tags also
creation_time
com.apple.quicktime.make
com.apple.quicktime.model
com.apple.quicktime.software
com.android.version

how to add an background image to a phone video?

how to add an background image to a phone video?
for example, i have a video that is 7201280 portrait, then i want to convert it to a wide video 1280720, the black part will filled with a background image, how should i do?

How to get video width and height size?

I am trying to snapshot a video on certain timespan using code below:

on code:
Bitmap _bmp = FFMpeg.Snapshot(_video, new Size(200, 400), TimeSpan.FromSeconds(_point));
I need to follow the original video width and height, how to do this?

MemoryStream _ms_mp4 = new MemoryStream(Convert.FromBase64String(_base64_mp4.Substring(_base64_mp4.IndexOf('/') + 1, 4)));

            MediaAnalysis _video = await FFProbe.AnalyseAsync(_ms_mp4);
            
            try
            {
         
                for (int _i = 1; _i <= _ja_snappoints.Count; _i++)
                {
                    int _point = (int)_ja_snappoints[_i];

                    Bitmap _bmp = FFMpeg.Snapshot(_video, new Size(200, 400), TimeSpan.FromSeconds(_point));
                    
                    using (MemoryStream _ms = new MemoryStream())
                    {
                        _bmp.Save(_ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        string _base64 = "data:image/jpeg;base64," + Convert.ToBase64String(_ms.ToArray());

                            _lsnapshot.Add(new { snappoint = _point, base64 = _base64 });
                       
                    }
                }
            }

Audio cuts in final video

Hello guys,

Thank you for making this library possible, I'm experiencing an issue with the Join method, I have some MP4 videos (10 videos) and I'm using the Join method to join them all into a single MP4 file, the MP4 file is good but the audio sometimes cut (matter of some milliseconds of silence between here and there).

It is worth noting that:

  1. The videos are not all shot with the same camera, so they have different properties
  2. Not all the clips have the same problem in the final MP4 file.

Thanks in advance guys, If you want any output or logs feel free to ask, I have no Idea yet what should logs I post.

EDIT
Turns out this problem happens when two videos have a different audio sample rate, if I Join two videos with the same audio sample rate there are no cuts

"Unexpected end when deserializing object" exception being thrown when using VideoInfo

Description:
When trying to get a video info using the VideoInfo class, for some videos there's a serialization exception being thrown.

Issue:
When trying to get a video info using the VideoInfo class, for some videos there's a serialization exception being thrown. Some video files work and some don't (I've tested with mp4 files).

Here's the top of the stack trace:

Newtonsoft.Json.JsonSerializationException: Unexpected end when deserializing object. Path 'streams[1].tags.language', line 1, position 3263.
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ThrowUnexpectedEndException(JsonReader reader, JsonContract contract, Object currentObject, String message)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
   at FFMpegCore.FFMPEG.FFProbe.ParseVideoInfoInternal(VideoInfo info, String probeOutput)
   at FFMpegCore.FFMPEG.FFProbe.ParseVideoInfo(VideoInfo info)
   at FFMpegCore.VideoInfo..ctor(FileInfo fileInfo)
   at FFMpegCore.VideoInfo..ctor(String path)

I've tried different versions of FFProbe (3.3, 4.1, 4.2) and the issue was still present.

I've done some digging through the source code and I think these changes may be the culprit:

6e67f77#diff-bcce3e7cc6c2eddca6d504ff49fefd25

or

a4c7d87#diff-63a7998600d7b2811c3cce31e1162127

Since it's a recent change, I've downgraded my nuget package reference to 1.0.12 and manged to get the video info just fine for the file I was previously getting serialization issues.

Expected:

Getting the VideoInfo should work as expected as FFProbe seems to get the metadata just fine.

FFMpeg.convert(ArgumentContainer ac) progress event not working

Description:

The progress event is not working, when using the convert method with a custom ArgumentContainer.

Issue:

When using a custom argument you have to create the ArgumentContainer manually.
This forces you to use the corresponding convert function, which breaks the progress event.
It only emits events with the same percentage.

Expected:

Progress event should work with either convert method.

Duration parsing issue with non en-US culture

There is an issue in FFMpegCore/FFMPEG/FFProbe.cs in the method ParseVideoInfo:
The double should be parsed with the CultureInfo.InvariantCulture parameter ,otherwise the value "1204.069522" is parsed as "1204069522" in the CultureInfo context. This obviously leads to incorrect values for the duration.

Simlified code to reproduce:
var duration = TimeSpan.FromSeconds(double.Parse("1204.069522"));
var duration = TimeSpan.FromSeconds(double.Parse("1204.069522", CultureInfo.InvariantCulture));

Error in MJPEG output

I am using the library to extract frames from a video file. So the output I am using is frame%06d.jpg.

However, the RunProcess method will always check for the existence of the output file, which doesn't exist in the way it expects. In the end, I always get the exception below.

if (!File.Exists(output.FullName) || new FileInfo(output.FullName).Length == 0)
    throw new FFMpegException(FFMpegExceptionType.Process, string.Join("\n", _instance.ErrorData));

OutputToFile should Throw appropriate error

when using OutputToFile("temp.webm"), I think overwrite should be default to true.
If it is set to false and file already exists it throws Object Reference set to null Exception. Which does not help in any way to find the problem. Hope I solve someone's 30 mins :)

live stream/ re-stream

Can I use this library to live stream / re-stream videos? How to perform live stream / re-stream like?
It would be great if it could work with asp.net-core to do just that.
thank you so much !!!

Missing DirectorySepChar

following code:

            if (Directory.Exists($"{Options.RootDirectory}{target}"))
            {
                progName = $"{target}{Path.DirectorySeparatorChar}{progName}";
            }

             var path = $"{Options.RootDirectory}{Path.DirectorySeparatorChar}{progName}";

should be changed to

            if (Directory.Exists($"{Options.RootDirectory}{Path.DirectorySeparatorChar}{target}"))
            {
                progName = $"{target}{Path.DirectorySeparatorChar}{progName}";
            }

             var path = $"{Options.RootDirectory}{Path.DirectorySeparatorChar}{progName}";

Cannot find file issue

Hello,

I'm trying to use FFMpegCore to help me determine what movies I have in an MKV container that aren't HEVC. All movies are stored on my home server, and I can access them just fine from any machine on my network. However, when I try to use var video = new VideoInfo(file.FullName); (where file is a FileInfo object) I get an error saying "The system cannot find the file specified". Is there an issue using FFMpegCore to access files over a network?

You need to fix this lib.

Terrible documentation, a copyargument uses 90% cpu and takes AGES to complete, progress doesnt report right. Ditching this LIB immediately.

Using params "-c copy -bsf:a aac_adtstoasc" get through a 2gb .ts file in like 10 seconds with regular ffmpeg. It takes a literal eternity even if you use the following with your lib:
public class RealCopyArgument : Argument
{
public override string GetStringValue()
{
return "-c copy -bsf:a aac_adtstoasc";
}
}

Problems with AnalyseAsync

string _mp4 = @"D:\Project\PTDigital\PrimeAI\tmp\test.mp4";
MediaAnalysis _video = await FFProbe.AnalyseAsync(@_mp4);

The system cannot find the file specified.

I try to load it as MemoryStream
MediaAnalysis _video = await FFProbe.AnalyseAsync(new MemoryStream(_bytes)); // THIS NEVER ENDING PROCESS

Concatenating Videos

is there an easy way to concatenate different parts of different videos into one video?

GPU Acceleration

is there a way to enable GPU acceleration? if not, is it something you're considering?

Frames colors get lost on output

Example Project, If I use BitmapVideoFrameWrapper to wrap around my Bitmap Frames and store ~65 Frames i.e. 2 seconds of footage and output to MP4 (to test if the output is correct before directly getting bytes of it) the colors shifts towards blue-ish tint and the output is not great. think this is a bug in BitmapVideoFrameWrapper but moderators can find out the real cause

VideoInfo (The system cannot find the file specified)

var videoInfo = VideoInfo.FromFileInfo(new FileInfo(Path.Combine(basePath, fileName)));

I am using above line of code. The path of my video file is perfect. But this line throws an exception "The system cannot find the file specified"

I am using .netCore 3.0 web app

get thumbnail, image become stretched

How to get thumbnail from mp4?

I try C# code below:

var video = FFMpegCore.VideoInfo.FromFileInfo(_mp4_fi);
Bitmap _bmp = encoder.Snapshot(video, outputFile, new Size(video.Height, video.Width), TimeSpan.FromSeconds(_i), false);

but produced image become stretched..

what I missed?

please help

NullReferenceException in FFMpegBase.IsWorking.get()

What I'm doing is I am recording my WPF application, saving screenshots of the program to a temp directory. Once we are finished recording, we join all of the saved images in the temp directory to an ImageSequence using FFMPEG.JoinImageSequence. We get a NullReferenceException when we call JoinImageSequence, which points to the get for IsWorking within FFBase as the root cause.

Here's the call stack.

FFMpegCore.dll!FFMpegCore.FFMPEG.FFBase.IsWorking.get()
FFMpegCore.dll!FFMpegCore.FFMPEG.FFBase.CreateProcess(string args, string processPath, bool rStandardInput, bool rStandardOutput, bool rStandardError)
FFMpegCore.dll!FFMpegCore.FFMPEG.FFMpeg.RunProcess(FFMpegCore.FFMPEG.Argument.ArgumentContainer container, System.IO.FileInfo output)
FFMpegCore.dll!FFMpegCore.FFMPEG.FFMpeg.JoinImageSequence(System.IO.FileInfo output, double frameRate, FFMpegCore.ImageInfo[] images)

I'm not sure but I believe doing

if(Process != null) {
    return Process.HasExited
} else {
    return false;
}

might be a better solution than what is currently happening, as I think the Process.Id in Process.GetProcesses().Any(x => x.Id == Process.Id) in the return statement might be what's causing the problem. I would be happy to do a pull request myself and figure it out if y'all would like.

Get all frames

Hi. How can I enumerate all frames? Frame by frame. There is method Stapshot, but this method get snapshot by TimeSpan. I need all frames without TimeSpans.

Looking for long term maintainer

I've been focusing on web development for a few years now, this project started as a small wrapper I wrote when I was developing some server side encoding routines.

I feel like I don't have the necessary time to maintain and keep this repository in a good shape so if anyone is interested, feel free to leave a comment here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.