【发布时间】:2014-08-14 11:43:24
【问题描述】:
我的项目遇到了一些问题。
在我的项目中,我需要使用用于将音频流存储在服务器上的 Actionscript 实现与 RED5 服务器的麦克风集成,然后我在 java 代码中使用 ffmpeg 将 flv 文件转换为 mp3。
我在这里面临两个问题:
录制的音频创建 .flv 文件,该文件已被删除。
当我尝试使用 ffmpeg 将 .flv 转换为 .mp3 时,它会卡住,直到我停止 Red5 服务器。
这是我的两个地方的代码。请让我知道我哪里做错了。
在 red5 上录制麦克风音频和流式传输的 Actionscipt:
private function initConnection():Void {
trace("Connecting...");
nc = new NetConnection();
nc.client = this;
nc.addEventListener(NetStatusEvent.NET_STATUS, onNetConnectionStatus);
nc.connect("rtmp://127.0.0.1/test");
this.mic = Microphone.getMicrophone();
if (this.mic != null) {
this.mic.rate = 44;
mic.setSilenceLevel(0);
mic.gain = 100;
mic.setUseEchoSuppression(true);
mic.setLoopBack(true);
}
}
在 Red5 上发送:
public function startSending( nc: NetConnection, filename:String ) {
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStreamStatus);
ns.publish(filename, 'record');
ns.attachAudio(mic);
}
停止录制/发送:
public function stopSending() {
mic.setLoopBack(false);
ns.attachAudio(null);
ns.close();
}
生成的 .flv 存储在已修改的服务器上。
不将 .flv 转换为 .mp3,我在我的 Java 代码中使用了 ffmpeg,如下所示:
String ffmpegArgs[] = {executableDir,"-i",flvFile.getAbsolutePath(), "-vn", mp3File.getAbsolutePath()};
Process process = new ProcessBuilder(Arrays.asList(ffmpegArgs)).start();
这会启动文件转换,但会卡住。一段时间后,当我停止服务器时,它会立即显示转换后的文件。 请告诉我,我在哪里做错了。
【问题讨论】:
-
FLV 播放是否正确?在尝试转换它之前,您可能需要确保它没问题。我还建议您将环回设置为 false。
标签: java actionscript-3 ffmpeg red5