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

标签 flash audio flash-cs4 red5 recording

我目前正在做一个项目 - 一个在线教育系统,我需要让 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/

相关文章:

java - 如何在网络上运行 jar 文件(java 程序)?

HTML 5 video 标签视频和音频去同步

flash - 如何在 Actionscript 3.0 中使用静态函数?

flash - 参数错误 : Error #2015: Invalid BitmapData

actionscript-3 - 错误 1131 : Classes Must Not Be Nested

java - 发送图片到Flash客户端。使用什么技术?

ios - 如何在具有单独位置 url 和资源 url 的 swift 中从服务器直播音频?

flash - Adobe Animate Actionscript 计算器,将符号后的数字保存为 int/string

audio - 随机播放音频-Unity3d

javascript - 停止音频源并替换为另一个