我有一个我编写的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。“
嗯。这似乎与我相矛盾。
任何建议都是这样或那样的?
答案 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(阅读友好手册)仍然适用。