После курения гугла и танцев с бубнами все таки решил проблему, с небольшой оговоркой.
Как известно, в RTSP существует 2 режима:
- Non-Interleaved Mode (2хUDP + 1TCP);
- Interleaved Mode (TCP). Non-Interleaved Mode
В
Non-Interleaved Mode клиент и камера использует по 2 UDP порта с каждой стороны. Клиент сообщает случайных 2 соседних UDP порта, куда камера сможет отправлять поток.
Порты камеры статичны, и мы их можем легко пробросить (и их нужно пробрасывать, на них клиент шлет несколько пакетов в 32 байта перед посылкой потока камерой), однако если и клиент находится за своим NAT, то пробросить со своей стороны заранее неизвестные порты невозможно для простых роутеров- нужно иметь возможность как в Mikrotik делать выборку по порту источнику Src. Port (а не Dst. Port), так как мы его знаем, в данном случае в моей камеры это 40000-40001 UDP порты.
Проснифил весь трафик от камеры через оба NAT до процесса VCL Player и все завелось, хоть почему то нестабильно, иногда включаешь play, но картинки нет, хотя трафик стабильно идет, однако если запустилось уже то все ок. Почему так не знаю. Вообщем, хорошо небольшая нагрузка на сеть, малые задержки, но сложно, особенно, если удаленных камер больше одной.
В
Interleaved Mode используется только одно tcp соединение на 554 порту, и для потока и для управления. Выбор режима лежит на клиенте (конечно если сервер/камера поддерживает).
VCL Player успешно играет поток с камеры в этом режиме, если:
On the VLC media player Tools menu, click Preferences.
In the Simple Preferences dialog box, click Input / Codecs in the contents panel.
In Input & Codecs Settings, in the Network area, change the Live555 stream transport option from HTTP (default) to RTP over RTSP (TCP).
Click Save.
Соответственно пробросить камеру тут очень просто и нужен проброс только со стороны камеры. Несколько больше накладные расходы, выше задержка, но все банально просто как с одной камерой, так и с десятками.