【发布时间】:2023-01-13 19:27:07
【问题描述】:
我正在尝试上传一个 MP3 文件并使用 pydub 播放它:
import pydub
from pydub import AudioSegment
from pydub.playback import play
sound_file = AudioSegment.from_mp3(
"C:/Users/am650/Downloads/radio_static.mp3")
由此,我收到以下错误:
C:\Users\am650\PycharmProjects\pythonProject\venv\Scripts\python.exe C:\Users\am650\PycharmProjects\pythonProject\crtt_control.py
C:\Users\am650\PycharmProjects\pythonProject\venv\Lib\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
C:\Users\am650\PycharmProjects\pythonProject\venv\Lib\site-packages\pydub\utils.py:198: RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work
warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "C:\Users\am650\PycharmProjects\pythonProject\crtt_control.py", line 38, in <module>
blast_file = AudioSegment.from_mp3(
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\am650\PycharmProjects\pythonProject\venv\Lib\site-packages\pydub\audio_segment.py", line 796, in from_mp3
return cls.from_file(file, 'mp3', parameters=parameters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\am650\PycharmProjects\pythonProject\venv\Lib\site-packages\pydub\audio_segment.py", line 728, in from_file
info = mediainfo_json(orig_file, read_ahead_limit=read_ahead_limit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\am650\PycharmProjects\pythonProject\venv\Lib\site-packages\pydub\utils.py", line 274, in mediainfo_json
res = Popen(command, stdin=stdin_parameter, stdout=PIPE, stderr=PIPE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\am650\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1024, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\am650\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1493, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] The system cannot find the file specified
Process finished with exit code 1
我弄乱了正斜杠和反斜杠,我尝试将 r 放在文件调用前面(r"C:/Users/am650/Downloads/radio_static.mp3"),我已将文件移动到不同的位置等。我还尝试了其他文件和文件类型。似乎 python找不到我的任何文件...
我最初是在 Mac 上编写这段代码(它运行良好)并将其移至 PC 上。此错误发生在 PC (Windows 10) 上。我使用的是 Python 3.11.1,我只下载了一个版本的 Python。我之前遇到过类似的问题,Python 无法识别我的任何 pip 安装,但我通过使用 PyPl 直接在 pycharm 中添加包来解决这个问题。如果这两个问题是相关的,我现在会更伤心吗?
还值得注意的是,我使用的学校计算机配置为所有下载自动保存到一个驱动器,而不是本地计算机。我已将 python(和音频文件)移动到计算机驱动器,但也许我在某处遗漏了一个文件?我没有另一台 PC 可以测试这些理论,我的 IT 部门看了看,也无法弄清楚。
我检查了所有关于堆栈溢出的类似问题并尝试了列出的解决方案,但没有一个有效。TYIA
【问题讨论】:
-
欢迎来到堆栈溢出。看起来这段代码的工作原理是尝试在您的计算机上启动另一个程序来播放音频文件。最有可能的是,问题出在路径上到那个可执行文件.您是否希望发生这种情况 - 例如,因为阅读文档了解图书馆的运作方式?如果您希望它运行某个应用程序,那么您能找出路径是什么吗?由于这是 Windows,请检查该路径中是否有任何空格,以及您是否可以重新定位到没有空格的其他路径并让库使用它。
-
在堆栈跟踪中我们看到blast_file = AudioSegment.from_mp3而在代码片段中你展示的是sound_file = AudioSegment.from_mp3
-
无论如何,如果您无法让别人的库代码的“hello world”示例运行,那么这就是作者的技术支持问题;请尝试例如而是项目的问题跟踪器。
-
因此,错误消息似乎是关于在
command中传递给Popen的任何内容,而不是您认为有问题的音频文件。链接的错误报告提到(安装了ffmpeg,然后)将包含ffmpeg.exe二进制文件(如果您不在 Windows 上则没有.exe)的目录添加到您的PATH作为解决方法。