我正在自定义 Jitsi 以在通话进行时播放 Wav 文件。
我在做这件事时遇到了麻烦,如果你能帮助我,我将不胜感激。
我可以在通话开始前切换数据源,方法是使用自定义 AudioFileMediaDevice 并在 CallPeerMediaHandler 中将其打开。
但是当通话正在进行时,我在替换数据源时遇到了问题。
==================================================== ===========
我尝试了以下但无法使其工作。
1)我尝试获取设备的输出数据源,并使用 addInDataSource 方法添加了 wav 文件的 URLDatasource。没用。
DataSource dataSource = device.createOutputDataSource();
DataSource fileDataSource = Manager.createDataSource(new URL("file://resources/sounds/Sample.wav"));
((AudioMixingPushBufferDataSource)dataSource).addInDataSource(fileDataSource);
2)我尝试添加自定义捕获设备并切换它,但它也不起作用:
CaptureDeviceInfo2 fileDevice =
new CaptureDeviceInfo2("Recorded Audio 1",
fileDataSource.getLocator(), null, null, null, null);
((MediaServiceImpl) LibJitsi.getMediaService())
.getDeviceConfiguration().getAudioSystem().setDevice(AudioSystem.DataFlow.CAPTURE, fileDevice, false);
不过,这适用于播放,而不是作为捕获设备。
3)我什至尝试添加一个带有播放设备作为文件数据源的新音频系统,但这也不起作用。
==================================================== ===========
我是 libjitsi 的新手,所以我很难尝试解码正在发生的事情。关于如何解决这个问题的任何指示都会很棒。