0

我正在使用AxWindowsMediaPlayer控件来构建一个在C#.

在此处输入图像描述

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

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

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

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

例子:

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

前提是,广播流实际上包含元信息(IcecastSHOUTcast):

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

我不喜欢第二个线程消化整个流只是为了提取元数据的想法。

4

1 回答 1

0

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

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

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

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

于 2020-08-05T21:24:57.847 回答