Python的VLC模块不无标签工作

问题描述 投票:1回答:1

我使用Python中的VLC模块播放一些音乐与YouTube下载到MP3转换器的一个项目。问题是,我发现,这些文件不喜欢合作和Python结束了我扔红色的负荷。我相信这是因为MP3文件没有标签,所以当他们不存在它们的模块检查它在我抛出一个错误。这里是我的代码:

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.

有WAY比这更多的错误,但堆栈溢出限制我从把他们所有。他们都是一样的,反正。

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")
python mp3 vlc taglib
1个回答
0
投票

我试图在我的机器上的代码和它的作品。我认为你正在使用过时版本或过时的库。因此,尝试在代码下面,让我知道,如果你想出一个更可靠的解决方案....

sudo pip uninstall vlc
sudo pip uninstall python-vlc
sudo pip install python-vlc
© www.soinside.com 2019 - 2024. All rights reserved.