LINUX.ORG.RU

Подключить две IP камеры.

 ,


1

1

Всем доброго времени суток.
Есть проект, в котором используется IP камера. Все было хорошо до того момента, как понадобилось подключить две таких камеры. Создаю два сокета, оба подключаются, но данные приходят только с одного — с того, который быстрее подключится. Подскажите, пожалуйста, куда копать?
Пы.Сы. Камеры имеют разные IP и MAC адреса, но работают на одном порту.



Последнее исправление: baldman88 (всего исправлений: 1)
Ответ на: комментарий от Andrey_Utkin

Прошу прощения. Вчера был день рождения, вот и написал ерунду.
Есть самопальные камеры на STM32, которые подключаются через Ethernet. Контроллер постоянно опрашивает матрицу и передает поученные данные (с помощью Ethernet-контроллера). Вот эти данные мне и нужно читать. Никакого rtsp там нет.

baldman88
() автор топика
Ответ на: комментарий от imb

Нет. С сигналами и слотами все в порядке. С одной из камер приходит неполный кадр. В конце каждого кадра вставляется разделитель. Если по получении разделителя число полученных байт не соответствует разрешению кадра (640х480), то буфер очищается (удаляются данные, полученные до разделителя и сам разделитель) и заполняется данными из следующего кадра.

baldman88
() автор топика
Ответ на: комментарий от imb

Вот я и хочу понять, почему он приходит неполным. Может я что-то (скорее всего так и есть) делаю не так. По отдельности они обе работают нормально. Меня больше интересует, не может ли это быть из-за того, что они раотают на одном порту?

baldman88
() автор топика
Ответ на: комментарий от baldman88

не может ли это быть из-за того, что они раотают на одном порту

Они отдают с одного порта или подключаются к одному порту? В любом случае это не должно вызывать проблем.
Кстати, какой протокол используется для передачи данных, tcp или udp, возможно у Вас проблема в этой части?

imb ★★
()
Ответ на: комментарий от baldman88

Предположу, что неполный кадр, потому что вы надеетесь считать из сокета все за один раз. В случае TCP надо в цикле читать данные пока не будет получено необходимое количество или соединение не будет закрыто.

four_str_sam
()

tcpdump или wireshark уже расчехлял?

Turbid ★★★★★
()

Ни с tcpdump ни с wireshark дел раньше не имел. Сижу разбираюсь. Теперь выяснилось, что кадры могут не доходить и от двух камер сразу. Появилась (возможно глупая) догадка. Камеры подключены через свич. Может ли быть такое, что ширины свича не хватает? Камеры шлют данные непрерывно. Получается каждая дает чуть больше 50 МБит/с. А свич на 100.

baldman88
() автор топика
Ответ на: комментарий от four_str_sam

Да так и делаю. Есть буфер. В него читаю по сигналу от сокета (то есть добавляю к тому, что уже было считано). Когда вижу разделитель, выгребаю из буфера все до разделителя (ну и его тоже). То, что пришло после разделителя остается в буфере до получения следующего разделителя.

baldman88
() автор топика
Ответ на: комментарий от anonymous

STM здесь вряд ли как-то влияет. Когда одна камера, то все в порядке. Здесь проблема в моем слабом понимании сетей и их работы.

baldman88
() автор топика
Ответ на: комментарий от baldman88

Получается каждая дает чуть больше 50 МБит/с

50 Мбит/сек видеопотока? У тебя там 4К video в 60фпс что-ли? Или RAW?

Pinkbyte ★★★★★
()
Ответ на: комментарий от baldman88

Скорее из за приёмного буфера карточки, попробуйте поиграться с ним и, возможно, поможет установка jumbo frame.

imb ★★
()
Ответ на: комментарий от imb

Сомневаюсь что оно поможет на тупой китайской железке под видом свитча и такой же карты..
Хотя на больших пакетах может и прокатить, но до того момента, когда понадобится 3-я камера.

expelled ★★
()
Ответ на: комментарий от imb

Дык, на материнской плате карта и так на гигабит. Сомневаюсь, что поднятие mtu здесь поможет. Там по дороге еще и свич стоит. А вот с ним вряд ли получится что-то сделать. Попробую поставить вторую сетевую.

baldman88
() автор топика
Ответ на: комментарий от expelled

Материнская плата не самая плохая на компьютере. С гигабитом. А вот про третью камеру — в точку. Начальство уже три хочет, хотя я еще с двумя ладу не могу дать.

baldman88
() автор топика
Ответ на: комментарий от baldman88

Дык, на материнской плате карта и так на гигабит

У нас была заметна разница между D-Link и Intel, обе дискретные.

imb ★★
()

Да, дело было в ширине канала. С гигабитным свичем все работает.

baldman88
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.