我一直在尝试使用ffmpeg和我在flash cs5.5中制作的空中应用程序。我有它,所以ffmpeg.exe需要位于安装航空应用程序的目录(File.applicationDirectory.nativePath)。
出于某种原因,这仅在我通过flash dev环境运行程序时才有效。但是当我实际部署应用程序时,我收到错误#3219:无法启动NativeProcess。 ffmpeg.exe位于同一文件夹中。
我实际上并不知道它给出的完整信息......不确定错误的属性会在我抓住它时给我那条消息。我所知道的是它的错误3219。
这会是个人资料问题吗?如果我没有扩展的桌面桌面配置文件,我认为我不会得到这个错误,我会得到一个分析错误不是吗?
我也禁用了用户访问控制......我正在使用Windows 7.
答案 0 :(得分:4)
所以我是OP,我刚刚意识到如果你不通过exe安装程序安装air应用程序就不能使用本机进程调用,这是发布设置中的一个选项。我一直在使用空气安装工具。
答案 1 :(得分:2)
有一件事要提到(我相信你已经知道)NativeProcess只能在编译它的操作系统上运行,所以如果你在windows框上编译你的NativeProcess只能在windows上运行而不能在unix /上运行MAC。
我不知道你是如何调用本机进程的,但这里是我提取的一个工作类的代码片段,也许将它与你的aproach进行比较它会给你一些提示来找到问题:)< / p>
import flash.desktop.*;
import flash.errors.*;
import flash.events.*;
import flash.filesystem.*;
public function execute():void
{
var executablePath:String = "C:\ffmpeg.exe";
var parametersString:String = "-i input.avi -b 64k output.avi";
if(NativeProcess.isSupported) {
var args:Vector.<String> = new Vector.<String>();
var file:File = new File(String(executablePath));
var parameters:Array;
parameters = parametersString.split(" ");
for each ( var parameter:String in parameters ) {
args.push(parameter);
}
}
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = args;
startExecution(nativeProcessStartupInfo);
}
private function startExecution(nativeProcessStartupInfo:NativeProcessStartupInfo):void
{
var nativeProcess:NativeProcess = new NativeProcess();
nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, onExitError);
var msg:String = "";
try {
nativeProcess.start(nativeProcessStartupInfo);
trace("Trying to start process");
} catch (error:IllegalOperationError) {
trace("Illegal Operation: "+error.toString());
} catch (error:ArgumentError) {
trace("Argument Error: "+error.toString());
} catch (error:Error) {
trace("Error: "+error.toString());
}
if (nativeProcess.running) {
trace("Native Process Support");
}
}
public function onExitError(event:NativeProcessExitEvent):void
{
trace("Native Process Exit code: "+event.exitCode);
}