我会尽力把答案说清楚。
1)当你连接到服务器时,你如何让它从 Flash 客户端录制音频?
首先,您需要知道服务器和客户端之间的连接使用了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 客户端。为了捕捉声音,我们需要设置我们的麦克风:
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);
连接就像建立一座桥梁,以便流可以将内容从客户端传送到服务器。好的,我们需要做的最后一件事是发布:
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
. 如果您想更改此设置,请查看本指南。
3)如何将此文件移动到服务器的 HTTP 文件夹,以便之后可以从主页访问它?
Red5 可以与 apache tomcat 一起使用,您可以使用 flv 播放器播放这些记录。
我希望上面的片段可以帮助你。我建议你可以安装red5并运行一些演示和谷歌你不明白的东西。