有没有办法检测flash动画是否包含任何声音或正在播放任何音乐?
如果可以在webbrowser(actionscript 来自另一个Flash对象,javascript,..)中完成并且可以在开始播放之前完成,那将是很好的。< / p>
然而,我怀疑这将是完全可能的,所以任何其他(可编程)解决方案也值得赞赏
答案 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)
答案 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是用户提交的(或类似的东西超出你的直接控制)我认为这是一个冒险的道路..