关于实现FLASH录音的问题
最近帮人做个Flash录音程序的开发,现在是程序出来了,没有办法实现录音。
flash AS 3.0的代码如下:
package {
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Microphone;
import flash.system.Security;
import flash.net.ObjectEncoding;
import flash.net.NetStream;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.NetStatusEvent;
import fl.controls.Button;
import fl.controls.TextInput;
import flash.display.Sprite;
import flash.media.Sound;
import flash.media.SoundChannel;
import fl.controls.Label;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.display.Sprite;
import flash.system.SecurityPanel;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.utils.getTimer;
public class sound extends Sprite {
private var my_nc = new NetConnection();
private var my_mic:Microphone;
private var my_ns:NetStream;
private var RecordInterval;
private var my_sound:Sound;
private var my_soundstop:SoundChannel;
private var position:int;
private var msg:Boolean;
private var VideoName:String;
private var timeNum:Number=0;
public function sound() {
InitTimer();
btnStop.label="停止录制";
btnStop.addEventListener(MouseEvent.CLICK,stopRecord);
btnPlay.label="回放";
btnPlay.addEventListener(MouseEvent.CLICK,playRecord);
}
private var timer:Timer;
// 计时器需要显示的 时,分,秒,毫秒 变量
var hour:Number = 0;
var minute:Number = 0;
var second:Number = 0;
var millisecond:Number = 0;
// 计时器是否在计时
var running:Boolean = false;
// 播放器加载的总时长
var playerLength:Number = 0;
// 计时器暂停的总时长
var pauseLength:Number = 0;
// 计时器计时的总时长
var timerLength:Number = 0;
function InitTimer() {
btnPublish.label="开始录制";
btnPublish.addEventListener(MouseEvent.CLICK,startRecord);
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
function enterFrameHandler(event:Event):void {
if (running) {
// 当前计时器需要显示的时间
var goTime:Number = getTimer() - pauseLength - timerLength;
// 从总的毫秒时间中解析出时间的 时,分,秒,毫秒 部分
hour = Math.floor( goTime/3600/1000 );
minute = Math.floor( (goTime/3600/1000 - hour) * 60 );
second = Math.floor( ((goTime/3600/1000 - hour) * 60 - minute) * 60 );
// 在 UI 上显示格式化后的时间
txt_time.text = "时间:" + minute + "分" + second + "秒";
}
}
private function startRecord(evt:MouseEvent):void {
running = true;
my_nc=new NetConnection();
my_nc.client=new Client();
my_nc.addEventListener(NetStatusEvent.NET_STATUS,onPublishStatusHandler);
my_nc.connect("rtmp://localhost/test/");
}
private function onPublishStatusHandler(evt:NetStatusEvent):void {
if (txt_name.text.length==0) {
lab_alert.text="请输入文件名";
} else {
var timeNum:Number = 0;
if (evt.info.code=="NetConnection.Connect.Success") {
my_mic=Microphone.getMicrophone(0);
Security.showSettings(SecurityPanel.MICROPHONE);
my_mic.rate=44;
my_mic.gain=50;
my_mic.setSilenceLevel(0, 0);
my_ns=new NetStream(my_nc);
my_ns.attachAudio(Microphone.getMicrophone());
my_ns.publish(txt_name.text,"record");
lab_alert.text="开始录音";
InitTimer();
my_ns.addEventListener(NetStatusEvent.NET_STATUS,onPublishStatusHandler);
}
}
}
private function stopRecord(evt:MouseEvent):void {
lab_alert.text="录音停止";
my_ns.close();
}
private function playRecord(evt:MouseEvent):void {
my_nc=new NetConnection();
my_nc.client=new Client();
my_nc.addEventListener(NetStatusEvent.NET_STATUS,onPlayStatusHandler);
my_nc.connect("rtmp://localhost/test/");
}
private function onPlayStatusHandler(evt:NetStatusEvent):void {
if (evt.info.code=="NetConnection.Connect.Success") {
lab_alert.text="正在播放录音";
my_ns=new NetStream(my_nc);
my_ns.addEventListener(NetStatusEvent.NET_STATUS,onPlayStatusHandler);
my_ns.play(txt_name.text,0);
}
}
}
}
class Client {
public function onBWCheck(... rest):Number {
return 0;
}
public function onBWDone(... rest):void {
var p_bw:Number;
if (rest.length > 0) {
p_bw = rest[0];
}
trace("bandwidth = " + p_bw);
}
}
先放100分。。
能实现再加200分。。。