是否可以检测flash电影是否还包含(播放)声音?

时间:2008-09-04 11:21:41

标签: flash audio

有没有办法检测flash动画是否包含任何声音或正在播放任何音乐? 如果可以在webbrowser(actionscript 来自另一个Flash对象,javascript,..)中完成并且可以在开始播放之前完成,那将是很好的。< / p>

然而,我怀疑这将是完全可能的,所以任何其他(可编程)解决方案也值得赞赏

3 个答案:

答案 0 :(得分:3)

是的,确实在服务器端。客户端?我不知道。 (我是一个服务器类型的人。)

在服务器端,必须解析文件,读取标题和/或查找音频帧。 (我已经将一个haskel FLV解析器移植到Java用于索引目的,并且还有其他解析实用程序。这是可能的。)

osflash.org's FLV page有血腥的细节。查看FLV格式部分的FLV标头表。

FIELD       DATA TYPE      EXAMPLE                  DESCRIPTION
 Signature   byte[3]        “FLV”                    Always “FLV”
 Version     uint8          “\x01” (1)               Currently 1 for known FLV files
 Flags       uint8 bitmask  “\x05” (5, audio+video)  Bitmask: 4 is audio, 1 is video
 Offset      uint32-be      “\x00\x00\x00\x09” (9)   Total size of header (always 9 for known FLV files) 

编辑:我的客户端编码与Flash不存在,但我相信你的代码可以捕获一个onMetaDataLoad事件。这对你来说可能有点晚了,但也许它已经足够好了?

答案 1 :(得分:1)

您是否在SWF中询问FLV视频文件或Flash“电影”?

只是为了澄清,FLV是Flash视频格式(或任何缩写词),常规Flash电影/应用程序/横幅将是SWF。这些是非常不同的文件格式。

答案 2 :(得分:0)

使用ByteArray你几乎可以做你想做的事。在开始播放之前,您可以分析FLV标头的字节(使用byteArray.readByte()并参考规范)以确定是否打开音频标志。由于FLV标头几乎立即加载,因此不会对用户造成任何不便的延迟。

对于SWF而言,这是一个很多诡计 - 我很确定没有简单的方法可以提前确定swf是否在某处播放音频。一种方法可以是查看SWF在库中定义的资产,然后swf可以只加载外部音频文件(甚至可以在Flash Player 10中使用一些黑客或新的api生成它)。如果swf是用户提交的(或类似的东西超出你的直接控制)我认为这是一个冒险的道路..