我正在使用PHP开发Web应用程序,并且需要测试网站页面是否具有背景音乐。众所周知,这是标签的列表(我想念一个人吗?),可以在网页中插入背景音:
虽然很容易检查是否存在标签
bgsound
或audio
导致背景音频,但测试Flash动画是否具有声音并不是那么容易(至少对我而言)。我知道我可以检查
embed
属性中是否具有src
标签,例如sound.mp3
,但是如何测试声音是否完全嵌入Flash动画中?我进行了很多搜索以找到答案,但不幸的是我没有找到答案。
感谢所有将回答我的问题的人。
最佳答案
SWF文件由许多不同的标签组成,每个标签都描述了不同类型的内容。位图图像,ActionScript,形状,字体,甚至声音。因此,我们可以下载SWF文件,阅读标签,然后查看其中是否有任何与声音相关的标签(对于音乐,您将专门查找与流声音相关的标签)。
为此,您可以使用一些SWF解析库(我不知道任何PHP解析库,但是我确定它们存在),或者您可以基于specification实现自己的解析库。
但是,这只能检测到实际嵌入声音的情况,而可能根本不是这种情况-声音可以从外部文件中流式传输,并完全在ActionScript中处理(实际上,这并不太常见)。
为了处理这种情况,可以分解ActionScript代码,然后可以检查指令以查看它们是否引用了任何特定于音频的ActionScript类(我对字节码的了解不够,无法知道如何检查;我只是知道可以做到)。如果是这样,则您知道SWF与音频有某种联系(但不一定是实际的背景音乐)。
当然,如果您想要一个万无一失的解决方案,则还必须考虑一个SWF文件可以加载其他SWF文件-进行播放的SWF文件可能不是您下载的SWF文件,因此您需要以某种方式找到这些SWF文件并下载这些文件同样,然后通过相同的过程运行它们...
如您所见,这很快就会变得非常非常复杂,因此实际上不可能确保100%的准确性。您将必须自己确定检测的精确度(以及扩展,您愿意为此付出多少努力)。
关于php - 如何测试Flash动画是否在PHP中播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897088/