【问题标题】:How to make audio in swiffy HTML5 files play in mobile browsers?如何在移动浏览器中播放 swiffy HTML5 文件中的音频?
【发布时间】:2014-07-01 08:10:24
【问题描述】:

我已经把这个问题带到了各个论坛上,在这里一次(它在哪里被屏蔽为题外话)。在我看来on-topic——一个具体的编程问题,一个软件算法,一个程序员常用的软件工具。

我有一个带有声音的 Flash SWF 动画网站。我使用Google's swiffy 将 SWF 转换为 HTML5。在台式电脑上,使用 Chrome、FF 和 IE,有声音,但在Mobile Safari and Android browsers 中没有。而不是在我 iPad 上的 Chrome 中。

音频嵌入在 swiffy 生成的代码中,看起来像是用 base64 编码的 MP3(参见 html 中的“data:audio/mpeg;base64”和“format”:“MP3”)。

由于没有 swiffy 的开发者论坛,而且我没有收到来自 feedback form 的回复,我环顾四周以确定是什么阻止了 Mobile Safari、Android 浏览器和 iPad Chrome 播放声音。对于 Safari,我发现类似“You cannot preload sound files”的东西,但由于声音嵌入在 swiffy 中,因此没有声音文件可以预加载。为什么 Android 和 iPad Chrome 这两种谷歌产品都没有声音也是一个谜。

如果 Google 无法解决问题,我想没有任何黑客可以解决问题,但我们非常感谢您的见解。

【问题讨论】:

    标签: android html ipad audio google-swiffy


    【解决方案1】:

    我知道这对你来说已经很晚了,但我认为有些人可能也面临同样的问题并来到这篇文章。所以我想在这里提供我的答案

    正如维克多所说,您可以使用 getURL 来触发外部声音。但如果我使用 getURL,我会在 javascript 端使用 Web Audio API。因为使用 Web Audio API,可以在移动设备上同时播放多个曲目。我将库 SoundJS 集成到我的项目中。

    但是,由于您必须将每个音频帧都更改为 getURL 函数,这实际上会花费您很多时间。我发现了另一个可选的想法,即您可以一劳永逸地编辑 swiffy 核心,它使用原生音频对象(但这也意味着您一次只能在移动设备中播放一种声音)。

    最初,swiffy 创建原生音频对象来播放 base64 编码的声音。由于移动设备的限制,如果声音不是由输入事件触发的,则它是无声的。但是,可以重用活动的音频对象。

    首先,我有一个按钮来启动动画,它还创建一个音频对象并播放它(使用零长度的 base64 编码声音);

    audio = new Audio("data:audio/mpeg;base64,");
    audio.play();
    

    在swiffy核心脚本中,搜索关键词“new Audio”,你会看到swiffy播放声音的部分。不要创建一个新的音频对象,而是使用你的旧音频对象让 swiffy

    audio.src = a.sound;
    audio.play();
    

    之后,无需修改,您的 swf 即使在移动设备中也应该能够播放声音。

    但是,因为它很像一个 hack。它可能会遇到一些意想不到的问题

    【讨论】:

    • 我放弃了 swiffy,但想试试你的解决方案。你能提供一个例子的链接吗?
    • 请见上文,我想再给 swiffy 一次机会。它的文件是flash的两倍,但只有mp4的一小部分。
    • 它非常 hacky 并合并到我自己的项目中,如果我不给你我的整个项目,我认为你无法运行我修改后的 swiffy
    【解决方案2】:

    您可以将 swiffy flash 与主 HTML 文件进行通信,因此,在 actionscript 中,您可以将 getURL 调用发送到 javascript,其中您有一个隐藏的 html5 mp3 播放器,例如:

    getURL("Javascript:playSound();");
    

    在 HTML 中,在 javascript 函数中,类似于:

     <audio controls>
     <source src="test.ogg" type="audio/ogg">
     <source src="test.mp3" type="audio/mpeg">
     </audio> 
    

    我仍在努力,但希望对您有所帮助。

    【讨论】:

    • 感谢 Victor,但视频需要与音频同步。单独的音频播放器不能保证这一点。
    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 2011-03-05
    • 2012-09-20
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多