python-vlc 运行 播放多首歌曲后内存不足
python-vlc running out of memory after playing multiple songs
我正在编写一个 python 程序,运行 在 raspberry pi (PI 3 A+) 上,每 10 分钟播放一首歌曲。我正在使用 python-vlc 通过 pi 的耳机插孔播放歌曲。
PlaySong() 是一个函数,每 10 分钟调用一次(成功)。
import vlc
def PlaySong():
p = vlc.MediaPlayer("file:///home/pi/music.mp3")
p.play()
这在前 6 次按预期工作。 6次之后,它不再播放了,而是抛出这个错误:
mmap() failed: cannot allocate memory
即使我将它从每 10 分钟更改为每 2 分钟也会发生这种情况,因此它与时间长短无关。
任务管理器显示 pi 本身仍有大量可用内存。
有什么建议吗?
由于媒体播放器未发布,运行内存不足。解决方法是在p.release()
.
之前加上<a href="http://www.olivieraubert.net/vlc/python-ctypes/doc/vlc.MediaPlayer-class.html#release" rel="nofollow noreferrer">p.release()</a>
after playing the song. This will stop the song immediately, so we will want to add in <a href="https://docs.python.org/3/library/time.html?#time.sleep" rel="nofollow noreferrer">time.sleep()</a>
最终代码如下所示:
import time
import vlc
def PlaySong():
p = vlc.MediaPlayer("file:///home/pi/music.mp3")
p.play()
time.sleep(5) #play for 5 seconds
p.release()
如果你想让 mp3 在歌曲的整个持续时间内播放,你可以,像这样:
import time
import vlc
def PlaySong():
p = vlc.MediaPlayer("file:///home/pi/music.mp3")
p.play()
time.sleep(1) #this is necessary because is_playing() returns false if called right away
while p.is_playing():
time.sleep(1)
p.release()
我正在编写一个 python 程序,运行 在 raspberry pi (PI 3 A+) 上,每 10 分钟播放一首歌曲。我正在使用 python-vlc 通过 pi 的耳机插孔播放歌曲。
PlaySong() 是一个函数,每 10 分钟调用一次(成功)。
import vlc
def PlaySong():
p = vlc.MediaPlayer("file:///home/pi/music.mp3")
p.play()
这在前 6 次按预期工作。 6次之后,它不再播放了,而是抛出这个错误:
mmap() failed: cannot allocate memory
即使我将它从每 10 分钟更改为每 2 分钟也会发生这种情况,因此它与时间长短无关。
任务管理器显示 pi 本身仍有大量可用内存。
有什么建议吗?
由于媒体播放器未发布,运行内存不足。解决方法是在p.release()
.
<a href="http://www.olivieraubert.net/vlc/python-ctypes/doc/vlc.MediaPlayer-class.html#release" rel="nofollow noreferrer">p.release()</a>
after playing the song. This will stop the song immediately, so we will want to add in <a href="https://docs.python.org/3/library/time.html?#time.sleep" rel="nofollow noreferrer">time.sleep()</a>
最终代码如下所示:
import time
import vlc
def PlaySong():
p = vlc.MediaPlayer("file:///home/pi/music.mp3")
p.play()
time.sleep(5) #play for 5 seconds
p.release()
如果你想让 mp3 在歌曲的整个持续时间内播放,你可以
import time
import vlc
def PlaySong():
p = vlc.MediaPlayer("file:///home/pi/music.mp3")
p.play()
time.sleep(1) #this is necessary because is_playing() returns false if called right away
while p.is_playing():
time.sleep(1)
p.release()