【问题标题】:implement Java fm radio实现 Java 调频收音机
【发布时间】:2012-06-21 08:06:48
【问题描述】:

谁能告诉我如何实现一个独立的java客户端来播放FM收音机。 我在网上搜索找不到任何有用的东西。我们需要实现的所有 API 是什么,一旦实现结束,如何测试它?

【问题讨论】:

  • 你有硬件和驱动让它接收无线电信号吗?
  • 我会说大多数电脑无法接收无线电信号。您必须从互联网上进行流式传输。
  • 注意:对于媒体播放,请考虑使用 JavaFX 而不是 Swing。
  • @Puce 并没有真正需要使用 JavaFX 来播放无线电流 - 检查答案和我添加的示例(使用 JLayer 库)。
  • @MikleGarin 问题中的标签提到了 Swing。

标签: java swing


【解决方案1】:

除了AurA回答...

您可以使用JLayer library轻松阅读和播放大多数网络电台。 该库也是跨平台的,此外,还允许您播放任何 mp3 文件。

这是一个小流播放器示例:

import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

public class RadioConnector
{
    public static void main ( String[] args )
    {
        try
        {
            playRadioStream ( "http://radio.flex.ru:8000/radionami" );
        }
        catch ( IOException e )
        {
            e.printStackTrace ();
        }
        catch ( JavaLayerException e )
        {
            e.printStackTrace ();
        }
    }

    private static void playRadioStream ( String spec ) throws IOException, JavaLayerException
    {
        // Connection
        URLConnection urlConnection = new URL ( spec ).openConnection ();

        // If you have proxy
        //        Properties systemSettings = System.getProperties ();
        //        systemSettings.put ( "proxySet", true );
        //        systemSettings.put ( "http.proxyHost", "host" );
        //        systemSettings.put ( "http.proxyPort", "port" );
        // If you have proxy auth
        //        BASE64Encoder encoder = new BASE64Encoder ();
        //        String encoded = encoder.encode ( ( "login:pass" ).getBytes () );
        //        urlConnection.setRequestProperty ( "Proxy-Authorization", "Basic " + encoded );

        // Connecting
        urlConnection.connect ();

        // Playing
        Player player = new Player ( urlConnection.getInputStream () );
        player.play ();
    }
}

请注意,playRadioStream 方法将处理其调用的线程,直到发生某些事情(例如与无线电服务器的连接中断或您停止流)。

附:是的,我在示例中包含了有效的广播 URL - 您可以尝试启动它,您的计算机将开始播放广播流。

【讨论】:

  • 非常好的答案!!!在你的例子中我怎么能得到更多像这样的 ?我怎样才能检索一些信息,比如收音机正在播放的歌曲名称?我正在用它来实现一个广播应用程序。
  • @howTo 不确定您在<urls> 下的意思是什么 - 无线电流 URL?你可以在互联网上找到它们。关于检索电台/歌曲名称 - 我真的帮不上忙,因为我没有尝试过,但它肯定是可能的。您可以从 JLayer 站点查看各种文档和项目:javazoom.net/javalayer/documents.html
  • 是的,我找到了第一个,谢谢。当你在汽车收音机里听音乐时,它会显示曲目的标题和一些其他信息,例如电台名称。你知道如何检索这个通过连接的信息(不是来自轨道的比特率、频道等。)例如只有轨道名称和广播电台名称......youtube.com/watch?v=vvnBnqdxWmg
【解决方案2】:

您可以使用 Webservices API 访问许多 Radio 网站

我在网上发布最流行的广播 api 的链接。

http://www.last.fm/api/radio

使用 Java Web 服务,您可以轻松地与您的应用程序集成。

【讨论】:

  • 这和调频收音机有什么关系?
  • @maksimov 您可以从该站点流式传输无线电,并查看 URL 建议它类似于 fm ...您无法接收来自 pc 的无线电信号,正如您自己所说的那样。唯一的选择是从互联网上流式传输。
  • @11684 我明白,如果他们播放 FM 的要求可以更改为播放 any 类型的广播,这是一个建议的解决方法。总而言之,这是我们在这里处理的一个研究不足的问题。
  • 该 API 中一个非常重要的部分自己说“注意:此 API 不包括 mp3 播放,它只管理调谐到广播电台和检索播放列表和 mp3 文件的 URL。对于 mp3 解码和播放支持您将需要另一个第三方库,例如 JLayer。”,此引用的链接是 here,在代码示例下方。我自己不知道 API 有多好,因为我自己从未尝试过,尽管 inof 在某种程度上对信息部分有帮助:-)
  • 尽管 OP 从未试图解释他/她到目前为止所尝试过的内容,但可以进一步提供帮助:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多