【问题标题】:is it possible to detect if a flash movie also contains (plays) sound?是否可以检测 Flash 电影是否还包含(播放)声音?
【发布时间】:2010-09-07 19:04:33
【问题描述】:

有没有办法检测 Flash 电影是否包含声音或正在播放音乐?
如果这可以在网络浏览器中完成(动作脚本来自另一个 Flash 对象、javascript、..)并且可以在 Flash 电影开始播放之前完成,那就太好了。

但是,我怀疑这是否完全可行,因此也欢迎任何其他(可编程)解决方案

【问题讨论】:

    标签: flash audio


    【解决方案1】:

    是的,当然是在服务器端。客户端?我不知道。 (我是服务器端的那种人。)

    在服务器端,必须解析文件、读取标题和/或查找音频帧。 (我自己将一个 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 事件。这对你来说可能有点晚了,但也许已经足够了?

    【讨论】:

      【解决方案2】:

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

      澄清一下,FLV 是 Fl​​ash 视频格式(或任何首字母缩写词),常规的 Flash 电影/应用程序/横幅将是 SWF。这些是非常不同的文件格式。

      【讨论】:

        【解决方案3】:

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

        使用 SWF 会很复杂——我很确定没有简单的方法可以提前确定 swf 是否在某处播放音频。一种方法是查看 SWF 在库中定义的资产,然后 swf 可以只加载外部音频文件(或者甚至使用一些 hack 或 Flash player 10 中的新 api 生成它)。如果 swf 是用户提交的(或您无法立即控制的类似内容),我认为这是一条危险的道路..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-14
          • 2011-01-17
          相关资源
          最近更新 更多