javafx视频播放器,带速度控制(恒定音高)

javafx视频播放器,带速度控制(恒定音高),java,performance,video,javafx,media-player,Java,Performance,Video,Javafx,Media Player,我正在使用javafx中的视频播放器。在那个视频播放器中,我想要像播放、暂停、停止和速度控制这样的控制器 我添加了一个滚动条来调整视频的速度 我希望在调整速度时,视频的音高不能改变。但当我调整视频的速度时,它的音高会改变 在调整速度时,我将如何保持视频的恒定音高? 有人能帮忙吗 以下是我在视频播放器中进行种子控制的代码: // Add spped slider speedSlider = new Slider(); HBox.setHgrow(speedSlide

我正在使用javafx中的视频播放器。在那个视频播放器中,我想要像播放、暂停、停止和速度控制这样的控制器

我添加了一个滚动条来调整视频的速度

我希望在调整速度时,视频的音高不能改变。但当我调整视频的速度时,它的音高会改变

在调整速度时,我将如何保持视频的恒定音高? 有人能帮忙吗

以下是我在视频播放器中进行种子控制的代码:

// Add spped slider
        speedSlider = new Slider();
        HBox.setHgrow(speedSlider, Priority.ALWAYS);
        speedSlider.setMinWidth(10);
        //speedSlider.setMaxWidth(Double.MAX_VALUE);
        speedSlider.setMaxWidth(100);
        speedSlider.setPrefWidth(70);
        speedSlider.setValue(50);
        speedSlider.valueProperty().addListener(new InvalidationListener() 
        {
            public void invalidated(Observable ov) {
                if (speedSlider.isValueChanging() || speedSlider.isPressed()) {
                    double rate = speedSlider.getValue()/10;
                    if(rate<1)
                        rate = 0.5;
                    else if(rate < 2)
                        rate = 0.6;
                    else if(rate < 3)
                        rate = 0.7;
                    else if(rate < 4)
                        rate = 0.8;
                    else if(rate < 5)
                        rate = 0.9;
                    else if(rate < 6)
                        rate = 1;
                    else if(rate < 7)
                        rate = 1.1;
                    else if(rate < 8)
                        rate = 1.2;
                    else if(rate < 9)
                        rate = 1.3;
                    else
                        rate = 1.4;
                    mp.setRate(rate);
                 }
            }
        });
        mediaBarControl.getChildren().add(speedSlider);
//添加spped滑块
speedSlider=新滑块();
HBox.setHgrow(speedSlider,Priority.ALWAYS);
speedSlider.setMinWidth(10);
//speedSlider.setMaxWidth(双倍最大值);
speedSlider.setMaxWidth(100);
speedSlider.setPrefWidth(70);
speedSlider.setValue(50);
speedSlider.valueProperty().addListener(新的InvalizationListener())
{
公共无效无效(可观察ov){
if(speedSlider.isValueChangeing()| | speedSlider.isPressed()){
双速率=speedSlider.getValue()/10;

if(rate我认为播放速度自然会影响音频输出的音高。但是,如果必须,我认为您可能希望在每个分析样本中降低音高(取决于您的处理)调整速度后,每次都会调整。

@jewelsea你能帮我找到问题的答案吗?不,对不起,我不知道答案。你能给我一些参考资料吗?这个答案没有意义,似乎没有任何方法可以改变音高,所以你将如何补偿。。。