使用NetStream对象播放录制声音的苦恼……

 啊转贴:
又遇到一个费解的问题,作了很多测试都找不到原因来……郁闷中。

在本地测试一个用串流对象录制来自麦克风声音的FlashCom程序,经由NetConnection Debugger面板侦测已确保和应用程序的联接没有问题,而且录制声音的命令也被执行了,在相应的Streams文件夹中的的确确生成了flv文件,但 不知为什么,在通过NetStream的play方法按默认方式播放时,有时能播放刚刚录制的声音,有时却不能,而且不能的时候居多,而一旦能播放的时 候,在不关闭当前swf文件的前提下,反复录播一切正常,可常常是,关掉swf文件后再打开, 就变得不能播放录制的声音了,时好时坏,你说奇怪不奇怪?难道是我的麦克风不够灵敏的原因?还是FlashCom对麦克风的质量有特别的要求?我怀疑是不 是跟麦克风的硬件质量有关,但我也不知道是不是因为某些环境变量没有设置好的缘故?要么就是程序有漏洞?我想不出。有闪友遇到类似的情况吗?

我用来测试的文件写得很简单的,主场景上只有一个用PushButton按钮组件生成的实例(命名:recand_btn),默认Label是:Record Sound,事件处理是调用dorecord函数。在主场景第一帧上写有下面的程序:
代码:

stop();
#include "NetDebug.as"
newmic_nc = new NetConnection();
//下面这个联机是正常的
newmic_nc.connect("rtmp:/usemicrophone/first");
newmic_ns = new NetStream(newmic_nc);
getmicro = Microphone.get();
getmicro.setSilenceLevel(0);
getmicro.onStatus = function(infomsg) {
if (infomsg.code.indexOf("Unmuted") != -1) {
trace("开通");
} else {
trace("未启用");
}
};
function dorecord() {
if (record_btn.getLabel() == "Record Sound") {
newmic_ns.attachAudio(getmicro);
newmic_ns.publish("soundsection", "record");
record_btn.setLabel("Play Sound");
} else if (record_btn.getLabel() == "Play Sound") {
record_btn.setLabel("Record Sound");
newmic_ns.play("soundsection",0,-1,true);
}
}


请大家帮忙看看。这是为什么?谢谢!

原文地址:https://www.cnblogs.com/chinatefl/p/404308.html