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

Flatpak安装的PyCharm中subprocess调用FFmpeg报错排查

解决Flatpak版PyCharm中subprocess调用FFmpeg版本不一致导致的WebP输出格式错误

问题场景

我需要在Python中通过subprocess.run执行以下FFmpeg命令,截取视频帧生成WebP预览图:

ffmpeg -ss 00:00:30 -i "/home/exl/—1—ARCHIVE—1—/video/music videos/author --- a2 - name (text).webm" -vf scale=150:-2 -vframes 1 -c:v libwebp -compression_level 6 -quality 100 /home/exl/—1—ARCHIVE—1—/—3—previews—3—/734a8a0bac3a83e0f6c69416a26ec5cd211a6d742f3df63bb72bdbe6431b57c30677bc11551ba4aaaecac15ed2c48de51340a09020b7e9d9479e1e81ff766191.webp

该命令在系统终端中运行完全正常,但在Flatpak安装的PyCharm中执行时,返回无法找到合适的输出格式错误。

排查后发现:

  • 系统终端使用的FFmpeg版本为5.1.1-1ubuntu1
  • PyCharm的subprocess调用的FFmpeg版本为5.0.1
  • 两者执行which ffmpeg均返回/usr/bin/ffmpeg,但实际调用的是不同环境下的二进制文件

原因分析

Flatpak应用运行在沙箱容器中,会自带一套独立的运行环境。即使路径显示为/usr/bin/ffmpeg,PyCharm实际调用的是容器内部的旧版本FFmpeg,而非系统全局的新版本。旧版本FFmpeg对WebP编码的参数支持或格式兼容性存在问题,导致命令执行失败。

解决方案

1. 直接调用系统全局的FFmpeg二进制文件

先在系统终端中获取FFmpeg的真实绝对路径:

realpath /usr/bin/ffmpeg

得到路径后(例如/usr/lib/x86_64-linux-gnu/ffmpeg),在Python代码中用该绝对路径替换ffmpeg命令:

import subprocess

ffmpeg_path = "/usr/lib/x86_64-linux-gnu/ffmpeg"  # 替换为你获取的真实路径
cmd = [
    ffmpeg_path,
    "-ss", "00:00:30",
    "-i", "/home/exl/—1—ARCHIVE—1—/video/music videos/author --- a2 - name (text).webm",
    "-vf", "scale=150:-2",
    "-vframes", "1",
    "-c:v", "libwebp",
    "-compression_level", "6",
    "-quality", "100",
    "/home/exl/—1—ARCHIVE—1—/—3—previews—3—/734a8a0bac3a83e0f6c69416a26ec5cd211a6d742f3df63bb72bdbe6431b57c30677bc11551ba4aaaecac15ed2c48de51340a09020b7e9d9479e1e81ff766191.webp"
]

subprocess.run(cmd, check=True)

如果Flatpak沙箱限制了对系统文件的访问,需要给PyCharm添加文件访问权限:

flatpak override com.jetbrains.PyCharm --filesystem=/usr/lib/x86_64-linux-gnu/ffmpeg

2. 适配旧版本FFmpeg的参数

如果无法调用系统全局FFmpeg,可调整命令参数适配5.0.1版本的FFmpeg:

  • 先在PyCharm的终端中执行ffmpeg -h encoder=libwebp,查看旧版本支持的参数
  • 部分旧版本可能不支持-compression_level,可替换为-q:v参数控制质量,或者去掉不兼容的参数

调整后的示例命令:

ffmpeg -ss 00:00:30 -i "/home/exl/—1—ARCHIVE—1—/video/music videos/author --- a2 - name (text).webm" -vf scale=150:-2 -vframes 1 -c:v libwebp -q:v 100 /home/exl/—1—ARCHIVE—1—/—3—previews—3—/734a8a0bac3a83e0f6c69416a26ec5cd211a6d742f3df63bb72bdbe6431b57c30677bc11551ba4aaaecac15ed2c48de51340a09020b7e9d9479e1e81ff766191.webp

3. 更新Flatpak容器内的FFmpeg版本

如果使用的是PyCharm的官方Flatpak包,可等待官方更新容器内的FFmpeg版本;也可以手动构建包含新版本FFmpeg的自定义Flatpak包,但操作复杂度较高,适合有Flatpak配置经验的用户。

内容的提问来源于stack exchange,提问作者name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:10:24