在星号中的Monitor()CMD之后不删除入站/出站文件



我正在通过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

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

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

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

请注意,在Filename.wav中,您在不同的通道中同时有入站和出站。因此,您可以通过静音左通道轻松获得入站,通过静音右通道轻松获得出站。

我的解决方案是更改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          }

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

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

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

arheops在那次对话中不明白的是,"command"参数是在(Mix)Monitor混合了"in"one_answers"out"腿之后执行的。

没有其他方法可以保存"接收"one_answers"发送"提要,只能按照l3on1das的建议更改源代码(尽管这不是一个好的做法),或者升级到Asterisk 11+,它现在(毫不奇怪)支持MixMonitor()的选项-t和-r,以分别保存发送和接收的支路以及混合输出。

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

最新更新