Национальный стандарт видеонаблюдения GB/T28181 поддерживает доступ TCP и UDP, в основном полагаясь на протокол связи и механизм передачи, определенные в стандарте. Ниже приводится подробное объяснение этих двух методов доступа:
надежность:TCPпротокол Обеспечить ориентированное на соединение、Надежный сервис потоков байтов。Во время передачи данных,TCP-протокол обеспечит целостность и порядок данных,Исправьте ошибки передачи с помощью механизма повторной передачи.
контроль потока:TCPпротокол С функцией контроля потока,Возможность контролировать скорость передачи данных между отправителем и получателем.,Это сделано для того, чтобы получатель не смог обработать данные из-за того, что отправитель отправил их слишком быстро.
контроль перегрузок:TCPпротокол Также имеетконтроль перегрузок Функция,Возможность автоматического снижения скорости передачи данных при перегрузке сети.,для снижения нагрузки на сеть.
В GB/T28181 метод доступа TCP в основном используется для передачи видеопотоков. Когда устройства (такие как IPC, NVR и т. д.) подключаются к платформе видеонаблюдения через протокол TCP, они устанавливают TCP-соединение и передают данные потокового видео через это соединение.
Режимы доступа TCP включают активный режим TCP и пассивный режим TCP. В активном режиме TCP устройство действует как клиент и активно инициирует соединение с платформой; в пассивном режиме TCP платформа действует как сервер и прослушивает TCP-порт, ожидая, пока устройство инициирует соединение.
высокийэффективность:UDPпротоколэто соединение без установления соединения、Ненадежный протокол транспортного уровня. Это не гарантирует порядок пакетов.、целостность инадежность,поэтому Эффективность передачисравниватьвысокий。
в реальном времени:потому чтоUDPпротокол Никаких сложных рукопожатий и механизмов подтверждения,Следовательно, его задержка передачи больше, чем у Низкого.,Применимо к Да реальном времени Требоватьсравниватьвысокийиз Сценарии применения (например, передача аудио и видео).
В GB/T28181 метод доступа UDP также широко используется для передачи видеопотоков. Платформа сначала включит мониторинг порта UDP и передаст информацию описания носителя UDP-порта при инициировании запроса INVITE. Устройство активно отправляет потоки RTP на платформу через этот порт.
Метод доступа UDP прост и непосредственен и не требует установления соединения и сложных процессов установления связи. Поэтому он подходит для сценариев, требующих быстрой передачи и высоких требований к работе в реальном времени.
TCP-метод доступа | UDP-метод доступа | |
---|---|---|
надежность | высокий | Низкий |
Эффективность передачи | относительно Низкий | высокий |
в реальном времени | относительно Низкий | высокий |
Сценарии применения | Сценарии применения, требующие надежной передачи и сложного контроля | Да реальном времени Требоватьвысокийи данадежность Требовать Нетвысокийиз Сценарии применения (например, передача аудио и видео) |
Пример использования библиотеки JAIN SIP для поддержки доступа TCP и UDP в Java относительно сложен, поскольку сам JAIN SIP представляет собой реализацию стека протоколов, который поддерживает несколько протоколов транспортного уровня, но конкретные детали реализации (например, как одновременно прослушивайте TCP и UDP) UDP-порт) обычно зависит от конкретной SIP-библиотеки или платформы, которую вы используете.
Однако я могу предоставить концептуальный пример и шаги, которые помогут вам настроить точки прослушивания TCP и UDP в приложении SIP. Обратите внимание, что следующие примеры, возможно, потребуется скорректировать в зависимости от конкретной реализации библиотеки SIP.
Сначала вам необходимо инициализировать стек SIP и установить необходимые свойства.
SipFactory sipFactory = SipFactory.getInstance();
sipFactory.setPathName("gov.nist"); // Предполагая, что вы используете JAIN NIST. реализация SIP
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "MySipStack");
// Установите другие свойства стека SIP...
SipStack sipStack = sipFactory.createSipStack(properties);
Тогда вам нужно Создать точку прослушивания для TCP и UDP соответственно.
// Создать точку прослушивания UDP
ListeningPoint udpListeningPoint = sipStack.createListeningPoint("127.0.0.1", 5060, "udp");
// Создайте точку прослушивания TCP
ListeningPoint tcpListeningPoint = sipStack.createListeningPoint("127.0.0.1", 5061, "tcp");
Создайте поставщика SIP для каждой точки прослушивания и добавьте прослушиватели SIP к этим поставщикам.
SipProvider udpProvider = sipStack.createSipProvider(udpListeningPoint);
udpProvider.addSipListener(new MySipListener()); // Предположим, что MySipListener реализует интерфейс SipListener.
SipProvider tcpProvider = sipStack.createSipProvider(tcpListeningPoint);
tcpProvider.addSipListener(new MySipListener()); // Вы можете использовать один и тот же прослушиватель или разные прослушиватели для каждого провайдера.
вам нужно реализоватьSipListener
интерфейс для обработкиSIPсобытие,Такие как запросы, ответы и таймауты.
public class MySipListener implements SipListener {
// Реализовать процесс Запрос, processResponse, ProcessTimeout и другие методы
@Override
public void processRequest(RequestEvent requestEvent) {
// Обработка SIP-запросов
// ...
}
// Реализуйте другие методы...
}