繁体   English   中英

NSTask失败22终止临时过程可可

[英]NSTask failed 22 terminating temporary process cocoa

使用下面的代码,我收到此错误:

NSTask: Task create for path '/Users/media/Library/Developer/Xcode/DerivedData/Manager-gnixeptcszdoubbnfcncumzypwge/Build/Products/Debug/lib' failed: 22, "Invalid argument".  Terminating temporary process.

我没有得到这背后的问题。

- (void)startProcessingVideo {

     NSLog(@"Processing Video Low Resolution");

    NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
    // NSTimeInterval is defined as double
    NSNumber *timeStampObj = [NSNumber numberWithInt:timeStamp];

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterNoStyle];

    NSString *convertNumber = [formatter stringForObjectValue:timeStampObj];

    NSLog(@"timeStampObj:: %@", convertNumber);

    NSString *fileNameNumber = [convertNumber stringByAppendingString:[self genRandStringLength:8]];

    NSLog(@"fileNameNumber:::: %@", fileNameNumber);

    NSString *aString = [[NSString stringWithFormat:@"%@%@%@", thumbnailDirPath,@"/Mobile" ,fileNameNumber] retain];

    //NSString *string = [aString stringByAppendingString:@"_H"];

    fileNameMP4Mobile = [aString stringByAppendingString:@".mp4"];

    NSLog(@"string:::: %@", aString);

    [lblMessage setStringValue:@"Started!"];
    NSTask *task= [NSTask new];
    [task setLaunchPath:ffmpegPresetLaunchPath];
    [task setArguments:[NSArray arrayWithObjects:
                        @"-y",
                        @"-i",
                        inputFilePath,// @"1.wmv",
                        @"-vcodec",
                        @"libx264",
                        @"-fpre",
                        @"libx264-fast.ffpreset",
                        @"-b",
                        @"500k",
                        @"-s",
                        @"640*480",
                        @"-r",
                        @"30",
                        @"-aspect",
                        @"16:9",
                        @"-ab",
                        @"128k",
                        @"-ac",
                        @"2",
                        @"-ar",
                        @"44100",
                        fileNameMP4Mobile,nil]];
    [task setCurrentDirectoryPath:thumbnailDirPath];

    NSPipe *outputPipe = [NSPipe pipe];
    [task setStandardInput:[NSPipe pipe]];
    [task setStandardOutput:outputPipe];

    [task launch];
    [task waitUntilExit];
    [task release];

    NSData *outputData = [[outputPipe fileHandleForReading] readDataToEndOfFile];
    NSString *outputString = [[[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding] autorelease];
    [lblMessage setStringValue:@"Video Generated!"];

    [self startProcessingVideoHighResolution];
}

ffmpegPresetLaunchPath的值是:

ffmpegPresetLaunchPath = [[NSString stringWithFormat:@"%@%@", currentDir, @"/lib/"] retain];

NSLOG中的值:

ffmpegPresetLaunchPath::: /Users/media/Library/Developer/Xcode/DerivedData/FileManager-gnixeptcszdoubbnfcncumzypwge/Build/Products/Debug/lib/

请帮助解决此问题。

您没有提供正确的文件来执行; 您正在通过它的路径(大概)。

您可能需要类似:

ffmpegPresetLaunchPath = [[NSString stringWithFormat:@"%@%@", currentDir, @"/lib/ffmpeg"] retain];

注意:很明显, 错误22errnoEINVAL ,但是在exec() 联机帮助页execve() 联机帮助页上没有对其进行引用,因此我不知道您应该如何从错误代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM