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

在Python310环境的Google Cloud Function中找不到ffmpeg的问题

解决Google Cloud Functions Python 3.10环境找不到ffmpeg的问题

问题原因

Google Cloud Functions(GCF)的Python 3.10及更高版本运行时,已不再默认预装ffmpeg,这是官方文档未及时更新导致的版本差异。另外你之前的find命令因参数错误(多余的双引号),也无法正确定位文件。

修复步骤

1. 修正find命令(验证文件是否存在)

你之前的find命令参数中,"-name","\"ffmpeg\""会让系统查找带双引号的文件名,正确写法应该去掉引号:

import subprocess

def find_ffmpeg(request):
  cmd = ['find', '/', '-name', 'ffmpeg']
  ffmpeg = subprocess.Popen(cmd, stdout=subprocess.PIPE)   
  out, err = ffmpeg.communicate()
  return out

如果执行后仍无结果,说明当前环境确实没有预装ffmpeg。

2. 手动添加ffmpeg的三种方法

方法一:使用GCF层(推荐)

层是GCF中共享依赖的最佳方式,避免每次冷启动重复安装:

  • 下载对应架构(GCF默认是x86_64 Linux)的ffmpeg预编译二进制文件
  • 将二进制文件放在bin/目录下,打包成zip包(zip根目录要直接包含bin/,不要嵌套文件夹)
  • 在GCF控制台或通过gcloud命令将该zip上传为层
  • 在你的函数配置中添加该层,部署后ffmpeg会位于/opt/bin/ffmpeg,调用时使用绝对路径即可:
    subprocess.Popen(["/opt/bin/ffmpeg", "-i", "input.mp4", "output.mp4"])
    

方法二:函数启动时自动安装

适合临时测试,但会增加冷启动时间:

import subprocess
import os

def ensure_ffmpeg():
    # 检查ffmpeg是否已安装
    if not os.path.exists("/usr/bin/ffmpeg"):
        # 更新apt源并安装ffmpeg
        subprocess.run(["apt-get", "update"], check=True, capture_output=True)
        subprocess.run(["apt-get", "install", "-y", "ffmpeg"], check=True, capture_output=True)

def your_function(request):
    ensure_ffmpeg()
    # 执行ffmpeg命令
    result = subprocess.run(["/usr/bin/ffmpeg", "-version"], capture_output=True, text=True)
    return result.stdout

方法三:打包ffmpeg二进制到函数代码

将ffmpeg二进制文件直接放在你的函数代码目录中,部署时一起上传:

  • 下载对应架构的ffmpeg二进制,放在函数根目录
  • 给二进制文件添加执行权限:chmod +x ffmpeg
  • 调用时使用相对路径或绝对路径:
    subprocess.Popen(["./ffmpeg", "-i", "input.mp4", "output.mp4"])
    

内容的提问来源于stack exchange,提问作者Valentin Gabriel Raduti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:27:26