【问题标题】:How can I get a .swf file to begin play immediately?如何获取 .swf 文件以立即开始播放?
【发布时间】:2012-07-23 17:40:03
【问题描述】:

我有一些使用 adobe captivate 6 创建的培训视频。当我观看视频时,它们需要 10 到 60 秒才能加载,然后才会开始播放,然后才会在窗口中显示任何内容(文件范围从 1MB 到 5MB )。我正在使用 jquery 将它们加载到 jquery-ui 对话框中,并在文件完全下载后让浏览器开始播放。

我遇到的问题是等待 .swf 完全下载后才能开始播放。我希望它开始播放,然后在播放时继续下载,这样用户就不必等待很长时间才能看到一些东西。

像这样的视频培训对我来说是一个相对较新的领域,所以我真的不知道我的选择是什么......如果 .swf 不是要走的路,我有什么选择使用 captivate?我尝试了 captviate 的 youtube 导出,但它调整了视频的大小以适应 youtube 并且使字体太小而无法阅读。

当我在 youtube 上观看视频时,它们会立即开始播放,但在观看时继续下载...我喜欢这个概念,并想知道是否可以使用我现有的 .swf 文件实现类似的效果。

这个问题有哪些选择和可能的解决方案?

提前感谢您的帮助。

这是加载对话框的调用:

<span onclick="$('#popup_tutorial').dialog('option', 'position', 'top').dialog('option','title','Portfolios - Creating a new portfolio').load('tutorials/acctg_payments.php').dialog('widget').dialog('open');" class="a_link edit_link">View Tutorial</span>

这是#popup_tutorial html:

<div id="popup_tutorial" style="text-align:left"></div>
<script type="text/javascript">
    $("#popup_tutorial").dialog({
        bgiframe: true,
        autoOpen: false,
        Height: 740,
        width: 900,
        modal: false,
        close: function () {$(this).empty();}
    });
</script>

这是包含 .swf 代码并放置在 #popup_tutorial div 内的 .php 页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>

<script src="standard.js" type="text/javascript"></script>
</head>

<body   bgcolor="#f5f4f1">

    <div id="CaptivateContent">&nbsp;
    </div>
    <script type="text/javascript">
       var so = new SWFObject("acctg_payments_making.swf", "Captivate", "881", "720", "10", "#CCCCCC");
        so.addParam("quality", "high");
        so.addParam("name", "Captivate");
        so.addParam("id", "Captivate");
        so.addParam("wmode", "window");
        so.addParam("bgcolor","#f5f4f1");
        so.addParam("menu", "false");
        so.addParam("AllowScriptAccess","always");
        so.addVariable("variable1", "value1");
        so.setAttribute("redirectUrl", "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash");
        so.write("CaptivateContent");
    </script>


    <script type="text/javascript">
        document.getElementById('Captivate').focus();
        document.Captivate.focus();
    </script>
</body>
</html>

【问题讨论】:

    标签: flash swfobject swfloader adobe-captivate


    【解决方案1】:

    Captivate 和大多数 Flash 电影都不是像电影一样以线性方式构建的,即使它们的某些内容可能会以这种方式出现。有大量的交互逻辑可供 SWF 播放。也就是说,您几乎可以看到它们就像 DLL、EXE、Java JAR 或 IPA (iphone),在下载整个二进制文件之前无法运行。

    也就是说,SWF 为内容开发人员提供了在部分加载 SWF 时运行和播放内容的方法,但是这取决于生成 SWF 的开发人员或生成此输出的程序的能力,通常它非常复杂这是大多数开发人员尚未达到的水平。在您的情况下,我认为 Captivate 不提供这种功能。

    但是,如果你想实现它,你可以考虑将 Captivate 电影分成更小的电影并将它们链接在一起,但我怀疑 Captivate 会在当前电影播放时预加载下一部。

    【讨论】:

    • 谢谢您的回复...我注意到如果浏览器缓存已经下载了文件,下次我点击它时,它会立即播放...是否可以将这些下载到客户端缓存并为他们准备好......或者像 memcache 这样的东西可以帮助做到这一点吗?
    【解决方案2】:

    Captivate 6 和 7(可能还有 8 个)可让您确定在电影开始播放之前应该下载多少百分比的电影。我有一段时间没有使用 Captivate 6,所以我不记得它在 UI 中的确切位置,但在 Captivate 7 上,从主菜单中选择 Quiz -&gt; Quiz Preferences 以打开首选项对话框。在那里你可以调整preloader %。这是在播放开始前将被下载的电影的百分比。默认情况下,它设置为 100%,这可以解释为什么您的电影在完全下载之前不会开始。

    根据我的经验,此 % 在某些设置中有效,但在其他设置中无效。尽管如此,还是值得一试。

    -帕特里克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 2012-01-26
      • 2013-04-24
      • 2013-04-24
      • 2016-12-31
      相关资源
      最近更新 更多