音频文件播放完成后挂断SIP呼叫

时间:2016-10-24 10:03:44

标签: java multithreading audio sip rtp

我正在使用peers来实施SIP UserAgent。由于peer-demo源代码和项目文档,大部分工作已经完成。

但是,我在实现以下功能时遇到一些问题:在源(预先录制的)音频文件播放完毕后终止呼叫。

默认情况下,此功能不可用,因此我正在编辑peers-lib项目以实现它。特别是,我目前正在研究RTPSender source code,我不明白在从PipedInputStream encodedData读取所有数据后,run方法似乎停止/等待。

在拳头上,我只是在主循环时间:

while(!isStopped){
    numBytesRead = 0;
    [...]
}

,在run方法中,当从上面提到的PipedInputStream中读取所有数据时结束,但这似乎不是这样,因为我在循环结束后立即放置了System.out.println()istruction,它永远不会执行。

然而,while循环以某种方式暂停/结束,因为我在循环中放置了另一个System.out.println()指令,该指令在从PipedInputStream读取最后一个字节后停止执行。

所以我认为它必须与运行代码的线程有关,但是我找不到对sleep()/ join()调用的任何引用,而只是对CaptureRtpSender类中的start()调用:< / p>

[...]
public void start() throws IOException{
    [...]
    rtpSender.setStopped(false);`
    [...]
    Thread rtpSenderThread = new Thread(rtpSender, RtpSender.class.getSimpleName());
    [...]
    rtpSenderThread.start();
}
[...]

我认为理解线程在读取所有数据时如何停止,可能是解决我的问题的关键,因为我可以复制该方法来指示主类终止调用。

提前感谢您的帮助!

0 个答案:

没有答案
相关问题