Flex:带有流媒体的computeSpectrum?

时间:2010-01-18 21:11:47

标签: flex flash streaming red5 spectrum

我有一个我编写的Flex3应用程序,我正在从Red5服务器通过RTMP传输音频。我希望能够使用SoundMixer.computeSpectrum(),但频谱数据全部为零。在一个位置,Adobe写道,SoundMixer.computeSpectrum()不能与RTMP数据一起使用:

“对于从RTMP源加载的媒体,您不能使用BitmapData.draw()和SoundMixer.computeSpectrum()方法来提取运行时图形和声音数据。” http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000353.html

足够清楚。除此之外,还有computeSpectrum()的实际文档:

“此外,此方法不能用于从RTMP流中提取数据,即使它与RTMP服务器驻留在同一域中的内容调用。[...] Flash中的RTMP支持此方法播放器9.0.115.0及更高版本以及Adobe AIR。“

嗯。这似乎与我相矛盾。

任何建议都是这样或那样的?

4 个答案:

答案 0 :(得分:1)

以下是关于此主题的整体博文:http://fefranca.com/blog/?p=6 以下是针对Red5的建议修补程序:http://osflash.org/pipermail/red5_osflash.org/2009-November/038844.html

<bean id="rtmpSampleAccess" class="org.red5.server.stream.RtmpSampleAccess">
    <property name="audioAllowed" value="true"/>
    <property name="videoAllowed" value="true"/>
</bean>

答案 1 :(得分:0)

服务器端还有'client.allowAudioSampleAccess'属性(Flash Media Server脚本),根据我的理解,它允许客户端完全按照您的意愿执行操作 - 通过'computeSpectrum'读取音频样本数据方法

答案 2 :(得分:-1)

computeSpectrum和ID3标签不适用于来自其他域的数据,而不是Flex应用程序所在的位置。

答案 3 :(得分:-3)

引用Adobes自己的公共文档“编程Adobe ActionScript 3.0 for Flash”,第700页(第32章,标题为“正在加载内容”,子标题“使用RTMP服务器传送的内容”:

  

对于从RTMP源加载的媒体,您不能使用BitmapData.draw()和   SoundMixer.computeSpectrum()方法提取运行时图形和声音数据。

良好的旧RTFM(阅读友好手册)仍然适用。