Hello!
I have been working on the solution to develop video streaming services on server side using C#. In my case I need to implement videostream from file (or other stream, not any devices) to local network via Ethernet for clients. I try use AForge.NET Framework and AForge.FFmpeg.dll namespace. I convert my images to mp4 video.
My code for converting images to video file
using (var vFWriter = new VideoFileWriter())
{
vFWriter.Open("VideoMaker.avi", width, height, framRate, VideoCodec.MPEG4);
foreach (var imageEntity in lstImg)
{
var bmp = new Bitmap(imageEntity);
vFWriter.WriteVideoFrame(bmp);
}
Debug.WriteLine($"Images quantity: {lstImg.Count}");
vFWriter.Close();
}
So I think I need to use VideoFileReader class to read my video.
using (var fileReader = new VideoFileReader())
{
fileReader.Open("VideoMaker.avi");
Debug.WriteLine("width: " + fileReader.Width);
Debug.WriteLine("height: " + fileReader.Height);
Debug.WriteLine("fps: " + fileReader.FrameRate);
Debug.WriteLine("codec: " + fileReader.CodecName);
}
AForge.NET Framework does not provide any API for streaming video to network.
I think about FFmpeg and Gst-sharp(gstreamer), but I can't find any solution to create stream.
Any suggestions?
What I have tried:
AForge.NET
using (var fileReader = new VideoFileReader())
{
fileReader.Open("VideoMaker.avi");
Debug.WriteLine("width: " + fileReader.Width);
Debug.WriteLine("height: " + fileReader.Height);
Debug.WriteLine("fps: " + fileReader.FrameRate);
Debug.WriteLine("codec: " + fileReader.CodecName);
}