【发布时间】:2011-11-14 22:20:51
【问题描述】:
我正在使用 jQuery Cycle 插件来旋转混合图像和 FLV 视频。对于图像,我将超时持续时间固定为 3000 毫秒,但对于视频,它基于视频长度,这就是我的问题开始的地方。我的第一个视频的时长总是:
var value = 0;
$(document).ready(function() {
$('.slideshow').cycle({
fx:'scrollLeft,scrollRight',
speed: 1500,
timeoutFn: valueFn
});
function valueFn(currElement, nextElement, opts, isForward){
value = parseInt($('#duration').val());
return value;
}
});
...
...
<div id="image">
<ul class="slideshow">
<?php
$dir = "media/images";
if (is_dir($dir)) {
if (($dh = opendir($dir))) {
$i = 0;
$name = 'FLVPlayer';
while (($file = readdir($dh)) !== false) {
if ($file == '.' || $file == '..')
continue;
$ext = explode(".", $file);
if (@$ext[1] == null)
continue;
switch ($ext[1]) {
case "jpg":
echo "<input type=\"hidden\" id=\"duration\" name=\"val\" value=\"3000\" />
<li><img src=\"media/images/" . $file . "\" width=\"848\" height=\"608\" /></li>";
break;
case "flv":
$flv = fopen("media/images/".$file, "rb");
fseek($flv, -4, SEEK_END);
$arr = unpack('N', fread($flv, 4));
$last_tag_offset = $arr[1];
fseek($flv, -($last_tag_offset + 4), SEEK_END);
fseek($flv, 4, SEEK_CUR);
$t0 = fread($flv, 3);
$t1 = fread($flv, 1);
$arr = unpack('N', $t1 . $t0);
$milliseconds_duration = $arr[1];
$milliseconds_duration;
$html = <<<HTML
<input type="hidden" id="duration" value="{$milliseconds_duration}" />
<li>
<div id="container{$i}">Loading the player ...</div>
<script type="text/javascript">
jwplayer("container{$i}").setup({
flashplayer: "js/player.swf",
file: "media/images/{$file}",
height: 608,
width: 848,
"controlbar.idlehide": true,
icons: false,
events: {
onReady: function() { this.play(); }
}
});
</script>
</li>
HTML;
echo $html;
$i++;
break;
case "txt":
$myFile = "media/images/" . $file;
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo "<li>" . $theData . "</li>";
break;
}
}
}
closedir($dh);
}
?>
PHP 代码只是通过一个目录,查找文件并为 FLV、图像或文本回显适当的 HTML 代码。如果我使用固定的超时值,那么其他一切都可以正常工作。
【问题讨论】:
-
I am always getting the duration of my first video as...我在座位边缘。零?您的 valueFn 函数是否返回正确的值?您隐藏的 flv 输入是否具有正确的值? -
是的,它实际上是第一张幻灯片的值保持不变并且不会得到更新。所以现在我尝试将一张图片作为第一个超时为 3000 的元素,并且无论我为它们设置什么超时值,所有其他幻灯片都会得到相同的结果。
-
如您所见,隐藏字段已更新为视频长度 div id="image">