Ошибка воспроизведения аудио в JavaFX 8_191 - PullRequest
0 голосов
/ 15 января 2019

Я работал над программой SoundSort , основанной на JavaFX 8, которая отображает и позволяет пользователю воспроизводить аудиоклипы. JavaFX 8_191 (последняя версия Java 8), похоже, содержит ошибку при воспроизведении аудио. Воспроизведение аудио отлично работает в JavaFX 8_131, но в версии 8_191 звук не воспроизводится без ошибок. У кого-нибудь есть обходной путь для JavaFX 8_191? Я понимаю, что переход на JavaFX 11 мог бы решить проблему, но многие библиотеки и т. Д. Все еще основаны на Java 8, поэтому на данный момент гораздо предпочтительнее придерживаться версии 8, однако требование пользователей установить конкретную версию JRE не является идеальным ,

Пример кода ниже демонстрирует проблему. Если запустить с использованием JR 8_131, он работает просто отлично. При запуске в JRE 8_191 воспроизведение звука не происходит. Используемый аудиофайл (горбатый кит) здесь для удобства. Обратите внимание, что аналогичный класс MediaPlayer не работает ни для воспроизведения. Заранее благодарю за любую помощь.

import java.io.File;

import javafx.beans.property.DoubleProperty;
import javafx.scene.media.AudioClip;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

/**
 * Standard audio playing which simply stores a file path to play from. This
 * should be able to play multiple types of audio file.  
 * 
 * @author Jamie Macaulay 
 *
 */
public class StandardAudioPlay{

    /**
     * The audio file. 
     */
    private File audioFile;

    /**
     * The Media player. 
     */
    private AudioClip  mediaPlayer; 

    /**
     * Constructor for standard audio playing. 
     * @param file - the audio fi;le 
     */
    public StandardAudioPlay(File file) {
        this.audioFile=file; 
    }

    public void playClipAudio() {
        System.out.println("Play: " + getMediaPlay().getSource()); 
        getMediaPlay().play();      
    }

    private AudioClip getMediaPlay() {
        if (mediaPlayer==null) {
            mediaPlayer = new AudioClip (audioFile.toURI().toString());
        }
        return mediaPlayer; 
    }


    public void stopClipAudio() {
        if (mediaPlayer!=null) mediaPlayer.stop();
    }

    /**
     * Get the volume property. 
     * @return the volume property
     */
    public DoubleProperty getVolumePropery() {
        return getMediaPlay().volumeProperty(); 
    }

    /**
     * Tests audio playing 
     * @param args
     */
    public static void main(String[] args) {
        File audioFile = new File("Ish_Humpback_whale20180829_231613_092.wav");
        StandardAudioPlay standardAudioPlay = new StandardAudioPlay(audioFile); 
        standardAudioPlay.getMediaPlay().volumeProperty().set(1);
        System.out.println("Play audio: "); 
        standardAudioPlay.playClipAudio();
        try {
            Thread.sleep(3000); // 3 second clip
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Finished audio: "); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...