You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DigitalOcean部署基于pydub的音频处理应用时遭遇ffprobe找不到的错误求助

在DigitalOcean部署基于pydub的音频处理应用时遭遇ffprobe找不到的错误求助

我之前在部署音频处理应用到DigitalOcean的时候也踩过一模一样的坑,给你几个实用的排查和解决方向:

先还原下你遇到的错误提示,方便对应问题:

warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
Unexpected error: [Errno 2] No such file or directory: 'ffprobe'

1. 先检查二进制文件的执行权限

你把ffmpeg和ffprobe的二进制放到了项目的bin目录,但Linux系统下如果文件没有执行权限,就算路径完全正确,也会报"找不到文件"的错误。你可以登录到DigitalOcean服务器,进入项目根目录后执行下面的命令,给二进制文件加上执行权限:

chmod +x bin/ffmpeg-linux bin/ffprobe-linux

如果是用自动化脚本部署的,记得把这条命令加到部署流程里,确保每次部署后权限都能正确生效。

2. 把相对路径改成绝对路径

你现在用的是相对路径os.path.join("bin", "ffprobe-linux"),但有时候应用的运行工作目录并不是项目根目录,这就会导致相对路径"失效",找不到目标文件。可以改成基于项目根目录的绝对路径,这样不管应用在哪个目录下运行,都能精准定位到二进制文件:

import os
from pydub import AudioSegment
import platform

# 获取项目根目录的绝对路径
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

if platform.system() == "Darwin":
    # Mac本地环境,无需额外设置
    pass
elif platform.system() == "Linux":
    # DigitalOcean服务器环境
    AudioSegment.converter = os.path.join(BASE_DIR, "bin", "ffmpeg-linux")
    AudioSegment.ffprobe = os.path.join(BASE_DIR, "bin", "ffprobe-linux")
else:
    raise EnvironmentError("Unsupported platform. Only macOS and Linux are supported.")

3. 确认二进制文件的架构兼容性

要确保你放在bin目录里的ffmpeg-linux和ffprobe-linux是适配DigitalOcean Droplet架构的。比如如果你的Droplet是x86_64架构,一定要下载对应x86_64的静态编译版本,要是误下成ARM架构的,就算权限和路径都没问题,也会因为无法执行而报类似"找不到文件"的错误。

4. 直接安装系统级的ffmpeg(最省心的方案)

其实完全不用自己携带二进制文件,直接在DigitalOcean服务器上安装系统级的ffmpeg反而更稳定,pydub会自动识别到系统中的ffprobe。执行下面的命令完成安装:

sudo apt-get update && sudo apt-get install -y ffmpeg

安装完成后,你甚至可以删掉代码里手动设置AudioSegment.converter和AudioSegment.ffprobe的部分,pydub会自动找到系统中的工具,省掉很多路径配置的麻烦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:18:09