Page 2 of 3

Posted: Tue Feb 13, 2007 7:41 pm
by mrd
Thanks for looking at it...

Posted: Tue Feb 13, 2007 10:32 pm
by cordel
Here's a patch to enable mpeg streaming in the cycle window:

Code: Select all

--- ZoneMinder-1.22.3-Orig/web/zm_html_view_cycle.php	2006-05-17 05:51:33.000000000 -0700
+++ zm-1.22.3/web/zm_html_view_cycle.php	2007-02-13 14:22:37.517186794 -0800
@@ -117,18 +117,29 @@
 <?php
 if ( $mode == "stream" )
 {
-	$stream_src = getStreamSrc( array( "mode=jpeg", "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
-	if ( canStreamNative() )
+	if ( ZM_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT )
 	{
-?>
-<tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
-<?php
+		$stream_src = getStreamSrc( array( "mode=mpeg", "monitor=".$monitor['Id'], "scale=".$scale, "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_LIVE_FORMAT, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
+
+	?>
+	<tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputVideoStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'], ZM_MPEG_LIVE_FORMAT ) ?></a></td></tr>
+	<?php
 	}
 	else
 	{
-?>
-<tr><td colspan="3" align="center"><?php outputHelperStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ) ) ?></td></tr>
-<?php
+		$stream_src = getStreamSrc( array( "mode=jpeg", "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
+		if ( canStreamNative() )
+		{
+	?>
+	<tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
+	<?php
+		}
+		else
+		{
+	?>
+	<tr><td colspan="3" align="center"><?php outputHelperStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ) ) ?></td></tr>
+	<?php
+		}
 	}
 }
 else
Regards,
Corey

Posted: Wed Feb 14, 2007 3:13 pm
by mrd
Thanks!

Posted: Wed Feb 14, 2007 3:51 pm
by mrd
Ok.. I clearly know nothing about php, but I tried very hard to make this work and I can't win...

Here is the actual code I placed/replaced in zm_html_view_cycle.php


if ( $mode == "stream" )
{
if ( ZM_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT )
{
$stream_src = getStreamSrc( array( "mode=mpeg", "monitor=".$monitor['Id'], "scale=".$scale, "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_LIVE_FORMAT, "ttl=".ZM_WEB_REFRESH_CYCLE ) );

?>
<tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputVideoStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'], ZM_MPEG_LIVE_FORMAT ) ?></a></td></tr>
<?php
}
else
{
$stream_src = getStreamSrc( array( "mode=jpeg", "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
if ( canStreamNative() )
{
?>
<tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
<?php
}
else
{
?>
<tr><td colspan="3" align="center"><?php outputHelperStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ) ) ?></td></tr>
<?php
}
}
}
else
{
$image_src = getStreamSrc( array( "mode=single", "monitor=".$monitor['Id'], "scale=".$scale ) );
?>
<tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStill( $image_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
<?php
}
?>
</table>
</body>
</html>

Posted: Wed Feb 14, 2007 8:12 pm
by cordel
Replace the file from your source folder and use patch from the code I posted above.

Posted: Wed Feb 14, 2007 8:39 pm
by mrd
I actually tried to do exactly what you described...lol

I can't make sense of the patch because I'm not familar with php or the output that your code is in. Is it some type of source control "diff" of the files or when you say "patch" you mean to use some utility called "patch" to edit the file?

I'm confused so I tried to look at the "fix" you posted and copy the relevant parts into my zm_html_view_cycle.php, but I end up with a non-working version.

If there is any way you can post just the new code that needs to be added with a starting line or just the whole file, I might be able to paste it in. (without the +'s and other stuff..)

Sorry to be such a pain... I'm still learning...

Posted: Wed Feb 14, 2007 11:50 pm
by mrd
Ok.. I think I got it working now....

Posted: Thu Feb 15, 2007 2:20 am
by rdmelin
Thanks Corey for the patch.

Now included in latest RPM here:
http://www.fairpoint.net/~rdmelin/RPMS/mdk_2006/

Posted: Thu Feb 15, 2007 3:12 pm
by mrd
I'm having one small issue still.

If I try to use the cycle view on my Nokia N800 it still won't work. The other views like montage and single camera views work fine. In fact, if I create a webpage with the source code from one of the cycle views (that I grabbed when using a laptop running FireFox) and access it with my N800 it loads fine until the next monitor page is loaded and it starts to use the .php file again. It seems to me that it's a browser detection problem, but I can't seem to access the source code of the page on my N800 to see for sure what it's loading.

This is what my browser is recognized as by my zoneminder apache2:
74.0.48.234 - - [14/Feb/2007:20:54:48 -0500] "GET /zm/index.php?view=cycle&group=0&mid=4&mode=stream HTTP/1.1" 200 937 "http://74.0.48.236/zm/index.php?view=cy ... ode=stream" "Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux armv6l; U) Opera 8.5 [en_US] Maemo browser 0.7.6 RX-34_2007SE_2.2006.51-6"

It appears that both zm_html_view_cycle.php and zm_html_view_montagefeed.php use canStreamNative from zm_funcs.php, but I can't figure out why one works fine and the other doesn't.

Help...

Posted: Thu Feb 15, 2007 3:37 pm
by mrd
This may fix it but I won't know for a few hours until I can get home and test it...

root@zmserver:/var/www/zm# diff zm_funcs.php zm_funcs.ORIG
679,685d678
< function isOpera()
< {
< getBrowser( $browser, $version );
<
< return( $browser == "opera" );
< }
<
712c705
< return( ZM_CAN_STREAM == "yes" || ( ZM_CAN_STREAM == "auto" && isNetscape() ) || ( ZM_CAN_STREAM == "auto" && isOpera() ) );
---
> return( ZM_CAN_STREAM == "yes" || ( ZM_CAN_STREAM == "auto" && isNetscape() ) );

Posted: Thu Feb 15, 2007 10:15 pm
by mrd
Well, the fix you posted works on FireFox, but I can't get it to work on IE without pulling out the second copy of the full streaming link that makes the image a link to the watchstream.

I'm still debugging it and trying to understand what is going on but it might be a case of IE just not liking it. One possiblility would be to make the "Camera 1" text the link to the single watchfeed instead of the camera image.

Posted: Thu Feb 15, 2007 10:37 pm
by cordel
Okay I'm trying to grasp what it is you are trying to post.
First are you talking about two seperate issues?

You are correct in that you loose the link ability from the image in both montage and cycle when you have to use an external application like media player, and Flash player. I know this and have been looking for a solution. As far as flash player it can be done if you create a filash file to provide the link, which would be just one more thing that has to be downloaded so thats not preferable. I'm watching and searching for an alternative.

Posted: Fri Feb 16, 2007 12:57 am
by mrd
Ok.. here we go...

The fix you sent apears to load a webpage whos source code looks like this:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ZM - Cycle Watch</title>
<link rel="stylesheet" href="zm_html_styles.css" type="text/css">
<script type="text/javascript">
function newWindow(Url,Name,Width,Height)
{
var Win = window.open(Url,Name,"resizable,scrollbars,width="+Width+",height="+Height);
}
function closeWindow()
{
top.window.close();
}
window.setTimeout( "window.location.replace( '/zm/index.php?view=cycle&group=0&mid=2&mode=stream' )", 20000 );
</script>
</head>
<body style="margin: 0px">
<table width="96%" align="center" border="0" cellspacing="0" cellpadding="4">
<tr>
<td width="33%" align="left" class="text"><b>Camera1</b></td>
<td width="34%" align="center" class="text"><a href="/zm/index.php?view=cycle&mode=still&group=0&mid=">Stills</a></td>
<td width="33%" align="right" class="text"><a href="javascript: closeWindow();">Close</a></td>

</tr>
<tr><td colspan="3" align="center"><a href="javascript: newWindow( '/zm/index.php?view=watch&mid=1', 'zmWatch1', 416, 624 );"><img src="http://74.0.48.236/cgi-bin/zms?mode=jpe ... 1171585863" alt="Camera1" border="0" width="320" height="240">
</a></td></tr>

<tr><td colspan="3" align="center"><a href="javascript: newWindow( '/zm/index.php?view=watch&mid=1', 'zmWatch1', 416, 624 );"><embed type="application/x-shockwave-flash"
src="http://74.0.48.236/cgi-bin/zms?mode=mpe ... 1171585863"
width="320"
height="240"
name="Camera1"
autostart="1"
autoplay="1"
showcontrols="0"
controller="0">
</embed>
</a></td></tr>
</table>
</body>
</html>

There are two table rows that are almost the same and as far as I can tell, this is what allows the FireFox Browser to use the streaming image as a link to the single camera (watchfeed.php) view.

This works fine in FireFox but causes the streaming not to work in IE at all until I remove the first table row, but it loses the ability to link to the sigle camera view from the streaming image area.

The other issue I am having is that the scale=100 is not set properly by the zm_html_view_cycle.php script. It is set to "0" by the script so I temporarily hardcoded 100 and it works, but I'd like to fix the variable assignment in the script.

Fix for link issue: My possible suggestion was to make the text on the upper left of the cycle view where it has the "monitor name" the link to single camera view. This would allow IE and FireFox to handle the cycle view correctly.

The last issue I had was with my Nokia N800 not working with the cycle view. This seems to be a little different. There wasn't any changes need to zm_funcs.php that I mistakenly posted earlier, but there does seem to be a similar issue with the nearly duplicate table rows. The opera browser shows two streaming images with one below the other so it's picking up what should just enable the streaming image as a link and showing another streaming image.

Posted: Fri Feb 16, 2007 1:32 am
by mrd
I've got everything working as described in my previous post.

code diff:
root@zmserver:/var/www/zm# diff zm_html_view_cycle.ORIG zm_html_view_cycle.php
107c107
< <td width="33%" align="left" class="text"><b><?= $monitor['Name'] ?></b></td>
---
> <td width="33%" align="left" class="text"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><b><?= $monitor['Name'] ?></b></a></td>
120,121c120
< $stream_src = getStreamSrc( array( "mode=jpeg", "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
< if ( canStreamNative() )
---
> if ( ZM_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT )
122a122
> $stream_src = getStreamSrc( array( "mode=mpeg", "monitor=".$monitor['Id'], "scale=100", "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_LIVE_FORMAT, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
124c124
< <tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
---
> <tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputVideoStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'], ZM_MPEG_LIVE_FORMAT ) ?></a></td></tr>
128a129,137
> $stream_src = getStreamSrc( array( "mode=jpeg", "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS ) );
> if ( canStreamNative() )
> {
> ?>
> <tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
> <?php
> }
> else
> {
131a141
> }

Actual code with line numbers:
107 <td width="33%" align="left" class="text"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><b><?= $monitor['Name'] ?></b></a></td>
108 <?php if ( $mode == "stream" ) { ?>
109 <td width="34%" align="center" class="text"><a href="<?= $PHP_SELF ?>?view=<?= $view ?>&mode=still&group=<?= $group ?>&mid=<?= $mid ?>"><?= $zmSlangStills ?></a></td>
110 <?php } elseif ( canStream() ) { ?>
111 <td width="34%" align="center" class="text"><a href="<?= $PHP_SELF ?>?view=<?= $view ?>&mode=stream&group=<?= $group ?>&mid=<?= $mid ?>"><?= $zmSlangStream ?></a></td>
112 <?php } else { ?>
113 <td width="34%" align="center" class="text">&nbsp;</td>
114 <?php } ?>
115 <td width="33%" align="right" class="text"><a href="javascript: closeWindow();"><?= $zmSlangClose ?></a></td>
116 </tr>
117 <?php
118 if ( $mode == "stream" )
119 {
120 if ( ZM_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT )
121 {
122 $stream_src = getStreamSrc( array( "mode=mpeg", "monitor=".$monitor['Id'], "scale=100", "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_LIVE_FORMAT, "ttl=".ZM_WEB_REFRESH_CYCLE ) );
123 ?>
124 <tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputVideoStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'], ZM_MPEG_LIVE_FORMAT ) ?></a></td></tr>
125 <?php
126 }
127 else
128 {
129 $stream_src = getStreamSrc( array( "mode=jpeg", "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS ) );
130 if ( canStreamNative() )
131 {
132 ?>
133 <tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
134 <?php
135 }
136 else
137 {
138 ?>
139 <tr><td colspan="3" align="center"><?php outputHelperStream( $stream_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ) ) ?></td></tr>
140 <?php
141 }
142 }
143 }
144 else
145 {
146 $image_src = getStreamSrc( array( "mode=single", "monitor=".$monitor['Id'], "scale=".$scale ) );
147 ?>
148 <tr><td colspan="3" align="center"><a href="javascript: newWindow( '<?= $PHP_SELF ?>?view=watch&mid=<?= $monitor['Id'] ?>', 'zmWatch<?= $monitor['Id'] ?>', <?= $monitor['Width']+$jws['watch']['w'] ?>, <?= $monitor['Height']+$jws['watch']['h'] ?> );"><?php outputImageStill( $image_src, reScale( $monitor['Width'], $scale ), reScale( $monitor['Height'], $scale ), $monitor['Name'] ) ?></a></td></tr>
149 <?php
150 }
151 ?>
152 </table>
153 </body>
154 </html>

Posted: Fri Feb 16, 2007 1:44 am
by cordel
Yhen you must have done something wrong with you file as mine parses as

Code: Select all

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ZM - Cycle Watch</title>
<link rel="stylesheet" href="zm_html_styles.css" type="text/css">
<script type="text/javascript">
function newWindow(Url,Name,Width,Height)
{
	var Win = window.open(Url,Name,"resizable,scrollbars,width="+Width+",height="+Height);
}
function closeWindow()
{
	top.window.close();
}
window.setTimeout( "window.location.replace( '/zm/index.php?view=cycle&group=0&mid=1&mode=stream' )", 10000 );
</script>
</head>
<body style="margin: 0px">
<table width="96%" align="center" border="0" cellspacing="0" cellpadding="4">
<tr>
<td width="33%" align="left" class="text"><b>New</b></td>
<td width="34%" align="center" class="text"><a href="/zm/index.php?view=cycle&mode=still&group=0&mid=3">Stills</a></td>
<td width="33%" align="right" class="text"><a href="javascript: closeWindow();">Close</a></td>

</tr>
	<tr><td colspan="3" align="center"><a href="javascript: newWindow( '/zm/index.php?view=watch&mid=3', 'zmWatch3', 736, 864 );"><embed type="application/x-shockwave-flash" 
src="http://localhost/cgi-bin/zm/nph-zms?mode=mpeg&monitor=3&scale=50&bitrate=150000&maxfps=15&format=swf&ttl=10&rand=1171589341"
width="320"
height="240"
name="New"
autostart="1"
autoplay="1"
showcontrols="0"
controller="0">
</embed>
</a></td></tr>
	</table>
</body>
</html>
I get about the same thing in both FF and IE, which by the way required loading XP which is not my favorite thing to do. Check your code.

here is IE

Code: Select all

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ZM - Cycle Watch</title>
<link rel="stylesheet" href="zm_html_styles.css" type="text/css">

<script language="JavaScript">
<!--

function SymError()
{
  return true;
}

window.onerror = SymError;

var SymRealWinOpen = window.open;

function SymWinOpen(url, name, attributes)
{
  return (new Object());
}

window.open = SymWinOpen;

//-->
</script>

<script type="text/javascript">
function newWindow(Url,Name,Width,Height)
{
	var Win = window.open(Url,Name,"resizable,scrollbars,width="+Width+",height="+Height);
}
function closeWindow()
{
	top.window.close();
}
window.setTimeout( "window.location.replace( '/zm/index.php?view=cycle&group=0&mid=3&mode=stream' )", 30000 );
</script>
</head>
<body style="margin: 0px">
<table width="96%" align="center" border="0" cellspacing="0" cellpadding="4">
<tr>
<td width="33%" align="left" class="text"><b>PVR-150</b></td>

<td width="34%" align="center" class="text"><a href="/zm/index.php?view=cycle&mode=still&group=0&mid=">Stills</a></td>
<td width="33%" align="right" class="text"><a href="javascript: closeWindow();">Close</a></td>
</tr>
	<tr><td colspan="3" align="center"><a href="javascript: newWindow( '/zm/index.php?view=watch&mid=1', 'zmWatch1', 736, 864 );"><embed type="application/x-shockwave-flash" 
src="http://192.168.1.103/cgi-bin/zm/nph-zms?mode=mpeg&monitor=1&scale=50&bitrate=25000&maxfps=5&format=swf&ttl=30&rand=1171590328"
width="320"
height="240"
name="PVR-150"
autostart="1"
autoplay="1"
showcontrols="0"
controller="0">
</embed>
</a></td></tr>
	</table>
</body>
</html>

<script language="JavaScript">
<!--
var SymRealOnLoad;
var SymRealOnUnload;

function SymOnUnload()
{
  window.open = SymWinOpen;
  if(SymRealOnUnload != null)
     SymRealOnUnload();
}

function SymOnLoad()
{
  if(SymRealOnLoad != null)
     SymRealOnLoad();
  window.open = SymRealWinOpen;
  SymRealOnUnload = window.onunload;
  window.onunload = SymOnUnload;
}

SymRealOnLoad = window.onload;
window.onload = SymOnLoad;

//-->
</script>