小编and*_*ndi的帖子

如何使用SourceDataLine无延迟地在java中流式传输声音

我想根据用户在Java中的操作生成声音.即使我将SourceDataLine中的缓冲区大小设置为最小可能值(1帧),我仍然有大约1秒的延迟.

因为代码片段胜过千言万语(或者是图片?),这里是代码:

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SoundTest {

    private static int sliderValue = 500;

    public static void main(String[] args) throws Exception {
        final JFrame frame = new JFrame();
        final JSlider slider = new JSlider(500, 1000);
        frame.add(slider);
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                sliderValue = slider.getValue();
            }
        });
        frame.pack();
        frame.setVisible(true);

        final AudioFormat audioFormat = new AudioFormat(44100, 8, 1, true, true);
        final DataLine.Info info = …
Run Code Online (Sandbox Code Playgroud)

java audio delay

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

audio ×1

delay ×1

java ×1