关于实现FLASH录音的问题

yagebu1983 2009-06-22 11:27:10
最近帮人做个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分。。。
...全文
1760 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzvalue 2009-06-27
  • 打赏
  • 举报
回复
在ADobe论坛上,有人要实现录音效果,未果,再见过有人写ActiveX弄出来了
xyzvalue 2009-06-27
  • 打赏
  • 举报
回复
请你注意一下子,你的方法是作视频录制的,不能光提取声音,并且这代码99%是网上的不是你写的,代码请见FmS3中的示例代码
sforiz 2009-06-24
  • 打赏
  • 举报
回复
UP
yagebu1983 2009-06-24
  • 打赏
  • 举报
回复
没有帮我试试吗。。。
yagebu1983 2009-06-23
  • 打赏
  • 举报
回复
有没有人能帮我试一下啊。。。
wenblue7 2009-06-23
  • 打赏
  • 举报
回复
友情帮顶
yagebu1983 2009-06-23
  • 打赏
  • 举报
回复
up.......
qq196260188 2009-06-22
  • 打赏
  • 举报
回复
关注高手解题..
zorou_fatal 2009-06-22
  • 打赏
  • 举报
回复
这个区又不管AS3的编程。呵呵,要搞as3的,去别的论坛。
csdn不是flash开发者常来的地方。
zorou_fatal 2009-06-22
  • 打赏
  • 举报
回复
你的声音保存到哪了?
yagebu1983 2009-06-22
  • 打赏
  • 举报
回复
人气。。。。
yagebu1983 2009-06-22
  • 打赏
  • 举报
回复
up。。
yagebu1983 2009-06-22
  • 打赏
  • 举报
回复
试了。。。
还是不行。。。
zorou_fatal 2009-06-22
  • 打赏
  • 举报
回复
my_ns.attachAudio(Microphone.getMicrophone());

改成

my_ns.attachAudio(my_mic);

看看
yagebu1983 2009-06-22
  • 打赏
  • 举报
回复
我试了,怎么不管啊。。。
ttt2 2009-06-22
  • 打赏
  • 举报
回复
结合fms很简单,存上就自为flv格式
gengxin_914 2009-06-22
  • 打赏
  • 举报
回复
帮顶
yagebu1983 2009-06-22
  • 打赏
  • 举报
回复
正常的。。。
就是不能把存放声音的文件保存成.flv格式的。。。
windinwing 2009-06-22
  • 打赏
  • 举报
回复
rtmp://localhost/test/
... 确定rtmp server正常?

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧