【问题标题】:Adobe air Native Process only works in the flash environment, but when deployed i get Error #3219Adobe air Native Process 仅适用于 flash 环境,但部署时出现错误 #3219
【发布时间】:2011-07-30 16:34:28
【问题描述】:

我一直在尝试将 ffmpeg 与我在 flash cs5.5 中制作的 air 应用程序一起使用。我有它,所以 ffmpeg.exe 需要位于安装 air 应用程序的目录中(File.applicationDirectory.nativePath)。

由于某种原因,这仅在我通过 flash 开发环境运行程序时才有效。但是当我实际部署应用程序时,我收到错误 #3219:无法启动 NativeProcess。 ffmpeg.exe 位于同一文件夹中。

我实际上不知道它给出的完整信息......不确定当我捕捉到它时会给我那个信息的错误属性是什么。我只知道这是错误 3219。

这会是个人资料问题吗?如果我没有扩展桌面桌面配置文件,我认为我不会收到此错误,我会收到配置文件错误,不是吗?

我也禁用了用户访问控制...我使用的是 Windows 7。

【问题讨论】:

    标签: actionscript process air desktop native


    【解决方案1】:

    所以我是 OP,我刚刚意识到,如果您不通过 exe 安装程序(发布设置中的一个选项)安装 air 应用程序,则无法使用本机进程调用。我一直在使用空气安装程序。

    【讨论】:

    • 我真的很想反对这个,谢谢你的提醒。
    【解决方案2】:

    有一件事要提的是(我相信你已经知道了)NativeProcess 只在它被编译的那个操作系统上工作,所以如果你在一个 windows 盒子上编译你的 NativeProcess 将只在 windows 上工作,而不是在 unix/马克。

    我不知道你如何调用本机进程,但这是我从我的一个工作类中提取的代码 sn-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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2016-12-23
      相关资源
      最近更新 更多