【问题标题】:Retrieve radio song titles from axWindowsMediaPlayer control从 axWindowsMediaPlayer 控件中检索广播歌曲标题
【发布时间】:2020-11-21 13:54:14
【问题描述】:

我正在使用AxWindowsMediaPlayer 控件构建一个在C# 中开发的小型Windows 网络广播。

效果很好。我的StatusChange 事件处理程序提取当前广播电台的名称:

    private void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
    {
        IWMPMedia cm = axWindowsMediaPlayer1.currentMedia;

        if (cm != null)
        {
            title = cm.getItemInfo("Title");
        }
    }

为了美化我的收音机,我想显示当前歌曲的名称和艺术家等附加信息。像mpg123 这样的音频播放器会显示此类StreamTitle 元数据。

例子:

ICY-META: StreamTitle='Der Langmut der SPD mit Sarrazin hat nicht geholfen, Jürgen Zurheide';

假设,一个广播流实际上包含元信息(IcecastSHOUTcast):

有没有办法使用AxWindowsMediaPlayer 获取广播流标题?

我不希望第二个线程消化整个流只是为了提取元数据。

【问题讨论】:

    标签: audio-streaming icecast shoutcast axwindowsmediaplayer webradio


    【解决方案1】:

    似乎没有简单的方法可以从AxWindowsMediaPlayer 中提取SHOUTCast/Icecast 元数据。

    我的解决方案是将AxWindowsMediaPlayer 替换为BASS.NET

    BASS 是一个由BASS.NET 包装的音频库,供.Net 使用。 它提供了一个TAG_INFO 类,涵盖了足够多的标签。

    来自BASS C# 示例NetRadio.cs 的代码sn-p

    if ( BassTags.BASS_TAG_GetFromURL( _Stream, _tagInfo) )
    {
        this.textBoxAlbum.Text = _tagInfo.album;
        this.textBoxArtist.Text = _tagInfo.artist;
        this.textBoxTitle.Text = _tagInfo.title;
        this.textBoxComment.Text = _tagInfo.comment;
        this.textBoxGenre.Text = _tagInfo.genre;
        this.textBoxYear.Text = _tagInfo.year;
    }
    
     
    

    生成的广播:

    另一种方法是下载和评估一些互联网广播流提供商提供的status-json.xsl 文件。但是我还没有尝试过这条路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多