从 axWindowsMediaPlayer 控件中检索广播歌曲标题

Retrieve radio song titles from axWindowsMediaPlayer control

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

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

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

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

为了改进我的收音机,我想显示其他信息,例如当前歌曲的名称和艺术家。这样的 StreamTitle meta-data 由 mpg123.

等音频播放器显示

示例:

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

假设一个广播流实际上包括meta-information (Icecast, SHOUTcast):

Is there a way to get hold of radio stream titles using AxWindowsMediaPlayer?

我不喜欢第二个线程消化整个流只是为了提取 meta-data。

似乎没有简单的方法可以提取/Icecast meta-data from AxWindowsMediaPlayer

我的解决办法是替换AxWindowsMediaPlayer by BASS.NET.

BASS is an audio library wrapped by BASS.NET for .Net 用法。 它提供了一个 TAG_INFO class 涵盖了足够多的标签。

来自 BASS C# 示例的代码片段 NetRadio.cs

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 文件。但是我还没有尝试过这条路。