如何判断VLC MediaListPlayer的进度?

2024-06-26 00:05:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个树莓皮3b,我用它来演奏音乐。当按下一个按钮(GPIO)时,我想播放歌曲列表。我用vlc媒体列表播放器来做这个。我从一个目录中随机抽取N个mp3文件来建立一个媒体列表。在

例如:

i=vlc.Instance()
l=i.media_list_new()
l.insert_media(i.media_new(...)) # this loops and grabs random mp3s
p=i.media_list_player_new()
p.set_media_list(l)
p.play()

另一个GPIO信号将调用p.stop()。那时我想知道的是媒体列表中的哪些歌曲被播放过。这样我就可以跟踪它们,下次按“播放”按钮时不再播放它们,但列表中未播放的曲目仍有资格播放。在

到目前为止,我看不到任何方法可以从媒体列表播放器中获取任何关于它在列表中的项目的信息,也不知道从列表中播放了什么。在

我尝试了另一种方法,手动循环播放一组歌曲,并使用常规播放器(而不是列表播放器),但当我这样做时,我必须执行while True循环,使播放器等待一首歌曲完成,然后再播放下一首。这个循环似乎还因为某种原因阻塞了我的GPIO事件处理程序,而按下STOP按钮却没有被检测到(必须取消脚本才能停止)。在


Tags: 方法目录列表newgpio音乐播放器歌曲
2条回答

事实上,通过使用MediaListPlayer和events来实现这一点。我为MediaListPlayerNextItemSet添加了一个事件处理程序,它调用一个递增计数器的函数,这样我就知道列表中现在播放了多少首歌曲。在

我的建议是:不要使用MediaListPlayer。在

使用MediaListMediaPlayer并监听libvlc_MediaListEndReachedhttps://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html

loop to make the player wait for one song to finish before playing the next one

使用libvlc事件。在

相关问题 更多 >