QML MediaPlayer不显示mp3流的元数据 [英] QML mediaplayer does not show metaData for mp3 streams

查看:0
本文介绍了QML MediaPlayer不显示mp3流的元数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定以下代码:

Item {
   id: mainPage
   anchors.fill: parent

   function getMetaData(metaData) {
         var text = ""

         text += "title: " + metaData.title + "
"
         text += "subTitle: " + metaData.subTitle + "
"
         text += "author: " + metaData.author + "
"
         text += "comment: " + metaData.comment + "
"
         text += "description: " + metaData.description + "
"
         text += "category: " + metaData.category + "
"
         text += "genre: " + metaData.genre + "
"
         text += "language: " + metaData.language + "
"
         text += "albumTitle: " + metaData.albumTitle + "
"
         text += "albumArtist: " + metaData.albumArtist + "
"
         text += "coverArtUrlSmall: " + metaData.coverArtUrlSmall + "
"
         text += "coverArtUrlLarge: " + metaData.coverArtUrlLarge + "
"
         text += "posterUrl: " + metaData.posterUrl + "
"

      return text
   }

   MediaPlayer {
      id: audioPlayer
      audioRole: MusicRole
      source:      "https://s3-webradio.antenne.de/antenne/stream/mp3?aw_0_1st.playerid=radio.de"
      //source: "https://swr-swr3-live.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3"
      //source: "http://bob.hoerradar.de/radiobob-hartesaite-mp3-hq?sABC=5r65511s%230%23os634o21s23sr4751opp80560p2o2sr6%23fgernzf.enqvbobo.qr&amsparams=playerid:streams.radiobob.de;skey:1583698207"

      onPlaybackStateChanged: {
         console.log("State: " + audioPlayer.status + " Meta data: 
" + getMetaData(audioPlayer.metaData));
      }
   }
}

我试过的音频流可以很好地播放。但是,我无法检索这些流的元数据。例如,标题、艺术家等。所有元字段都将是未定义的。

我尝试了几个流,没有一个流显示任何元数据。不过,我确信流提供了这些信息,因为其他播放器应用程序将显示标题、艺术家等。

我尝试了其他方法(如here),但仍未获得任何元数据。

我正在使用ubuntu Touch,如果这很重要,并且应用程序防护策略["audio", "networking"](也尝试了music_files_read,没有帮助)。

有人能帮我吗?

推荐答案

您忘记了一些小事:

1.audioRole: MediaPlayer.MusicRole

2. mainPage.getMetaData(audioPlayer.metaData));应先调用mainPage id,然后再调用其函数。

以下是正确的代码:

Item {
    id: mainPage
    anchors.fill: parent

    function getMetaData(metaData) {
        var text = ""

        text += "title: " + metaData.title + "
"
        text += "subTitle: " + metaData.subTitle + "
"
        text += "author: " + metaData.author + "
"
        text += "comment: " + metaData.comment + "
"
        text += "description: " + metaData.description + "
"
        text += "category: " + metaData.category + "
"
        text += "genre: " + metaData.genre + "
"
        text += "language: " + metaData.language + "
"
        text += "albumTitle: " + metaData.albumTitle + "
"
        text += "albumArtist: " + metaData.albumArtist + "
"
        text += "coverArtUrlSmall: " + metaData.coverArtUrlSmall + "
"
        text += "coverArtUrlLarge: " + metaData.coverArtUrlLarge + "
"
        text += "posterUrl: " + metaData.posterUrl + "
"

        return text
    }


    MediaPlayer {
        id: audioPlayer
        audioRole: MediaPlayer.MusicRole
        source:      "https://s3-webradio.antenne.de/antenne/stream/mp3?aw_0_1st.playerid=radio.de"
        //source: "https://swr-swr3-live.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3"
        //source: "http://bob.hoerradar.de/radiobob-hartesaite-mp3-hq?sABC=5r65511s%230%23os634o21s23sr4751opp80560p2o2sr6%23fgernzf.enqvbobo.qr&amsparams=playerid:streams.radiobob.de;skey:1583698207"

        metaData.onMetaDataChanged: {
            console.log("State: " + audioPlayer.status + " Meta data: 
" + mainPage.getMetaData(audioPlayer.metaData));
        }
    }



}

这里是输出:

如图所示,它显示genre: Pop

我测试this site中的另一首音乐,并打印另一元数据,未定义表示源没有此元数据。

这篇关于QML MediaPlayer不显示mp3流的元数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆