gpt4 book ai didi

java - 使用 Xuggler 使用 Java 编写 RTP 服务器

转载 作者:行者123 更新时间:2023-12-01 04:39:46 26 4
gpt4 key购买 nike

我正在尝试用 Java 编写 RTP 服务器,并使用 Xuggler 来解码 mp3 文件。

解码部分如下所示:

while(container.readNextPacket(packet) >= 0) {
if(packet.getStreamIndex() == streamID) {
IAudioSamples samples = IAudioSamples.make(1,decoder.getChannels());
decoder.decodeAudio(samples, packet, 0);


IAudioSamples resampled_samples = IAudioSamples.make(1,2);
resampler.resample(resampled_samples, samples, samples.getNumSamples());

byte[] target = new byte[(int) (resampled_samples.getNumSamples() * resampled_samples.getSampleSize())];
resampled_samples.get(0, target, 0, target.length);

timestamp+=target.length;

s.sendData(target);
}
}

我的问题是客户端的缓冲区溢出,因为服务器正在发送许多包。

所以我的问题是:除了“Thread.sleep()”之外,是否有可能等待“下一帧”,因为等待需要非常精确。

最佳答案

您可以使用 javax.Swing.Timer 对象来执行此操作,而不是在 while 循环中工作,该对象会以您可以指定的延迟重复调用。您必须创建一个 Timer(int delayInMilliseconds, ActionListener l) 并实现一个将完成实际工作的 ActionListener 对象。它不会精确到微秒,但至少您可以根据需要指定正确的延迟。

关于java - 使用 Xuggler 使用 Java 编写 RTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16744475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com