oronsultan Ответов: 1

Считывание видеотрансляции с карты колибри


hey guys,
I have a SBC (single board computer) called HummingBoard. 
2 small cameras are connected to this card and it is connected via a network cable to my computer.
Using external software I can get a picture from both cameras.
Right now my main goal is to write code in C# that could read the video from the same IP address that the card is transmitting and display it to a client written in WPF.
I would be very grateful if you could give me directions on how to get this started.
Right now all I have is an IP address that the card is sure to broadcast the video to and that's it. I mention that these are two cameras transmitting.
Thank you!


Что я уже пробовал:

I've tried several external libraries like Ozeski with no success

Gerry Schmitz

Если это "внешнее программное обеспечение" не имеет "интерфейса приложения" (то есть API), вам очень не повезло, и вам придется прибегнуть к c/c++. WPF не является таким "низкоуровневым".

oronsultan

Вы хотите сказать, что это не может быть реализовано в C#? Я точно знаю, что исходный код внешнего программного обеспечения, где я вижу видео, написан на Java.

Richard MacCutchan

Вы можете использовать любой язык, если есть интерфейс API, который обращается к данным, поступающим с HummingBoard. Но без API вам нужно использовать документацию производителя, чтобы узнать, как читать из него.

1 Ответов

Рейтинг:
2

RickZeeland

Если вы не знаете, какой протокол используется, Вы можете использовать сетевой анализатор, например приложение Wireshark.
Это не для слабонервных и требует некоторого изучения.
https://www.slant.co/improve/topics/3692/~самое лучшее-сеть-протокол-анализаторов[^]
Когда вы узнаете, какой протокол используется, попробуйте найти библиотеку, которая его поддерживает.

Посмотрите или используйте опцию поиска в Wireshark для таких вещей, как MJPEG, MPEG4, H264, RTSP и т. д.
Дополнительные сведения об анализе видеопотока см. В разделе: как извлечь информацию из каждого видеокадра в потоковом видео с помощью Wireshark? - Спросите Wireshark[^]
И: Wireshark – извлечение видео из файла захвата | thezitguy[^]

Я нашел кое-какую информацию о протокол RTP это может быть полезно: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml[^]


oronsultan

Здравствуйте RickZeeland,
Я послушался вашего совета и установил Wireshark. Теперь я вижу, что порт Src-53567, порт Dst-1900, а протокол-UDP. Как мне отсюда переехать?

RickZeeland

Смотрите обновленное решение :)

oronsultan

Еще раз спасибо за быстрый ответ. Мне кажется, я недостаточно хорошо объяснился. Мне нужна помощь, чтобы найти способ захватить эту трансляцию и отобразить ее через C # и WPF.

RickZeeland

Если вы знаете протокол, например RTSP, найдите библиотеку, которую вы можете использовать, например LIVE555 или Streamcoders medialibrary или Intel IPP.

oronsultan

протокол-UDP, а библиотека-datagramsocket (я думаю).

RickZeeland

UDP и TCP-это всего лишь основные протоколы, ищите такие вещи, как MJPEG, MPEG4, H264, RTSP. Если вы этого не видите, я боюсь, что все будет очень сложно, и вам понадобится инсайдерская информация / пример кода от производителя.

oronsultan

Привет, мне удалось найти протокол (RTP) и получить информацию, которая поступает с карты. Знаете ли вы хороший способ прочитать протокол RTP, чтобы я мог обработать информацию в виде изображения / видео?
Например:
"RTP0WI\n\0\u0001\0\0\0\u0014\0?\u0003\u0005\"\u001di%\u0014xB\0\0\0\0p~?s\0\0\0\0\0\0\0\0D002??VB?\u0001\0\0\u0006CAMERAZJ\0\0\nX\0\0\0H\0\0\0\u0001\0\0\0\0?\a\0\0\0\0\0\0\0\0\0\0\0\0?\0\0?\0\0?\0\0?z?ru?rs?rz?mu?nq?su?qv?rr?mp?st?qr?pv?qv?rs?ss?vl?ru\u007fwx?ws?uo?{\0\0?p?wu?yp?{t?\u007fs?z\0?\0\0?\0\0?\0t?|s?|u?}{?}\0?\0\0?\0\0?\0y??v??}?\u007f|??\0\0?\0\0?\0\0?{??\u007f??{??{??|??\0?\0\0?\0\0?\0}?????\u007f??\u007f??{??\u007f??}??|?????{???????????????????????????????????????????????????????????\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?w?xs?lr?jv?hm?tm?pk?tk?nr?pn?ro?pr\u007ftr~qt~wn\u007ftm?tl?sr\u007fuk?wx?ym?u\0\0?\0\0?n?vs?y\0\0?\0\0?\0?\0\0\0?\0\0?\0\0?v~~u??y?}\0?\0\0?\0\0?\0v??s??{??w??\0\0?\0\0?\0\0?\0\0?\0\0?}??|??\0?\0\0?\0\0\0?\u007f??\0\0????\0\0?\u007f?????\u007f??\u007f??|?????}??z????????????????????????????????????????????????????????\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?{?vq?ou?ro?qt|tr?qq\u007ftn?qp?qs?qn?tl\u007fuo?ql?sp?rn?up?tr?qp~zs?xt\u007fy\0\0?\0\0?n?uq?v\0\0?\0\0?\0\0?\0?\0\0?\0u?\u007f\0\0
?u?{q?{\0\0?\0?\0\0\0?\0\0?\0\0?y??\0\0?{??{??\0\0?t??\0\0?\0\0?~??\0?\0\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\u007f??\0\0?\0\0????x????????????????????????????????????????????????????????\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?\0\0?~?tx?os?qn?qm?nv?oq?ok~su\u007fqv?nm\u007fto~tq?qq{xp~th?qp?nr?ro~xn?vs\u007fwv}wq?u\0\0?r?w\0\0?t?v\0\0?\0\0?\0\0?\0\0?\0\0?v~~u??\0\0?\0?\0\0\0?x?~x??x??z??\0\0?y??\0\0"

RickZeeland

К сожалению, RTP может нести большое количество типов кодеков, см. объяснение здесь: https://cardinalpeak.com/blog/the-many-ways-to-stream-video-using-rtp-and-rtsp/
Поэтому вам нужна инсайдерская информация от производителя, чтобы иметь возможность расшифровать это.