如何使用 vlc.py 获取音频流元数据
How to get audiostream metadata using vlc.py
对于一个小项目,我需要从音频流上的歌曲中获取元数据(主要是标题和艺术家),为此我正在使用 vlc python 库。这是我的代码,以比利时广播电台为例:
import vlc
def getData(url):
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new(url)
Media.get_mrl()
player.set_media(Media)
player.play()
return player.audio_get_track_description()
print(getData("http://icecast.vrtcdn.be/mnm-high.mp3"))
但我得到的只是一个空数组:
[]
我从另一个 Whosebug 线程获得了部分代码,但我不完全确定它是如何工作的:
我该如何解决这个问题?
在元信息可用之前,媒体必须 parsed
。
在这些网络广播中,执行此操作的唯一方法似乎是 play
它,然后要检查的元项目是 NowPlaying
。 Title
返回一个通用字符串,类似于 Title 1
.
雪上加霜的是,在 vlc.EventType.MediaMetaChanged
上注册的回调事件似乎没有被激活。
速览如下:
import vlc
import time
def getData(url):
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new(url)
Media.get_mrl()
player.set_media(Media)
player.play()
prev = ""
while True:
time.sleep(1)
m = Media.get_meta(12) # vlc.Meta 12: 'NowPlaying',
if m != prev:
print("Now playing", m)
prev = m
return player.audio_get_track_description()
print(getData("http://icecast.vrtcdn.be/mnm-high.mp3"))
现在,这给出了:
Now playing None
[00007fc830005ab0] prefetch stream error: unimplemented query (264) in control
Now playing JUSTIN BIEBER feat. LUDACRIS - BABY
Now playing LAUV & ANNE-MARIE - FUCK, I'M LONELY
Now playing MODJO - LADY (HEAR ME TONIGHT)
Now playing MILOW - AYO TECHNOLOGY
对于一个小项目,我需要从音频流上的歌曲中获取元数据(主要是标题和艺术家),为此我正在使用 vlc python 库。这是我的代码,以比利时广播电台为例:
import vlc
def getData(url):
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new(url)
Media.get_mrl()
player.set_media(Media)
player.play()
return player.audio_get_track_description()
print(getData("http://icecast.vrtcdn.be/mnm-high.mp3"))
但我得到的只是一个空数组:
[]
我从另一个 Whosebug 线程获得了部分代码,但我不完全确定它是如何工作的:
我该如何解决这个问题?
在元信息可用之前,媒体必须 parsed
。
在这些网络广播中,执行此操作的唯一方法似乎是 play
它,然后要检查的元项目是 NowPlaying
。 Title
返回一个通用字符串,类似于 Title 1
.
雪上加霜的是,在 vlc.EventType.MediaMetaChanged
上注册的回调事件似乎没有被激活。
速览如下:
import vlc
import time
def getData(url):
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new(url)
Media.get_mrl()
player.set_media(Media)
player.play()
prev = ""
while True:
time.sleep(1)
m = Media.get_meta(12) # vlc.Meta 12: 'NowPlaying',
if m != prev:
print("Now playing", m)
prev = m
return player.audio_get_track_description()
print(getData("http://icecast.vrtcdn.be/mnm-high.mp3"))
现在,这给出了:
Now playing None
[00007fc830005ab0] prefetch stream error: unimplemented query (264) in control
Now playing JUSTIN BIEBER feat. LUDACRIS - BABY
Now playing LAUV & ANNE-MARIE - FUCK, I'M LONELY
Now playing MODJO - LADY (HEAR ME TONIGHT)
Now playing MILOW - AYO TECHNOLOGY