gpt4 book ai didi

android - 如何在移动浏览器中播放 swiffy HTML5 文件中的音频?

转载 作者:行者123 更新时间:2023-12-03 00:48:25 25 4
gpt4 key购买 nike

我已经将这个问题带到了各个论坛,并且曾经在这里(它在哪里被屏蔽为题外话)。好像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 都没有声音,这也是一个谜。
我想如果谷歌没有设法解决这个问题,没有任何黑客可以解决问题,但我们很感激你的见解。

最佳答案

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

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

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

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

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

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

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

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

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

关于android - 如何在移动浏览器中播放 swiffy HTML5 文件中的音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com