Как создать потоковое видео для локальной сети с помощью C#
- Привет!
Я работал над решением для разработки сервисов потоковой передачи видео на стороне сервера с использованием C#. В моем случае мне нужно реализовать видеопоток из файла (или другого потока, а не каких-либо устройств) в локальную сеть через Ethernet для клиентов. Я стараюсь использовать AForge.NET Framework и AForge.FFmpeg.пространство имен файлов. Я конвертирую свои изображения в mp4-видео.
Мой код для преобразования изображений в видеофайл
using (var vFWriter = new VideoFileWriter()) { // Create file vFWriter.Open("VideoMaker.avi", width, height, framRate, VideoCodec.MPEG4); foreach (var imageEntity in lstImg) { //var bmp = ToBitmap(ImageToByteArray(lstImg)); var bmp = new Bitmap(imageEntity); vFWriter.WriteVideoFrame(bmp); } Debug.WriteLine($"Images quantity: {lstImg.Count}"); vFWriter.Close(); }
Поэтому я думаю, что мне нужно использовать класс VideoFileReader для чтения моего видео.
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 не предоставляет никакого API для потоковой передачи видео в сеть.
Я думаю о FFmpeg и Gst-sharp(gstreamer), но не могу найти никакого решения для создания потока.
Есть предложения?
Что я уже пробовал:
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); }