0

我正在通过 Monitor() 命令录制通话。当此命令运行时,我可以看到两个不同的文件(Filename-in.wav 和 Filename-out.wav),当 Monitor() 命令完成时,它将这两个文件混合并将它们合并到一个 (Filename.wav) 文件中。

所以问题是我想在 Monitor Cmd Execution 之后保留这两个文件,但我没有找到办法。因此,在最后执行 Monitor 命令后,我将拥有三个文件,而不仅仅是一个

Ex:
Filename-in.wav
Filename-out.wav
Filename.wav (the mixed one with outbound and inbound voice

那么有没有人可以给我一个简单的解决方案

4

3 回答 3

0

您可以为 mixmonitor 使用自定义脚本。在该脚本中,您可以做任何您想做的事情,包括您描述的文件。

http://www.voip-info.org/wiki/view/MixMonitor

请注意,在 Filename.wav 中,您在不同的通道中有入站和出站。所以你可以很容易地只通过静音左声道和只通过静音右声道出站。

于 2013-08-06T13:23:27.410 回答
0

我的解决方案是更改 res_monitore.c 的代码并重新编译。

这是删除原始文件的代码部分

00295          if (delfiles) {
00296             snprintf(tmp2,sizeof(tmp2), "( %s& rm -f \"%s/%s-\"* ) &",tmp, dir ,name); /* remove legs when done mixing */
00297             ast_copy_string(tmp, tmp2, sizeof(tmp));
00298          }

只是我们必须添加这个 { delfiles = 0; } 在第 00294 行

00294          delfiles = 0;
00295          if (delfiles) {
00296             snprintf(tmp2,sizeof(tmp2), "( %s& rm -f \"%s/%s-\"* ) &",tmp, dir ,name); /* remove legs when done mixing */
00297             ast_copy_string(tmp, tmp2, sizeof(tmp));
00298          }

我更改了 delfiles = 0 以强制该函数不删除文件。

After that this is the command that you have to type :

cd /usr/src/asterisk-1.8.23.0
make
cp  ./res/res_monitor.so /res/res_monitor.so.backup
cp  ./res/res_monitor.so /usr/lib/asterisk/modules
/etc/ini.d/asterisk restart

并且您像以前一样继续使用 Monitor() 命令以及保留原始文件的功能(Filename-in.wav 和 Filename-out.wav,当然还有 Filename.wav)

于 2013-08-06T18:04:34.903 回答
0

在那次谈话中,arheops 不明白的是,“命令”参数是在 (Mix)Monitor 混合“输入”和“输出”腿之后执行的。

除了按照 l3on1das 建议的那样更改源代码(虽然不是好的做法),或者升级到现在(不足为奇)支持选项的 Asterisk 11+ 之外,没有其他方法可以保存“接收”和“传输”提要 - t 和 -r 用于 MixMonitor(),除了混合输出之外,分别保存发送和接收的分支。

祝所有挖掘星号进行语音分割的人好运。

于 2014-09-22T10:57:43.243 回答