我无法在Python中访问mp3文件来获取长度

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

我尝试使用 pydub、mutagen 和 eyed3 来尝试访问我使用 pyttsx3 创建的 mp3 文件的长度。然而,我的机器反复遇到类似的问题,告诉我它无法访问 mp3,在我尝试访问它的指定路径中找不到该文件,尽管我确认它当时确实存在它到达有问题的代码行。这是我尝试使用 eyes3:

    original_clip = VideoFileClip(original_video_path)
    voiceoverDirTitle = "VoiceoversTitle"
    filePath = f"{voiceoverDirTitle}/{id}.mp3"
    engine = pyttsx3.init()
    engine.save_to_file(title, filePath)
    engine.runAndWait() 

    script_dir = os.path.dirname(os.path.abspath(__file__))
    voiceoverDirTitle = "VoiceoversTitle"
    filePathAbsolute = os.path.join(script_dir, voiceoverDirTitle, f"{id}.mp3")
    print(filePathAbsolute)

    exists = os.path.isfile(filePathAbsolute)
    print(exists)
    audio = eyed3.load(filePathAbsolute)

直到最后一行代码,一切看起来都很有希望,当它向我抛出此错误消息时:

AttributeError: 'NoneType' object has no attribute 'info'

这是我尝试使用 pydub:

    original_clip = VideoFileClip(original_video_path)
    voiceoverDirTitle = "VoiceoversTitle"
    filePath = f"{voiceoverDirTitle}/{id}.mp3"
    engine = pyttsx3.init()
    engine.save_to_file(title, filePath)
    engine.runAndWait() 

    script_dir = os.path.dirname(os.path.abspath(__file__))
    voiceoverDirTitle = "VoiceoversTitle"
    filePathAbsolute = os.path.join(script_dir, voiceoverDirTitle, f"{id}.mp3")
    print(filePathAbsolute)

    exists = os.path.isfile(filePathAbsolute)
    print(exists)
    audio = AudioSegment.from_mp3(filePathAbsolute)
    duration_seconds = len(audio) / 1000

它返回的错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified

我一开始怀疑这是一个 ffmpeg 问题,但是当我尝试“pip install ffmpeg”时,它说“要求已经满足”,此外,moviepy(我正在使用的库)使用 ffmpeg 进行最终编码,并且我的部分代码似乎工作正常。任何帮助将不胜感激!!

python ffmpeg operating-system mp3
1个回答
0
投票
  1. save_to_file() 需要文件名而不是路径。

    def save_to_file(自身,文本,文件名,名称=无):

    ''' 添加与事件队列对话的话语。

     @param text: Text to sepak
     @type text: unicode
     @param filename: the name of file to save.
     @param name: Name to associate with this utterance. Included in
         notifications about this utterance.
     @type name: str
     '''
    
  2. 如果您确定它也接受路径, 做

    文件路径 = os.path.normpath(文件路径)

在 save_to_file() 中使用它之前

此问题与文件的关系大于与您可能使用的库的关系。

© www.soinside.com 2019 - 2024. All rights reserved.