使用 javax.media.Player 与 javazoom.jl.player.Player 播放无线电流
Playing radiostreams using javax.media.Player vs. javazoom.jl.player.Player
我刚开始使用 Java 播放音频。我已经编写了播放一些无线电流的代码。
我发现有一些像 http://fm939.wnyc.org/wnycfm 这样的流 url。这没有端口号并包含斜线。我只能用 javax.media.Player.
播放这种类型的 url
还有其他流式传输 url 带有端口号且没有斜线。例如,我有一个 url 国家 Public 电台 140.254.23.68:8000。我可以用 javazoom.jl.player.Player 播放这些类型的 url 因为这个播放器需要一个 url 字符串和一个端口号。
谁能告诉我更多关于流的类型以及如何正确使用上述播放器的信息。例如,是否可以使用 javazoom.jl.player.Player 播放流 http://fm939.wnyc.org/wnycfm ?如果是这样,如何?
任何帮助将不胜感激。
附录:
抱歉,我不是说 javazoom Player 接受 url。我正在使用以下代码片段创建一个 javazoom 播放器。从代码中可以看出,我正在使用 SocketFactory createSocket 方法来创建连接。 createSocket 方法采用 url 和端口。我想知道如何像 http://fm939.wnyc.org/wnycfm 一样播放 url,换句话说,没有明确端口号的 url。
查看下面的代码片段-
response = null;
try {
SocketFactory sf = SocketFactory.getDefault();
connection = sf.createSocket(url,port);
request = "GET / HTTP/1.1\n\n";
outputStream = connection.getOutputStream();
if(outputStream!=null) {
outputStream.flush();
byte[] b = null;
try {b = request.getBytes(StandardCharsets.US_ASCII);}
catch(NullPointerException npe) {..}
if(b != null) {
outputStream.write(b);
outputStream.flush();
response = connection.getInputStream();
}
} catch (IOException e) {e.printStackTrace();}
javazoom.jl.player.Player zoomPlayer = null;
if(response!=null) {
try {zoomPlayer = new javazoom.jl.player.Player(response);
} catch (JavaLayerException e) {e.printStackTrace();}
}
return zoomPlayer;
"A URL can optionally specify a "端口"".
所以你可以设置端口。
我没看到 javazoom.jl.player.Player 在哪里使用 url - 可能是更新的版本。
但无论如何请参阅 URL 的文档。其中一位构造者说
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
Creates a URL object from the specified protocol, host, port number, file, and handler.
jmf播放器算比较稳定的。并记录在案。
javazoom.jl.player.Player是一行。
--
事实上,我可以使用常规 javax.sound 程序播放两个流。
--
获取url流的方法是这样的:
String u="http://140.254.23.68:8000";
URL url=new URL(u);
URLConnection uc = new URL(u).openConnection();
InputStream is=(InputStream)uc.getInputStream();
我刚开始使用 Java 播放音频。我已经编写了播放一些无线电流的代码。 我发现有一些像 http://fm939.wnyc.org/wnycfm 这样的流 url。这没有端口号并包含斜线。我只能用 javax.media.Player.
播放这种类型的 url还有其他流式传输 url 带有端口号且没有斜线。例如,我有一个 url 国家 Public 电台 140.254.23.68:8000。我可以用 javazoom.jl.player.Player 播放这些类型的 url 因为这个播放器需要一个 url 字符串和一个端口号。
谁能告诉我更多关于流的类型以及如何正确使用上述播放器的信息。例如,是否可以使用 javazoom.jl.player.Player 播放流 http://fm939.wnyc.org/wnycfm ?如果是这样,如何? 任何帮助将不胜感激。
附录:
抱歉,我不是说 javazoom Player 接受 url。我正在使用以下代码片段创建一个 javazoom 播放器。从代码中可以看出,我正在使用 SocketFactory createSocket 方法来创建连接。 createSocket 方法采用 url 和端口。我想知道如何像 http://fm939.wnyc.org/wnycfm 一样播放 url,换句话说,没有明确端口号的 url。
查看下面的代码片段-
response = null;
try {
SocketFactory sf = SocketFactory.getDefault();
connection = sf.createSocket(url,port);
request = "GET / HTTP/1.1\n\n";
outputStream = connection.getOutputStream();
if(outputStream!=null) {
outputStream.flush();
byte[] b = null;
try {b = request.getBytes(StandardCharsets.US_ASCII);}
catch(NullPointerException npe) {..}
if(b != null) {
outputStream.write(b);
outputStream.flush();
response = connection.getInputStream();
}
} catch (IOException e) {e.printStackTrace();}
javazoom.jl.player.Player zoomPlayer = null;
if(response!=null) {
try {zoomPlayer = new javazoom.jl.player.Player(response);
} catch (JavaLayerException e) {e.printStackTrace();}
}
return zoomPlayer;
"A URL can optionally specify a "端口"".
所以你可以设置端口。
我没看到 javazoom.jl.player.Player 在哪里使用 url - 可能是更新的版本。
但无论如何请参阅 URL 的文档。其中一位构造者说
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
Creates a URL object from the specified protocol, host, port number, file, and handler.
jmf播放器算比较稳定的。并记录在案。
javazoom.jl.player.Player是一行。
--
事实上,我可以使用常规 javax.sound 程序播放两个流。
--
获取url流的方法是这样的:
String u="http://140.254.23.68:8000";
URL url=new URL(u);
URLConnection uc = new URL(u).openConnection();
InputStream is=(InputStream)uc.getInputStream();