NSTask не удалось 22 прекращения временного процесса какао - PullRequest
1 голос
/ 05 марта 2012

Используя приведенный ниже код, я получаю эту ошибку:

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/

Пожалуйста, помогите решить эту проблему.

1 Ответ

1 голос
/ 05 марта 2012

Вы не предоставляете правильный файл для выполнения;Вы проходите его путь (предположительно).

Возможно, вам нужно что-то вроде:

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

Примечание. Понятно, что ошибка 22 * ​​1009 * является значением errno EINVAL, однако ссылки наэто на exec() manpage или execve() manpage ., поэтому я не знаю, как вы можете определить причину только по коду ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...