首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用yt-dlp DownloadError的Heroku FFMPEG后处理错误

使用yt-dlp DownloadError的Heroku FFMPEG后处理错误
EN

Stack Overflow用户
提问于 2022-02-14 00:47:40
回答 1查看 594关注 0票数 0

我正在建立一个不和谐的音乐机器人,使用FFMPEG下载和播放音乐。由于某种原因,yt似乎无法找到ffmpeg文件,尽管我给出了它的直接路径。当我在我的cpu上运行它时,它工作得非常好,但是它在heroku中不工作。

以下是heroku中的错误:

代码语言:javascript
运行
复制
2022-02-14T00:34:29.047823+00:00 app[worker.1]: During handling of the above exception, another exception occurred:
2022-02-14T00:34:29.047823+00:00 app[worker.1]: 
2022-02-14T00:34:29.047825+00:00 app[worker.1]: Traceback (most recent call last):
2022-02-14T00:34:29.047854+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
2022-02-14T00:34:29.047855+00:00 app[worker.1]:     await coro(*args, **kwargs)
2022-02-14T00:34:29.047856+00:00 app[worker.1]:   File "/app/engine.py", line 97, in on_reaction_add
2022-02-14T00:34:29.047856+00:00 app[worker.1]:     ydl.download([f'{result["link"]}'])
2022-02-14T00:34:29.047863+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3212, in download
2022-02-14T00:34:29.047863+00:00 app[worker.1]:     self.__download_wrapper(self.extract_info)(
2022-02-14T00:34:29.047865+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3185, in wrapper
2022-02-14T00:34:29.047865+00:00 app[worker.1]:     res = func(*args, **kwargs)
2022-02-14T00:34:29.047875+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1372, in extract_info
2022-02-14T00:34:29.047876+00:00 app[worker.1]:     return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
2022-02-14T00:34:29.047877+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1381, in wrapper
2022-02-14T00:34:29.047877+00:00 app[worker.1]:     return func(self, *args, **kwargs)
2022-02-14T00:34:29.047891+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1465, in __extract_info
2022-02-14T00:34:29.047891+00:00 app[worker.1]:     return self.process_ie_result(ie_result, download, extra_info)
2022-02-14T00:34:29.047893+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1517, in process_ie_result
2022-02-14T00:34:29.047894+00:00 app[worker.1]:     ie_result = self.process_video_result(ie_result, download=download)
2022-02-14T00:34:29.047894+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 2607, in process_video_result
2022-02-14T00:34:29.047894+00:00 app[worker.1]:     self.process_info(new_info)
2022-02-14T00:34:29.047896+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3161, in process_info
2022-02-14T00:34:29.047896+00:00 app[worker.1]:     self.report_error('Postprocessing: %s' % str(err))
2022-02-14T00:34:29.047904+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 930, in report_error
2022-02-14T00:34:29.047904+00:00 app[worker.1]:     self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
2022-02-14T00:34:29.047905+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 871, in trouble
2022-02-14T00:34:29.047905+00:00 app[worker.1]:     raise DownloadError(message, exc_info)
2022-02-14T00:34:29.047921+00:00 app[worker.1]: yt_dlp.utils.DownloadError: ERROR: Postprocessing: ffprobe and ffmpeg not found. Please install or provide the path using --ffmpeg-location

这是我的设置::https://i.stack.imgur.com/HKo8L.png

下面是代码:

代码语言:javascript
运行
复制
yt_opts = {
        'format': 'bestaudio/best',
        'ffmpeg_location': './FFMPEG_CONFIG/ffmpeg.exe',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }]
    }
# Getting Song From Thy YOUTUBE
     await channel.send("> Getting Song From Youtube")
     with yt_dlp.YoutubeDL(yt_opts) as ydl:
          ydl.download([f'{result["link"]}'])
EN

Stack Overflow用户

回答已采纳

发布于 2022-02-14 00:57:09

你不能这么做:

代码语言:javascript
运行
复制
'ffmpeg_location': './FFMPEG_CONFIG/ffmpeg.exe',

ffmpeg.exe是一个Windows二进制文件。它不能在Heroku上使用(而且不应该是您的存储库的一部分)。

大多数想在Heroku上使用ffmpeg的用户使用建筑群 (也请参阅多个构建包),例如:

代码语言:javascript
运行
复制
heroku buildpacks:set heroku/python
heroku buildpacks:add --index 1 https://github.com/FFmpeg/FFmpeg.git

然后删除硬编码的ffmpeg_location,提交和重新部署。你的应用程序应该能找到ffmpeg

对于本地开发,您有以下几种选择:

  • 更新您的PATH以确保可以找到ffmpeg.exe
  • 更新代码以设置ffmpeg_location,最好是使用环境变量
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71106114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档