gpt4 book ai didi

java - Java中从URL播放wav文件时获取 'UnsupportedFileException'

转载 作者:行者123 更新时间:2023-11-30 04:32:43 25 4
gpt4 key购买 nike

我必须从 URL 播放 .wav 文件,但收到 UnsupportedFileException

下面是代码。

public class LoopSound {
public static void main(String[] args) throws Exception {
HostnameVerifier hv = new HostnameVerifier() {

@Override
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName
+ " vs. " + session.getPeerHost());
return true;
}
};
// Now you are telling the JRE to trust any https server.
// If you know the URL that you are connecting to then this should
// not be a problem
try {
trustAllHttpsCertificates();
} catch (Exception e) {
System.out.println("Trustall" + e.getStackTrace());
}
HttpsURLConnection.setDefaultHostnameVerifier(hv);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
URL url = new URL(
"https://74.127.51.154/SiPbx/playback.php?access=subscriber&login=501%40mix&domain=mix.nms.mixnetworks.net&user=501&type=vmail&file=vm-20130109213353000125_netsapiens_com.wav&time=20130110170638&auth=de5dda39287604a88fc4b80c467e161d&submit=PLAY");
Clip clip = AudioSystem.getClip();
AudioInputStream ais = AudioSystem.
getAudioInputStream( url );
clip.open(ais);
clip.loop(0);
javax.swing.JOptionPane.
showMessageDialog(null, "Close to exit!");
}

private static void trustAllHttpsCertificates() throws Exception {

// Create a trust manager that does not validate certificate chains:

javax.net.ssl.TrustManager[] trustAllCerts =

new javax.net.ssl.TrustManager[1];

javax.net.ssl.TrustManager tm = new TempTrustedManager();

trustAllCerts[0] = tm;

javax.net.ssl.SSLContext sc =

javax.net.ssl.SSLContext.getInstance("SSL");

sc.init(null, trustAllCerts, null);

javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(

sc.getSocketFactory());

}
public static class TempTrustedManager implements
javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}

public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}

public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}

public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}

public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
}

下面是异常获取:

Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input URL
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at LoopSound.main(LoopSound.java:35)

当我将上述 URL 放入浏览器的地址栏中时,我可以下载该文件,但无法按编程方式播放。我该如何解决这个问题?

编辑

我将链接更改为

https://74.127.51.154/SiPbx/playback.php?access=subscriber&login=501%40mix&domain=mix.nms.mixnetworks.net&user=501&type=vmail&file=vm-20130109213353000125_netsapiens_com.wav&time=20130110170638&auth=de5dda39287604a88fc4b80c467e161d&submit=PLAY

现在上面的链接被放置在浏览器上下载文件。

但是当我执行程序时,现在出现新的异常。

Exception in thread "main" javax.sound.sampled.LineUnavailableException: line with format ULAW 8000.0 Hz, 8 bit, mono, 1 bytes/frame,  not supported.
at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(Unknown Source)
at com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(Unknown Source)
at com.sun.media.sound.AbstractDataLine.open(Unknown Source)
at com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source)
at com.sun.media.sound.DirectAudioDevice$DirectClip.open(Unknown Source)
at LoopSound.main(LoopSound.java:36)

提前致谢。

最佳答案

WAV是一种容器格式(就像 zip 文件是许多不同文件的容器),因此没有实际的 WAV 音频格式(LPCM 是最常见的)。在这种情况下,您的 WAV 包含一种名为“CCITT u-Law”的格式,该格式并未得到广泛支持(用于 Cisco VoIP 电话)。我还没有看到可以读取它的 Java 库,但也许知道要查找什么会有所帮助。

关于java - Java中从URL播放wav文件时获取 'UnsupportedFileException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265572/

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