gpt4 book ai didi

flash - 如何从浏览器捕获音频并将其保存在服务器上?

转载 作者:行者123 更新时间:2023-12-03 02:31:28 26 4
gpt4 key购买 nike

我目前正在做一个项目 - 一个在线教育系统,我需要让 stud 能够在 中介绍自己。 30 秒音频剪辑 .

我需要用 Adob​​e Flash 来实现它。问题是我不知道 Flash + Red5 二人组如何协同工作。网上没有那么多有用的资源,至少对我来说,因为我是 Flash 的初学者。 (我主要做 PHP 的东西。)

1) 当您连接到服务器时,如何让它从 Flash 客户端录制音频?

2) 30 秒后,如何停止录制并将文件保存在服务器上的特定文件夹中?

3) 如何将此文件移动到服务器的 HTTP 文件夹,以便之后可以从主页访问它?

请注意我是flash和Red5的初学者,所以我真的需要你们详细的解释。

非常感谢!

最佳答案

我会尽力把答案说清楚。

1) 当您连接到服务器时,如何让它从 Flash 客户端录制音频?

首先,您需要知道服务器和客户端之间的连接使用的协议(protocol)如 RTMP .所以在服务器端,我们需要设置我们的地址,如 rtmp://127.0.0.1/demoServer (在 red5 demoServer 中是您的应用名称)。接下来在Flash端,我们可以通过NetConnection连接服务器:

    import flash.net.NetConnection;
public var nc:NetConnection;
nc = new NetConnection();
nc.connect("rtmp://127.0.0.1/demoServer");

我可以肯定地告诉你,80% 的工作都在 Flash 客户端。为了捕捉声音,我们需要设置我们的 Microphone :
    import flash.media.Microphone;
public var mic:Microphone;
mic = Microphone.getMicrophone();

之后,我们需要一个管道来传输从麦克风捕获的语音。幸运的是,我们有 NetStream :
    import flash.net.NetStream;
private var stream:NetStream;
var sm:NetStream=new NetStream(nc);
stream.attachAudio(mic);

连接就像建立一座桥梁,以便流可以将客户端的内容传送到服务器。好的,我需要做的最后一件事是 publish :
    stream.publish("some name","record");

现在,您可以看到一个名为 some name 的 .flv 文件。在服务器端。如果你打开了麦克风,这个文件会变大。

2) 30 秒后,如何停止录制并将文件保存在服务器上的特定文件夹中?

创建一个从录制开始的 30 秒计时器。超时时关闭流:
    import flash.utils.Timer;
t = new Timer(1000, 30);
t.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete);
private function timerComplete(event:TimerEvent):void{
//close the stream
stream.close();
mic.setSilenceLevel(0);
}

默认情况下,red5 会将文件保存在 \webapps\dictRed5Server\streams .如果要更改此设置,请查看 guide .

3) 如何将此文件移动到服务器的 HTTP 文件夹,以便之后可以从主页访问它?

Red5 可以与 apache tomcat 一起使用,您可以使用 flv 播放器播放这些记录。

我希望上面的片段可以帮助你。我建议你可以安装red5并运行一些演示和谷歌你不明白的东西。

关于flash - 如何从浏览器捕获音频并将其保存在服务器上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com