Python的VLC模块不工作,没有标签
问题描述:
我在Python中使用VLC模块来播放一些音乐下载与YouTube到MP3转换器的项目。问题是,我发现这些文件不喜欢合作,python最终会对我产生负面影响。我相信这是因为mp3文件没有标签,所以当模块检查它们并且它们不存在时,它会向我发出错误。这里是我的代码:Python的VLC模块不工作,没有标签
import vlc
import os
import time
def playtrack(fileid, songname):
filename = fileid + ".mp3"
print('Now playing: ' + songname)
music = vlc.MediaPlayer(filename)
music.play()
print(music.get_state())
time.sleep(60)
print("Finished.")
#os.remove(filename)
playtrack("tVj0ZTS4WF4", "foo")
这里是输出“很长......”:
Now playing: foo
State.NothingSpecial
Warning: option --plugin-path no longer exists.
Warning: option --plugin-path no longer exists.
TagLib: MPEG::Header::parse() -- The next frame was not consistent with this frame.
TagLib: MPEG::Header::parse() -- The next frame was not consistent with this frame.
没有比这种方式更多的错误,但StackOverflow上限制了我从把他们所有。无论如何,它们都是一样的。
TagLib: MPEG::Header::parse() -- The next frame was not consistent with this
TagLib: MPEG::Header::parse() -- Invalid MPEG version bits.
TagLib: MPEG::Header::parse() -- Invalid MPEG layer bits.
TagLib: MPEG::Header::parse() -- Invalid MPEG version bits.
TagLib: MPEG::Header::parse() -- Invalid bit rate.
TagLib: MPEG::Header::parse() -- Invalid MPEG version bits.
TagLib: MPEG::Header::parse() -- The next frame was not consistent with this frame.
TagLib: MPEG::Header::parse() -- Invalid bit rate.
TagLib: MPEG::Header::parse() -- Could not read the next frame header.
TagLib: MPEG::Header::parse() -- The next frame was not consistent with this frame.
TagLib: MPEG::Properties::read() -- Could not find a valid first MPEG frame in the stream.
Finished.
Process finished with exit code 0
这里的下载,如果有必要:
import youtube_dl
import os
class InvalidURL(Exception):
pass
class SongExists(Exception):
pass
def download(url):
try:
options = {
'format': 'bestaudio/best',
'extractaudio': True, # only keep the audio
'audioformat': "mp3", # convert to wav
'outtmpl': '%(id)s.mp3', # name the file the ID of the video
'noplaylist': True, # only download single song, not playlist
}
with youtube_dl.YoutubeDL(options) as ydl:
r = ydl.extract_info(url, download=False)
if os.path.isfile(str(r["id"])):
raise SongExists('This song has already been requested.')
print("Downloading" + str(r["title"]))
ydl.download([url])
print("Downloaded" + str(r["title"]))
return r["title"], r["id"]
except youtube_dl.utils.DownloadError:
raise InvalidURL('This URL is invalid.')
if __name__ == "__main__":
download("https://www.youtube.com/watch?v=tVj0ZTS4WF4")
答
我已经试过我的机器上的代码和它的作品。我认为你正在使用过时的版本或过时的库。所以请尝试在下面的代码,并让我知道如果你找出一个更可靠的解决方案....
sudo pip uninstall vlc
sudo pip uninstall python-vlc
sudo pip install python-vlc
我通过使用WAV文件,而不是MP3文件解决了问题。现在都很好,不过谢谢。 –
@GamingWithAltitude欢迎您。 –