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

M1 Monterey系统下Premiere Pro CEP调用子进程添加媒体路径后返回空缓冲区

问题描述

我开发了一个CEP扩展,用于调用编译后的Python可执行脚本,原本能正常运行并获取缓冲区数据,但在M1芯片的MacOS Monterey系统上,添加媒体路径参数后返回的缓冲区为空。

问题复现特征

  • 仅在CEP框架内调用时触发该问题;直接运行可执行文件、在CEP框架外通过Node.js调用均正常
  • 在2018款MacBook Pro(MacOS Ventura系统)上运行无异常

相关代码

const { execFile, spawn } = require('child_process');
const media = '/Users/Documents/example.mp4';
// 编译后的Python可执行脚本路径
const pymain = '/Users/Documents/__main__/__main__' ; 

var argarray = [media, '--info'];
const child = spawn(pymain, argarray);

var buffy='' ; 

child.stdout.on('data', function (data) {
    buffy += data.toString() ; 
});

child.on('close', function (exitcode) {
    alert(buffy);
});

process.on('exit', function () {
    child.kill()
})
可能的解决方案

1. 检查可执行文件架构兼容性

M1芯片的Mac支持arm64和x86_64双架构,但CEP扩展可能默认以x86_64模式运行,若编译的Python脚本为单一arm64架构,会出现兼容性问题:

  • 执行lipo -info /Users/Documents/__main__/__main__查看可执行文件的架构
  • 若为单一arm64,重新编译脚本为通用二进制(universal binary),或在扩展的manifest.xml中添加CEPSystemCompatibility字段指定运行架构

2. 解决CEP沙箱路径权限限制

MacOS Monterey的CEP扩展有严格的沙箱机制,可能无法直接访问用户Documents目录:

  • 改用CEP提供的CSInterface文件选择API获取媒体路径,该方式会自动申请路径权限
  • 在扩展manifest.xml中配置com.adobe.csxs.allowNativeExecution权限,并确保路径在沙箱允许访问范围内

3. 禁用Python可执行文件的输出缓冲

Python编译后的可执行文件在非交互式环境(如CEP的child_process)下会缓冲标准输出,导致数据无法及时返回:

  • 编译时添加-u参数禁用缓冲(例如pyinstaller -u your_script.py)
  • 或在Python脚本开头添加强制刷新逻辑:
import sys
sys.stdout.flush()

4. 捕获stderr排查错误

当前代码仅监听stdout,Python脚本可能在M1 Monterey下报错但输出到stderr,导致看起来缓冲区为空:

  • 修改代码添加stderr监听,查看具体错误:
child.stderr.on('data', function (data) {
    console.error('Python脚本错误:', data.toString());
});

通过CSInterface.openDebugConsole()打开CEP调试控制台,获取错误信息定位问题

5. 调整spawn的运行环境

CEP的child_process环境与普通Node.js存在差异,尝试指定工作目录和完整环境变量:

const child = spawn(pymain, argarray, {
    cwd: '/Users/Documents/__main__', // 设为可执行文件所在目录
    env: { ...process.env } // 继承完整系统环境变量
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:32:35