Решение не претендует на абсолютную истину, возможно можно сделать проще, но у меня получилось так:
Часто видел вопрос:
Я тоже в свое время задумался над этой проблемой, и.... смог её решить...прописал камеру:теперь если смотреть из локалки, всё нормально, а вот если же смотреть из вне, соответственно ничего не отображает.Код: Выделить всё
<img src="http://192.168.0.103:8080/">
Так же и наоборот. То есть если в коде я пропишу внешний IP, то из вне отображает, а из локалки нет.
Как можно добавить такую камеру, чтоб её было видно отовсюду?
суть такова - нужно чтобы система определяла с какого ip подключен сейчас клиент и соответственно подставляла
либо ip из локалки (192.168.1.103 например, а 192.168.1.100 это адрес MJD)
либо ip внешний (78.88.18.5 например), но во втором случае обязательно должна быть сделана переброска портов в роутере (через который нам инет идет):
вот пример как я сделал в "Домашних страницах" (одна web камера и четыре камеры с видеорегистратора):
<tr>
<td align="center">
<script type="text/javascript" src="/user_js.php"></script>
<script type="text/javascript">
var height_array = new Array();
var width_array = new Array();
width_array[1] = 400;
height_array[1] = 300;
ipadr = "78.88.18.5";
ipvid = "78.88.18.5";
if ( (~glUserIpAdderss.indexOf ("192.168")) || (glUserIpAdderss == "127.0.0.1") ) {
ipadr = "192.168.1.100";
ipvid = "192.168.1.103";
}
document.write ('<img src="http://' + ipadr + ':8088/loading.jpg" class="webcam" id="webcam1" onmousedown="PTZMouseDown1(event)" width="400" height="300" alt="Live Stream" />');
<!--
currentCamera1= 1;
errorimg1= 0;
DoIt1();
document.images.webcam1.onload = DoIt1();
document.images.webcam1.onerror = ErrorImage1();
function LoadImage1()
{
uniq1 = Math.random();
document.images.webcam1.src = "http://"+ipadr+":8088/cam_" + currentCamera1 + ".jpg?uniq="+uniq1;
document.images.webcam1.onload = DoIt1;
}
function PTZMouseDown1(e)
{
var IE = document.all?true:false;
var x,y;
var myx,myy;
var myifr = document.getElementById("_iframe-ptz");
tp = getElPos1();
myx = tp[0];
myy = tp[1];
if(IE){
var scrollX = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
var scrollY = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
x = event.clientX - myx + scrollX;
y = event.clientY - myy + scrollY;
} else {
x = e.pageX - myx;
y = e.pageY - myy;
}
if ((width_array[currentCamera1] != null) && (width_array[currentCamera1] > 0)) x = Math.round((x * 400) / width_array[currentCamera1]);
if ((height_array[currentCamera1] != null) && (height_array[currentCamera1] > 0)) y = Math.round((y * 300) / height_array[currentCamera1]);
if (x > 400) x = 400;
if (y > 300) y = 300;
if (myifr != null) myifr.src = "http://"+ipadr+":8088/ptz?src=" + currentCamera1 + "&moveto_x=" + x + "&moveto_y=" + y +"";
return true;
}
function getElPos1()
{
el = document.images.webcam1;
x = el.offsetLeft;
y = el.offsetTop;
elp = el.offsetParent;
while(elp!=null)
{ x+=elp.offsetLeft;
y+=elp.offsetTop;
elp=elp.offsetParent;
}
return new Array(x,y);
}
function ErrorImage1()
{
errorimg1++;
if (errorimg1>3){
document.images.webcam1.onload = "";
document.images.webcam1.onerror = "";
document.images.webcam1.src = "offline.jpg";
}else{
uniq1 = Math.random();
document.images.webcam1.src = "http://"+ipadr+":8088/cam_" + currentCamera1 + ".jpg?uniq="+uniq1;
}
}
function DoIt1()
{
errorimg1=0;
window.setTimeout("LoadImage1();", 40);
}
//-->
</script>
</td>
<td>
</td>
</tr>
<tr>
<td align="center">
Камера №1<br/>
<script type="text/javascript">
document.write ('<embed src="back.GIF" name="movie1" qtsrc="rtsp://' + ipvid + ':554/user=admin&password=&channel=1&stream=0.sdp?real_stream--rtp-caching=100" controller="false" width="400" height="300" loop="false" scale="tofit" wmode="Transparent" autoplay="true" kioskmode="true" enablejavasript="true" href="javaScript:void(0)" target="Myself" allowfullscreen="true" bgcolor="black" plugin="quicktimeplugin" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/">');
</script>
</td>
<td align="center">
Камера №2<br/>
<script type="text/javascript">
document.write ('<embed src="back.GIF" name="movie1" qtsrc="rtsp://' + ipvid + ':554/user=admin&password=&channel=2&stream=0.sdp?real_stream--rtp-caching=100" controller="false" width="400" height="300" loop="false" scale="tofit" wmode="Transparent" autoplay="true" kioskmode="true" enablejavasript="true" href="javaScript:void(0)" target="Myself" allowfullscreen="true" bgcolor="black" plugin="quicktimeplugin" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/">');
</script>
</td>
</tr>
<tr>
<td align="center">
Камера №3<br/>
<script type="text/javascript">
document.write ('<embed src="back.GIF" name="movie1" qtsrc="rtsp://' + ipvid + ':554/user=admin&password=&channel=3&stream=0.sdp?real_stream--rtp-caching=100" controller="false" width="400" height="300" loop="false" scale="tofit" wmode="Transparent" autoplay="true" kioskmode="true" enablejavasript="true" href="javaScript:void(0)" target="Myself" allowfullscreen="true" bgcolor="black" plugin="quicktimeplugin" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/">');
</script>
</td>
<td align="center">
Камера №4<br/>
<script type="text/javascript">
document.write ('<embed src="back.GIF" name="movie1" qtsrc="rtsp://' + ipvid + ':554/user=admin&password=&channel=4&stream=0.sdp?real_stream--rtp-caching=100" controller="false" width="400" height="300" loop="false" scale="tofit" wmode="Transparent" autoplay="true" kioskmode="true" enablejavasript="true" href="javaScript:void(0)" target="Myself" allowfullscreen="true" bgcolor="black" plugin="quicktimeplugin" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/">');
</script>
</td>
</tr>
</table>
/*отключаем кеширование*/
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0");
header("Cache-Control: max-age=0");
header("Pragma: no-cache");
/*Заголовок о том что это java script (необязательно) (для красоты)*/
header("Content-type: text/javascript");
?>
var glUserIpAdderss = "<?=$_SERVER['REMOTE_ADDR'];?>";
var glUSerLang = "<?=$_SERVER['HTTP_ACCEPT_LANGUAGE'];?>";
var glUserAgent = "<?=$_SERVER['HTTP_USER_AGENT'];?>";
может кому пригодиться (не забываем про проброску порта в роутере)!

ip адреса изменены (не реальные)
