Мне просто не везет с этим. Я звоню OpenCvSharp.VideoCapture ("udp: //0.0.0.0: 11111"), чтобы попытаться прочитать видеопоток. Это не работает, и документация, кажется, не поддерживает потоковую передачу.
Я также пытался (без успеха) пытаться захватывать изображения с помощью OpenCvSharp, но я не знаю, как это сделать. Документация для него не показывает никаких признаков того, что это также возможно.
Фрагмент этого здесь:
var vc = new OpenCvSharp.VideoCapture("udp://0.0.0.0:11111");
if (!vc.IsOpened())
{
vc.Open("udp://0.0.0.0:11111");
}
while (true)
{
var matImage = new OpenCvSharp.Mat();
if (vc.Read(matImage))
{
try
{
var bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(matImage);
using (var ms = new MemoryStream())
{
var bmpImg = new BitmapImage();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
bmpImg.StreamSource = ms;
this.videoFrameImage.Background = new ImageBrush(bmpImg);
this.isReadingVideoStream = true;
}
}
catch
{
// just swallow exception
}
}
}
Перед попыткой OpenCvSharp (что выглядело чрезвычайно многообещающим), я попытался использовать ffmpeg с легким / частичным успехом. Мне удалось выделить кадр из потокового видео в реальном времени и сохранить его в файл. К сожалению, поведение не было последовательным. Иногда это сохраняет изображения, иногда нет. А когда он сохраняет изображения, обычно это всего лишь несколько (хотя видео постоянно транслируется).
Командная строка для этого находится здесь:
ffmpeg.exe -i udp: //0.0.0.0: 11111 -ss 00:00:01 -vframes 1 -q: v 1 -y filename.jpg
Я могу go вернуться к повторной попытке с ffmpeg как я получаю абсолютно никуда с OpenCvSharp. Хотите знать, если кто-нибудь там успешно реализовывал с помощью одного из них (или другим способом)?
* Обновление *
Я нашел набор пакетов Nuget, который делает указать поддержку потокового видео. Это следующие нюансы:
- OpenCvSharp4
- OpenCvSharp4. Windows
- OpenCvSharp4.runtime.win
Но сейчас я сейчас нахожусь возникла ошибка времени выполнения:
Method not found: 'Void OpenCvSharp.VideoCapture..ctor(System.String, OpenCvSharp.VideoCaptureAPIs)'.
Кстати, я просто поднял эту проблему :