Тогда ничего не остается, как пробрасывать через нат.
А сейчас не работает скорее всего из-за того, что камера использует кроме порта для отдачи http страниц (80) еще какие-то для передачи именно потока, смотреть либо в документации, либо подключит камеру напрямую к компьютеру, запустить снифер сетевого трафика, и открыть в браузере видео с камеры.
Снифером посмотреть какие порты со стороны камеры задействованы и прокидывать их все вместе с 80-ым наружу - все будет работать.
К примеру на сайте dlink, для другой камеры, но смысл понятен:
http://www.dlink.ru/ru/faq/82/400.html
бла, бла, бла....
Для каждой камеры необходимо открыть на Интернет-шлюзе для доступа три порта. По умолчанию для камер DCS-3220 и DCS-3420 это следующие порты;
80(TCP) HTTP порт (открывает доступ к WEB-интерфейсу);
5002(TCP&UDP) порт аудиопотока (транслирует синхронизированный аудиопоток);
5003(TCP&UDP) порт видеопотока (транслирует синхронизированный видеопоток).
Если посмотреть на эмулятор вашей камеры :
http://support.dlink.com/emulators/dcs900w/
то на вкладке setup->system->advanced есть пункт "Open Second Port" с припиской -
1 : Web Server - Default 80
2 : Transfer Image - Default 8481
Получается, что DCS900 по умолчанию использует порты 80, 8481.
Про размещение виде на сайте:
http://www.dlink.ru/ru/faq/82/391.html
Код: Выделить всё
Для DCS-900
<BODY bgcolor=c6cbcf topmargin=0 text=white onload="Init()">
<form action="/Jview.htm" method="POST">
<table width=0 border=0 cellpadding=0 cellspacing=0>
<tr>
<td colspan=2 align=center bgcolor=c6cbcf>
<APPLET name="cvcs" CODEBASE="http://xxx.xxx.xxx.xxx.yy/" CODE="xplug.class" WIDTH=320 HEIGHT=240>
<param name="RemotePort" value=yy>
<param name="Timeout" value=5000>
<param name="RotateAngle" value=0>
<param name="PreviewFrameRate" value=2>
<param name="DeviceSerialNo" value="">
</APPLET>
</td>
</tr>
</table>
</form>
</BODY>
Второй вариант для DCS-900
<SCRIPT LANGUAGE="JavaScript">
function Init() {
cvcs.RemoteHost = "xxx.xxx.xxx.xxx"
cvcs.RemoteWeb = yy
cvcs.Timeout = 5
cvcs.AuthType = 1
cvcs.PreviewFrameRate = 1
cvcs.PreviewWidth = 320
cvcs.PreviewHeight = 240
cvcs.DeviceSerialNo = ""
window.setInterval("ShowFrameRate()", 1000)
}
function ShowFrameRate() {
if (1)
{
var fFrameRate = cvcs.FrameRate
window.status = "Frame:" + fFrameRate.toString() + " fps"
}
cvcs.Play()
cvcs.GetRealTimeData()
CurrentTime.innerHTML = cvcs.TimeString
}
</SCRIPT>
<BODY bgcolor=c6cbcf topmargin=0 text=white onload="Init()" onunload="cvcs.Stop()">
<table width=740 border=0 cellpadding=0 cellspacing=0>
<tr>
<td colspan=2 align=center bgcolor=c6cbcf>
<OBJECT ID="cvcs" WIDTH=320 HEIGHT=240
CLASSID="CLSID:31150A86-0BBA-409f-BEB4-F3922D10BF34"
CODEBASE="http://xxx.xxx.xxx.xxx:yy/xplug.ocx#version=2,0,0,0">
</OBJECT>
</td>
</tr>
</TABLE>
<!-- Add Form End -->
</td>
</tr>
</table>
</BODY>
где xxx.xxx.xxx.xxx - внешний ip вашей камеры
yy - её HTTP порт
Если изображение не передаётся, то:
1. Нужно убедиться, то порт yy TCP открыт для доступа извне и изнутри.
2. Убедиться что CLASSID в коде сайта совпадает с CLASSID вашей камеры (для этого нужно открыть Web-интерфейс Вашей камеры и посмотреть его HTML-код
3. Убедитесь что CODEBASE version так же совпадает с CODEBASE version вашей камеры
Так же нужно учесть, что:
1. система будет работать только в том случае, если не установлен пароль администратора
2. в случае с DCS-5000W через окно вывода видео будет доступен контроль над камерой (можно будет поворачивать используя мышь)
3. ЭТО НЕДОКУМЕНТИРОВАННАЯ ФУНКЦИЯ