我正在通过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,以分别保存发送和接收的支路以及混合输出。
祝所有挖掘星号进行语音分割的人好运。